diff options
author | Jakub Zawadzki <darkjames-ws@darkjames.pl> | 2017-02-13 00:09:16 +0100 |
---|---|---|
committer | Jakub Zawadzki <darkjames-ws@darkjames.pl> | 2017-02-25 11:05:50 +0000 |
commit | 762bf10834da9f8a5d51f2ff035970942d9070bf (patch) | |
tree | cd11c5b38caf45fafa3d00b0fcca5c8b3f35a5e9 /sharkd_session.c | |
parent | faaff7d180fd0ba3994871b1a1a121da91d0377b (diff) |
Configuration dump for webshark.
Change-Id: Ideaedaaa7bf5f1244d7f6845a08e4dc36a2c798f
Reviewed-on: https://code.wireshark.org/review/20083
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Petri-Dish: Jakub Zawadzki <darkjames-ws@darkjames.pl>
Reviewed-by: Michael Mann <mmann78@netscape.net>
Reviewed-by: Jakub Zawadzki <darkjames-ws@darkjames.pl>
Diffstat (limited to 'sharkd_session.c')
-rw-r--r-- | sharkd_session.c | 67 |
1 files changed, 66 insertions, 1 deletions
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 */ |