diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2017-01-24 09:56:37 +1000 |
---|---|---|
committer | Pekka Paalanen <pekka.paalanen@collabora.co.uk> | 2017-01-24 11:58:42 +0200 |
commit | 6c481003a2e971c59d3e2fc758d50bb4d623f2bd (patch) | |
tree | 842a04aea7c25d8b6d92caa51eaaf5f2004ffd2a | |
parent | 493eda337ae7cc5530c23833f91f1738690d7ba3 (diff) |
scanner: add helper function to convert "since" to a version
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>
-rw-r--r-- | src/scanner.c | 33 |
1 files changed, 22 insertions, 11 deletions
diff --git a/src/scanner.c b/src/scanner.c index a239c71..5d66fa4 100644 --- a/src/scanner.c +++ b/src/scanner.c @@ -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"); |