* Enhance wayland-scanner so it can use files for input and output Signed-off-by: Jussi Pakkanen <jpakk...@gmail.com>
src/scanner.c | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-)
diff --git a/src/scanner.c b/src/scanner.c index 1f1e59a..809a339 100644 --- a/src/scanner.c +++ b/src/scanner.c @@ -28,6 +28,8 @@ #include <errno.h> #include <ctype.h> #include <expat.h> +#include <unistd.h> +#include <fcntl.h> #include "wayland-util.h" @@ -39,11 +41,12 @@ enum side { static int usage(int ret) { - fprintf(stderr, "usage: ./scanner [client-header|server-header|code]\n"); + fprintf(stderr, "usage: ./scanner [client-header|server-header|code]" + " [input_file output_file]\n"); fprintf(stderr, "\n"); fprintf(stderr, "Converts XML protocol descriptions supplied on " - "stdin to client headers,\n" - "server headers, or protocol marshalling code.\n"); + "stdin or input file to client\n" + "headers, server headers, or protocol marshalling code.\n"); exit(ret); } @@ -1252,6 +1255,7 @@ int main(int argc, char *argv[]) { struct parse_context ctx; struct protocol protocol; + FILE *input = stdin; int len; void *buf; enum { @@ -1260,7 +1264,7 @@ int main(int argc, char *argv[]) CODE, } mode; - if (argc != 2) + if (argc != 2 && argc != 4) usage(EXIT_FAILURE); else if (strcmp(argv[1], "help") == 0 || strcmp(argv[1], "--help") == 0) usage(EXIT_SUCCESS); @@ -1273,6 +1277,16 @@ int main(int argc, char *argv[]) else usage(EXIT_FAILURE); + if(argc == 4) { + int outfd; + input = fopen(argv[2], "r"); + outfd = open(argv[3], O_WRONLY | O_CREAT | O_TRUNC, + S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | + S_IROTH); + dup2(outfd, STDOUT_FILENO); + close(outfd); + } + wl_list_init(&protocol.interface_list); protocol.type_index = 0; protocol.null_run_length = 0; @@ -1293,7 +1307,7 @@ int main(int argc, char *argv[]) do { buf = XML_GetBuffer(ctx.parser, XML_BUFFER_SIZE); - len = fread(buf, 1, XML_BUFFER_SIZE, stdin); + len = fread(buf, 1, XML_BUFFER_SIZE, input); if (len < 0) { fprintf(stderr, "fread: %m\n"); exit(EXIT_FAILURE); -- 2.1.4
_______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel