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>
This commit is contained in:
Dario Lombardo 2018-12-25 23:19:46 +01:00
parent c9cfae7fec
commit e830182d9e
3 changed files with 20 additions and 4 deletions

View File

@ -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

View File

@ -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)
{

View File

@ -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);