aboutsummaryrefslogtreecommitdiffstats
path: root/src/scanner.c
diff options
context:
space:
mode:
authorJonas Ådahl <jadahl@gmail.com>2017-10-11 17:31:33 +0800
committerDaniel Stone <daniels@collabora.com>2017-12-04 22:38:56 +0000
commit8d4250ab5e2cf091edf56085def9eaa73752aa9c (patch)
treec576e1f68f3d4c50c0d314e5725980f3b40ab005 /src/scanner.c
parentconnection: Use wl_buffer_size() for all buffer size calculations (diff)
downloadwayland-8d4250ab5e2cf091edf56085def9eaa73752aa9c.tar
wayland-8d4250ab5e2cf091edf56085def9eaa73752aa9c.tar.gz
wayland-8d4250ab5e2cf091edf56085def9eaa73752aa9c.tar.bz2
wayland-8d4250ab5e2cf091edf56085def9eaa73752aa9c.tar.lz
wayland-8d4250ab5e2cf091edf56085def9eaa73752aa9c.tar.xz
wayland-8d4250ab5e2cf091edf56085def9eaa73752aa9c.tar.zst
wayland-8d4250ab5e2cf091edf56085def9eaa73752aa9c.zip
scanner: Add --strict flag
Add a --strict flag for making wayland-scanner fail if the DTD verification fails. This is useful for testing, so that a test case can fail a scan when the protocol doesn't comply with the DTD. Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Diffstat (limited to 'src/scanner.c')
-rw-r--r--src/scanner.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/scanner.c b/src/scanner.c
index c345ed6..1308fc7 100644
--- a/src/scanner.c
+++ b/src/scanner.c
@@ -72,7 +72,9 @@ usage(int ret)
" the scanner was built against.\n"
" -c, --include-core-only include the core version of the headers,\n"
" that is e.g. wayland-client-core.h instead\n"
- " of wayland-client.h.\n");
+ " of wayland-client.h.\n"
+ " -s, --strict exit immediately with an error if DTD\n"
+ " verification fails.\n");
exit(ret);
}
@@ -1801,6 +1803,7 @@ int main(int argc, char *argv[])
bool help = false;
bool core_headers = false;
bool version = false;
+ bool strict = false;
bool fail = false;
int opt;
enum {
@@ -1813,11 +1816,12 @@ int main(int argc, char *argv[])
{ "help", no_argument, NULL, 'h' },
{ "version", no_argument, NULL, 'v' },
{ "include-core-only", no_argument, NULL, 'c' },
+ { "strict", no_argument, NULL, 's' },
{ 0, 0, NULL, 0 }
};
while (1) {
- opt = getopt_long(argc, argv, "hvc", options, NULL);
+ opt = getopt_long(argc, argv, "hvcs", options, NULL);
if (opt == -1)
break;
@@ -1832,6 +1836,9 @@ int main(int argc, char *argv[])
case 'c':
core_headers = true;
break;
+ case 's':
+ strict = true;
+ break;
default:
fail = true;
break;
@@ -1894,6 +1901,10 @@ int main(int argc, char *argv[])
"* WARNING: XML failed validation against built-in DTD *\n"
"* *\n"
"*******************************************************\n");
+ if (strict) {
+ fclose(input);
+ exit(EXIT_FAILURE);
+ }
}
/* create XML parser */