/* This file is part of libpsyc. Copyright (C) 2011,2012 Carlo v. Loesch, Gabor X Toth, Mathias L. Baumann, and other contributing authors. libpsyc is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. As a special exception, libpsyc is distributed with additional permissions to link libpsyc libraries with non-AGPL works. libpsyc is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License and the linking exception along with libpsyc in a COPYING file. */ #include #include #include #include #include #include #include #include #include #include #include #include "test.c" // cmd line args char *filename, *port = "4442"; uint8_t verbose, stats; uint8_t no_render, quiet, progress; size_t count = 1, recv_buf_size; int exit_code; JsonParser *parser; JsonGenerator *generator; void test_init (int i) { g_type_init(); parser = json_parser_new(); generator = json_generator_new(); } int test_input (int i, char *recvbuf, size_t nbytes) { JsonNode *root; GError *error = NULL; char *str; size_t len; int r, ret; ret = json_parser_load_from_data(parser, recvbuf, nbytes, &error); if (!ret) { printf("Parse error\n"); exit(1); } root = json_parser_get_root(parser); if (!no_render) { json_generator_set_root(generator, root); str = json_generator_to_data(generator, &len);; if (!quiet) { if (filename) { r = write(1, str, len); r = write(1, "\n", 1); } else { send(i, str, len, 0); send(i, "\n", 1, 0); } } } if (verbose) printf("# Done parsing.\n"); else if (progress) r = write(1, ".", 1); return ret; } int main (int argc, char **argv) { int c; while ((c = getopt (argc, argv, "f:p:b:c:nqsvPh")) != -1) { switch (c) { CASE_f CASE_p CASE_b CASE_c CASE_n CASE_q CASE_s CASE_v CASE_P case 'h': printf(HELP_FILE("test_json_glib", "mnqSsvP") HELP_PORT("test_json_glib", "nqsvP") HELP_f HELP_p HELP_b HELP_c HELP_m HELP_n HELP_q HELP_S HELP_s HELP_v HELP_P HELP_h, port, RECV_BUF_SIZE); exit(0); case '?': exit(-1); default: abort(); } } if (filename) test_file(filename, count, recv_buf_size); else test_server(port, count, recv_buf_size); return exit_code; }