diff options
author | Guy Harris <guy@alum.mit.edu> | 2015-12-17 19:50:19 -0800 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2015-12-18 03:50:44 +0000 |
commit | 487dfe1e289107bc3f401571d0f6c8034280a8c9 (patch) | |
tree | 15a4fb7f6296c85347fe2fc74b5a7cd99eab0bf1 /epan/prefs.c | |
parent | d222dd398904dda499cb6fe2d5f300643076c2b1 (diff) |
More common code for string-like preferences.
Change-Id: I0143c40cabc0e60265aad2004884cb24cd41a8ac
Reviewed-on: https://code.wireshark.org/review/12714
Reviewed-by: Guy Harris <guy@alum.mit.edu>
Diffstat (limited to 'epan/prefs.c')
-rw-r--r-- | epan/prefs.c | 75 |
1 files changed, 32 insertions, 43 deletions
diff --git a/epan/prefs.c b/epan/prefs.c index c6e7b1e9a4..f2f286857d 100644 --- a/epan/prefs.c +++ b/epan/prefs.c @@ -218,6 +218,18 @@ prefs_init(void) prefs_top_level_modules = wmem_tree_new(wmem_epan_scope()); } +/* + * Free the strings for a string-like preference. + */ +static void +free_string_like_preference(pref_t *pref) +{ + g_free((char *)*pref->varp.string); + *pref->varp.string = NULL; + g_free(pref->default_val.string); + pref->default_val.string = NULL; +} + static void free_pref(gpointer data, gpointer user_data _U_) { @@ -1040,6 +1052,18 @@ prefs_set_string_like_value(pref_t *pref, const gchar *value, gboolean *changed) } /* + * Reset the value of a string-like preference. + */ +static void +reset_string_like_preference(pref_t *pref) +{ +DIAG_OFF(cast-qual) + g_free((void *)*pref->varp.string); +DIAG_ON(cast-qual) + *pref->varp.string = g_strdup(pref->default_val.string); +} + +/* * Register a preference with a character-string value. */ void @@ -1480,22 +1504,6 @@ static char * console_log_level_to_str_cb(pref_t* pref, gboolean default_val) { #define PRS_COL_NUM "column.number" static module_t *gui_column_module = NULL; -static void -column_hidden_free_cb(pref_t* pref) -{ - g_free((char *)*pref->varp.string); - *pref->varp.string = NULL; - g_free(pref->default_val.string); - pref->default_val.string = NULL; -} - -static void -column_hidden_reset_cb(pref_t* pref) -{ - g_free((void *)*pref->varp.string); - *pref->varp.string = g_strdup(pref->default_val.string); -} - static prefs_set_pref_e column_hidden_set_cb(pref_t* pref, const gchar* value, gboolean* changed) { @@ -1753,7 +1761,7 @@ column_format_set_cb(pref_t* pref, const gchar* value, gboolean* changed _U_) } prefs_clear_string_list(col_l); - column_hidden_free_cb(hidden_pref); + free_string_like_preference(hidden_pref); return PREFS_SET_OK; } @@ -2013,24 +2021,6 @@ capture_column_to_str_cb(pref_t* pref, gboolean default_val) return capture_column_str; } - -static void -colorized_frame_free_cb(pref_t* pref) -{ - g_free((char *)*pref->varp.string); - *pref->varp.string = NULL; - g_free(pref->default_val.string); - pref->default_val.string = NULL; - -} - -static void -colorized_frame_reset_cb(pref_t* pref) -{ - g_free((void *)*pref->varp.string); - *pref->varp.string = g_strdup(pref->default_val.string); -} - static prefs_set_pref_e colorized_frame_set_cb(pref_t* pref, const gchar* value, gboolean* changed) { @@ -2145,8 +2135,8 @@ prefs_register_modules(void) gui_column_module = prefs_register_subtree(gui_module, "Columns", "Columns", NULL); - custom_cbs.free_cb = column_hidden_free_cb; - custom_cbs.reset_cb = column_hidden_reset_cb; + custom_cbs.free_cb = free_string_like_preference; + custom_cbs.reset_cb = reset_string_like_preference; custom_cbs.set_cb = column_hidden_set_cb; custom_cbs.type_name_cb = column_hidden_type_name_cb; custom_cbs.type_description_cb = column_hidden_type_description_cb; @@ -2222,8 +2212,8 @@ prefs_register_modules(void) prefs_register_color_preference(gui_color_module, "stream.server.bg", "TCP stream window color preference", "TCP stream window color preference", &prefs.st_server_bg); - custom_cbs.free_cb = colorized_frame_free_cb; - custom_cbs.reset_cb = colorized_frame_reset_cb; + custom_cbs.free_cb = free_string_like_preference; + custom_cbs.reset_cb = reset_string_like_preference; custom_cbs.set_cb = colorized_frame_set_cb; custom_cbs.type_name_cb = colorized_frame_type_name_cb; custom_cbs.type_description_cb = colorized_frame_type_description_cb; @@ -2234,8 +2224,8 @@ prefs_register_modules(void) "Filter Colorized Foreground", &custom_cbs, (const char **)&prefs.gui_colorized_fg); g_free(tmp); - custom_cbs.free_cb = colorized_frame_free_cb; - custom_cbs.reset_cb = colorized_frame_reset_cb; + custom_cbs.free_cb = free_string_like_preference; + custom_cbs.reset_cb = reset_string_like_preference; custom_cbs.set_cb = colorized_frame_set_cb; custom_cbs.type_name_cb = colorized_frame_type_name_cb; custom_cbs.type_description_cb = colorized_frame_type_description_cb; @@ -3160,8 +3150,7 @@ reset_pref(pref_t *pref) case PREF_STRING: case PREF_FILENAME: case PREF_DIRNAME: - g_free((void *)*pref->varp.string); - *pref->varp.string = g_strdup(pref->default_val.string); + reset_string_like_preference(pref); break; case PREF_RANGE: |