From 6c481003a2e971c59d3e2fc758d50bb4d623f2bd Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Tue, 24 Jan 2017 09:56:37 +1000 Subject: 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 Reviewed-by: Yong Bakos Reviewed-by: Daniel Stone Reviewed-by: Pekka Paalanen --- src/scanner.c | 33 ++++++++++++++++++++++----------- 1 file 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"); -- cgit v1.2.3