summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2017-01-24 09:56:37 +1000
committerPekka Paalanen <pekka.paalanen@collabora.co.uk>2017-01-24 11:58:42 +0200
commit6c481003a2e971c59d3e2fc758d50bb4d623f2bd (patch)
tree842a04aea7c25d8b6d92caa51eaaf5f2004ffd2a
parent493eda337ae7cc5530c23833f91f1738690d7ba3 (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.c33
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");