X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=tests%2Ftest-json.c;h=c7c01c8e874ef7051b2c6dab665af45a52206ef7;hb=refs%2Fheads%2Fhotfix;hp=bb9fadb0641231d34034a346a8e5d87aff9b9220;hpb=f38b84ea2b6b61d309c604faedd41ab3b0fcf16b;p=sliver-openvswitch.git diff --git a/tests/test-json.c b/tests/test-json.c index bb9fadb06..c7c01c8e8 100644 --- a/tests/test-json.c +++ b/tests/test-json.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009 Nicira Networks. + * Copyright (c) 2009, 2010 Nicira, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -67,23 +67,17 @@ refill(FILE *file, void *buffer, size_t buffer_size, size_t *n, size_t *used) } static bool -parse_multiple(const char *input_file) +parse_multiple(FILE *stream) { struct json_parser *parser; char buffer[BUFSIZ]; size_t n, used; - FILE *file; bool ok; - file = fopen(input_file, "r"); - if (!file) { - ovs_fatal(errno, "Cannot open \"%s\"", input_file); - } - parser = NULL; n = used = 0; ok = true; - while (used < n || refill(file, buffer, sizeof buffer, &n, &used)) { + while (used < n || refill(stream, buffer, sizeof buffer, &n, &used)) { if (!parser && isspace((unsigned char) buffer[used])) { /* Skip white space. */ used++; @@ -92,7 +86,7 @@ parse_multiple(const char *input_file) parser = json_parser_create(0); } - used = n - json_parser_feed(parser, &buffer[used], n - used); + used += json_parser_feed(parser, &buffer[used], n - used); if (used < n) { if (!print_and_free_json(json_parser_finish(parser))) { ok = false; @@ -113,6 +107,7 @@ int main(int argc, char *argv[]) { const char *input_file; + FILE *stream; bool ok; set_program_name(argv[0]); @@ -146,15 +141,18 @@ main(int argc, char *argv[]) } input_file = argv[optind]; - if (!strcmp(input_file, "-")) { - input_file = "/dev/stdin"; + stream = !strcmp(input_file, "-") ? stdin : fopen(input_file, "r"); + if (!stream) { + ovs_fatal(errno, "Cannot open \"%s\"", input_file); } if (multiple) { - ok = parse_multiple(input_file); + ok = parse_multiple(stream); } else { - ok = print_and_free_json(json_from_file(input_file)); + ok = print_and_free_json(json_from_stream(stream)); } + fclose(stream); + return !ok; }