diff options
Diffstat (limited to 'contrib/libucl/utils/objdump.c')
-rw-r--r-- | contrib/libucl/utils/objdump.c | 185 |
1 files changed, 0 insertions, 185 deletions
diff --git a/contrib/libucl/utils/objdump.c b/contrib/libucl/utils/objdump.c deleted file mode 100644 index 416eca7c87e0..000000000000 --- a/contrib/libucl/utils/objdump.c +++ /dev/null @@ -1,185 +0,0 @@ -/* Copyright (c) 2013, Dmitriy V. Reshetnikov - * Copyright (c) 2013, Vsevolod Stakhov - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#if defined(_MSC_VER) - #include <BaseTsd.h> - - typedef SSIZE_T ssize_t; -#endif - -#include "ucl.h" - -void -ucl_obj_dump (const ucl_object_t *obj, unsigned int shift) -{ - int num = shift * 4 + 5; - char *pre = (char *) malloc (num * sizeof(char)); - const ucl_object_t *cur, *tmp; - ucl_object_iter_t it = NULL, it_obj = NULL; - - pre[--num] = 0x00; - while (num--) - pre[num] = 0x20; - - tmp = obj; - - while ((obj = ucl_object_iterate (tmp, &it, false))) { - printf ("%sucl object address: %p\n", pre + 4, obj); - if (obj->key != NULL) { - printf ("%skey: \"%s\"\n", pre, ucl_object_key (obj)); - } - printf ("%sref: %u\n", pre, obj->ref); - printf ("%slen: %u\n", pre, obj->len); - printf ("%sprev: %p\n", pre, obj->prev); - printf ("%snext: %p\n", pre, obj->next); - if (obj->type == UCL_OBJECT) { - printf ("%stype: UCL_OBJECT\n", pre); - printf ("%svalue: %p\n", pre, obj->value.ov); - it_obj = NULL; - while ((cur = ucl_object_iterate (obj, &it_obj, true))) { - ucl_obj_dump (cur, shift + 2); - } - } - else if (obj->type == UCL_ARRAY) { - printf ("%stype: UCL_ARRAY\n", pre); - printf ("%svalue: %p\n", pre, obj->value.av); - it_obj = NULL; - while ((cur = ucl_object_iterate (obj, &it_obj, true))) { - ucl_obj_dump (cur, shift + 2); - } - } - else if (obj->type == UCL_INT) { - printf ("%stype: UCL_INT\n", pre); - printf ("%svalue: %jd\n", pre, (intmax_t)ucl_object_toint (obj)); - } - else if (obj->type == UCL_FLOAT) { - printf ("%stype: UCL_FLOAT\n", pre); - printf ("%svalue: %f\n", pre, ucl_object_todouble (obj)); - } - else if (obj->type == UCL_STRING) { - printf ("%stype: UCL_STRING\n", pre); - printf ("%svalue: \"%s\"\n", pre, ucl_object_tostring (obj)); - } - else if (obj->type == UCL_BOOLEAN) { - printf ("%stype: UCL_BOOLEAN\n", pre); - printf ("%svalue: %s\n", pre, ucl_object_tostring_forced (obj)); - } - else if (obj->type == UCL_TIME) { - printf ("%stype: UCL_TIME\n", pre); - printf ("%svalue: %f\n", pre, ucl_object_todouble (obj)); - } - else if (obj->type == UCL_USERDATA) { - printf ("%stype: UCL_USERDATA\n", pre); - printf ("%svalue: %p\n", pre, obj->value.ud); - } - } - - free (pre); -} - -int -main(int argc, char **argv) -{ - const char *fn = NULL; - unsigned char *inbuf; - struct ucl_parser *parser; - int k, ret = 0; - ssize_t bufsize, r = 0; - ucl_object_t *obj = NULL; - const ucl_object_t *par; - FILE *in; - - if (argc > 1) { - fn = argv[1]; - } - - if (fn != NULL) { - in = fopen (fn, "r"); - if (in == NULL) { - exit (EXIT_FAILURE); - } - } - else { - in = stdin; - } - - parser = ucl_parser_new (0); - inbuf = malloc (BUFSIZ); - bufsize = BUFSIZ; - r = 0; - - while (!feof (in) && !ferror (in)) { - if (r == bufsize) { - inbuf = realloc (inbuf, bufsize * 2); - bufsize *= 2; - if (inbuf == NULL) { - perror ("realloc"); - exit (EXIT_FAILURE); - } - } - r += fread (inbuf + r, 1, bufsize - r, in); - } - - if (ferror (in)) { - fprintf (stderr, "Failed to read the input file.\n"); - exit (EXIT_FAILURE); - } - - ucl_parser_add_chunk (parser, inbuf, r); - fclose (in); - if (ucl_parser_get_error(parser)) { - printf ("Error occurred: %s\n", ucl_parser_get_error(parser)); - ret = 1; - goto end; - } - - obj = ucl_parser_get_object (parser); - if (ucl_parser_get_error (parser)) { - printf ("Error occurred: %s\n", ucl_parser_get_error(parser)); - ret = 1; - goto end; - } - - if (argc > 2) { - for (k = 2; k < argc; k++) { - printf ("search for \"%s\"... ", argv[k]); - par = ucl_object_lookup (obj, argv[k]); - printf ("%sfound\n", (par == NULL )?"not ":""); - ucl_obj_dump (par, 0); - } - } - else { - ucl_obj_dump (obj, 0); - } - -end: - if (parser != NULL) { - ucl_parser_free (parser); - } - if (obj != NULL) { - ucl_object_unref (obj); - } - - return ret; -} |