aboutsummaryrefslogtreecommitdiffstats
path: root/sharkd_session.c
diff options
context:
space:
mode:
authorJakub Zawadzki <darkjames-ws@darkjames.pl>2017-02-13 00:09:16 +0100
committerJakub Zawadzki <darkjames-ws@darkjames.pl>2017-02-25 11:05:50 +0000
commit762bf10834da9f8a5d51f2ff035970942d9070bf (patch)
treecd11c5b38caf45fafa3d00b0fcca5c8b3f35a5e9 /sharkd_session.c
parentfaaff7d180fd0ba3994871b1a1a121da91d0377b (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.c67
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 */