From 762bf10834da9f8a5d51f2ff035970942d9070bf Mon Sep 17 00:00:00 2001 From: Jakub Zawadzki Date: Mon, 13 Feb 2017 00:09:16 +0100 Subject: Configuration dump for webshark. Change-Id: Ideaedaaa7bf5f1244d7f6845a08e4dc36a2c798f Reviewed-on: https://code.wireshark.org/review/20083 Tested-by: Petri Dish Buildbot Petri-Dish: Jakub Zawadzki Reviewed-by: Michael Mann Reviewed-by: Jakub Zawadzki --- sharkd_session.c | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 66 insertions(+), 1 deletion(-) diff --git a/sharkd_session.c b/sharkd_session.c index 8113a2dfa2..3f0c9f0a2b 100644 --- a/sharkd_session.c +++ b/sharkd_session.c @@ -1716,8 +1716,73 @@ sharkd_session_process_dumpconf_cb(pref_t *pref, gpointer d) struct sharkd_session_process_dumpconf_data *data = (struct sharkd_session_process_dumpconf_data *) d; const char *pref_name = prefs_get_name(pref); - printf("%s\"%s.%s\":{}", data->sepa, data->module->name, pref_name); + printf("%s\"%s.%s\":{", data->sepa, data->module->name, pref_name); + switch (prefs_get_type(pref)) + { + case PREF_UINT: + case PREF_DECODE_AS_UINT: + printf("\"u\":%u", prefs_get_uint_value_real(pref, pref_current)); + if (prefs_get_uint_base(pref) != 10) + printf(",\"ub\":%d", prefs_get_uint_base(pref)); + break; + + case PREF_BOOL: + printf("\"b\":%s", prefs_get_bool_value(pref, pref_current) ? "1" : "0"); + break; + + case PREF_STRING: + printf("\"s\":"); + json_puts_string(prefs_get_string_value(pref, pref_current)); + break; + + case PREF_ENUM: + { + const enum_val_t *enums; + const char *enum_sepa = ""; + + printf("\"e\":["); + for (enums = prefs_get_enumvals(pref); enums->name; enums++) + { + printf("%s{\"v\":%d", enum_sepa, enums->value); + + if (enums->value == prefs_get_enum_value(pref, pref_current)) + printf(",\"s\":1"); + + printf(",\"d\":"); + json_puts_string(enums->description); + + printf("}"); + enum_sepa = ","; + } + printf("]"); + break; + } + + case PREF_RANGE: + case PREF_DECODE_AS_RANGE: + { + char *range_str = range_convert_range(NULL, prefs_get_range_value_real(pref, pref_current)); + printf("\"r\":\"%s\"", range_str); + wmem_free(NULL, range_str); + break; + } + + case PREF_UAT: + case PREF_COLOR: + case PREF_CUSTOM: + case PREF_STATIC_TEXT: + case PREF_OBSOLETE: + /* TODO */ + break; + } + +#if 0 + printf(",\"t\":"); + json_puts_string(prefs_get_title(pref)); +#endif + + printf("}"); data->sepa = ","; return 0; /* continue */ -- cgit v1.2.1