/* * Display directory contents */ #include <stdlib.h> #include <stdio.h> #include <console.h> #include <string.h> #include <com32.h> #include <zzjson/zzjson.h> #include <stdarg.h> static void myerror(void *ehandle, const char *format, ...) { va_list ap; fprintf(ehandle, "error: "); va_start(ap, format); vfprintf(ehandle, format, ap); va_end(ap); fputc('\n', ehandle); } int main(int argc, char *argv[]) { #if 0 /* this hangs! */ openconsole(&dev_rawcon_r, &dev_stdcon_w); #else /* this works */ openconsole(&dev_rawcon_r, &dev_ansiserial_w); #endif (void) argc; (void) argv; ZZJSON *tmp; ZZJSON_CONFIG config = { ZZJSON_VERY_STRICT, NULL, (int(*)(void*)) fgetc, NULL, malloc, calloc, free, realloc, stderr, myerror, stdout, (int(*)(void*,const char*,...)) fprintf, (int(*)(int,void*)) fputc }; do { ZZJSON *tmp2; tmp = zzjson_create_array(&config, zzjson_create_number_d(&config, 3.14), zzjson_create_number_i(&config, 1234LL), zzjson_create_number_i(&config, -4321LL), zzjson_create_true(&config), zzjson_create_false(&config), zzjson_create_null(&config), zzjson_create_string(&config, "hello, world"), zzjson_create_object(&config, "picard", zzjson_create_string(&config, "jean-luc"), "riker", zzjson_create_string(&config, "william t."), NULL), zzjson_create_object(&config, NULL), zzjson_create_array(&config, NULL), NULL ); if (!tmp) { fprintf(stderr, "error during creation of json tree\n"); break; } tmp2 = zzjson_array_prepend(&config, tmp, zzjson_create_string(&config, "prepended string")); if (!tmp2) { fprintf(stderr, "error during prepend\n"); break; } tmp = tmp2; tmp2 = zzjson_array_append(&config, tmp, zzjson_create_string(&config, "appended string (slow)")); if (!tmp2) { fprintf(stderr, "error during append\n"); break; } tmp = tmp2; zzjson_print(&config, tmp); } while(0); if (tmp) zzjson_free(&config, tmp); { tmp = zzjson_create_array(&config, NULL); /* empty array */ tmp = zzjson_array_prepend(&config, tmp, zzjson_create_true(&config)); zzjson_print(&config, tmp); zzjson_free(&config, tmp); } { tmp = zzjson_create_object(&config, NULL); /* empty object */ tmp = zzjson_object_prepend(&config, tmp, "hello", zzjson_create_string(&config, "world")); tmp = zzjson_object_append(&config, tmp, "goodbye", zzjson_create_string(&config, "cruel world")); zzjson_print(&config, tmp); zzjson_free(&config, tmp); } return 0; }