scanner: add helper function to convert "since" to a version
authorPeter Hutterer <peter.hutterer@who-t.net>
Mon, 23 Jan 2017 23:56:37 +0000 (09:56 +1000)
committerPekka Paalanen <pekka.paalanen@collabora.co.uk>
Tue, 24 Jan 2017 09:58:42 +0000 (11:58 +0200)
Same code we already had, just moved into a helper function

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Yong Bakos <ybakos@humanoriented.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
src/scanner.c

index a239c71..5d66fa4 100644 (file)
@@ -609,6 +609,27 @@ strtouint(const char *str)
        return (int)ret;
 }
 
+static int
+version_from_since(struct parse_context *ctx, const char *since)
+{
+       int version;
+
+       if (since != NULL) {
+               version = strtouint(since);
+               if (version == -1) {
+                       fail(&ctx->loc, "invalid integer (%s)\n", since);
+               } else if (version > ctx->interface->version) {
+                       fail(&ctx->loc, "since (%u) larger than version (%u)\n",
+                            version, ctx->interface->version);
+               }
+       } else {
+               version = 1;
+       }
+
+
+       return version;
+}
+
 static void
 start_element(void *data, const char *element_name, const char **atts)
 {
@@ -694,17 +715,7 @@ start_element(void *data, const char *element_name, const char **atts)
                if (type != NULL && strcmp(type, "destructor") == 0)
                        message->destructor = 1;
 
-               if (since != NULL) {
-                       version = strtouint(since);
-                       if (version == -1) {
-                               fail(&ctx->loc, "invalid integer (%s)\n", since);
-                       } else if (version > ctx->interface->version) {
-                               fail(&ctx->loc, "since (%u) larger than version (%u)\n",
-                                    version, ctx->interface->version);
-                       }
-               } else {
-                       version = 1;
-               }
+               version = version_from_since(ctx, since);
 
                if (version < ctx->interface->since)
                        warn(&ctx->loc, "since version not increasing\n");