diff options
author | Dario Lombardo <lomato@gmail.com> | 2018-12-25 23:19:46 +0100 |
---|---|---|
committer | Dario Lombardo <lomato@gmail.com> | 2018-12-27 20:19:38 +0000 |
commit | e830182d9e37840c066e16f93ecea278ff5adce7 (patch) | |
tree | d84f91bf4e92c7412e32f947982116586a4caf1e | |
parent | c9cfae7fecd4bc21b8b4f48328d08e104d47dd52 (diff) |
json_dumper: add json_dumper_value_va_list().
Change-Id: I8effb701b505e5ce0c06be42ab524c458e1839ce
Reviewed-on: https://code.wireshark.org/review/31207
Reviewed-by: Peter Wu <peter@lekensteyn.nl>
Petri-Dish: Peter Wu <peter@lekensteyn.nl>
Tested-by: Petri Dish Buildbot
Reviewed-by: Dario Lombardo <lomato@gmail.com>
-rw-r--r-- | debian/libwsutil0.symbols | 1 | ||||
-rw-r--r-- | wsutil/json_dumper.c | 15 | ||||
-rw-r--r-- | wsutil/json_dumper.h | 8 |
3 files changed, 20 insertions, 4 deletions
diff --git a/debian/libwsutil0.symbols b/debian/libwsutil0.symbols index 6146492468..427d0644f7 100644 --- a/debian/libwsutil0.symbols +++ b/debian/libwsutil0.symbols @@ -111,6 +111,7 @@ libwsutil.so.0 libwsutil0 #MINVER# json_dumper_set_member_name@Base 2.9.0 json_dumper_value_anyf@Base 2.9.0 json_dumper_value_string@Base 2.9.0 + json_dumper_value_va_list@Base 2.9.1 json_dumper_write_base64@Base 2.9.1 json_parse@Base 2.9.0 json_validate@Base 2.9.0 diff --git a/wsutil/json_dumper.c b/wsutil/json_dumper.c index 5162b6b8c9..43db64ec64 100644 --- a/wsutil/json_dumper.c +++ b/wsutil/json_dumper.c @@ -306,21 +306,28 @@ json_dumper_value_string(json_dumper *dumper, const char *value) } void -json_dumper_value_anyf(json_dumper *dumper, const char *format, ...) +json_dumper_value_va_list(json_dumper *dumper, const char *format, va_list ap) { - va_list ap; if (!json_dumper_check_state(dumper, JSON_DUMPER_SET_VALUE, JSON_DUMPER_TYPE_VALUE)) { return; } prepare_token(dumper); - va_start(ap, format); vfprintf(dumper->output_file, format, ap); - va_end(ap); dumper->state[dumper->current_depth] = JSON_DUMPER_TYPE_VALUE; } +void +json_dumper_value_anyf(json_dumper *dumper, const char *format, ...) +{ + va_list ap; + + va_start(ap, format); + json_dumper_value_va_list(dumper, format, ap); + va_end(ap); +} + gboolean json_dumper_finish(json_dumper *dumper) { diff --git a/wsutil/json_dumper.h b/wsutil/json_dumper.h index bc0d4cb010..f2ea2c58ba 100644 --- a/wsutil/json_dumper.h +++ b/wsutil/json_dumper.h @@ -87,6 +87,14 @@ WS_DLL_PUBLIC void json_dumper_value_anyf(json_dumper *dumper, const char *format, ...) G_GNUC_PRINTF(2, 3); +/** + * Dump literal values (like json_dumper_value_anyf), but taking a va_list + * as parameter. String values MUST be properly quoted by the caller, no + * escaping occurs. Do not use with untrusted data. + */ +WS_DLL_PUBLIC void +json_dumper_value_va_list(json_dumper *dumper, const char *format, va_list ap); + WS_DLL_PUBLIC void json_dumper_begin_base64(json_dumper *dumper); |