diff --git a/protocol/wayland.dtd b/protocol/wayland.dtd index ae8340d6..7e54b0f9 100644 --- a/protocol/wayland.dtd +++ b/protocol/wayland.dtd @@ -25,6 +25,7 @@ + diff --git a/protocol/wayland.xml b/protocol/wayland.xml index 513b8fd8..0e10f3ec 100644 --- a/protocol/wayland.xml +++ b/protocol/wayland.xml @@ -1117,7 +1117,7 @@ or drags initiated with other buttons than BTN_LEFT to specific actions (e.g. "ask"). - + @@ -1205,7 +1205,7 @@ use this information to adapt its behavior, e.g. choose an appropriate cursor image. - + diff --git a/src/scanner.c b/src/scanner.c index cd5f7fea..2e5cfa87 100644 --- a/src/scanner.c +++ b/src/scanner.c @@ -738,6 +738,7 @@ start_element(void *data, const char *element_name, const char **atts) const char *bitfield = NULL; const char *frozen = NULL; int i, version = 0; + bool valid_zero = false; ctx->loc.line_number = XML_GetCurrentLineNumber(ctx->parser); for (i = 0; atts[i]; i += 2) { @@ -762,6 +763,14 @@ start_element(void *data, const char *element_name, const char **atts) deprecated_since = atts[i + 1]; if (strcmp(atts[i], "allow-null") == 0) allow_null = atts[i + 1]; + if (strcmp(atts[i], "valid-zero") == 0) { + if (strcmp(atts[i + 1], "true") == 0) + valid_zero = true; + else + fail(&ctx->loc, + "Invalid value for valid-zero: %s", + atts[i + 1]); + } if (strcmp(atts[i], "enum") == 0) enumeration_name = atts[i + 1]; if (strcmp(atts[i], "bitfield") == 0) @@ -931,6 +940,9 @@ start_element(void *data, const char *element_name, const char **atts) version, entry->since); entry->deprecated_since = version; + if (ctx->enumeration->bitfield && !valid_zero && strcmp(entry->value, "0") == 0) + warn(&ctx->loc, "value 0 used in a bitfield entry"); + if (summary) entry->summary = xstrdup(summary); else