diff options
author | Peter Wu <peter@lekensteyn.nl> | 2018-09-08 11:49:22 +0200 |
---|---|---|
committer | Peter Wu <peter@lekensteyn.nl> | 2018-09-10 09:27:34 +0000 |
commit | ad0de0ffbc9ed9e397d09e1398555d06d29439d2 (patch) | |
tree | 18acdf02c960d2de3cff6b8134be1cae43367a18 /epan/prefs.c | |
parent | 7573f7dab49043bc6401b97a10439d9b9b6a291a (diff) |
prefs,ui: properly migrate old filter expressions
When legacy filter expressions preferences are present, be sure to
(1) save the dfilter_buttons file when updating the preferences file and
(2) save the preferences file after updating the dfilter_buttons file.
Without doing (1), the old buttons will be lost. Without (2), restarting
Wireshark will result in duplicate buttons. Only write the files if the
user actually made other changes to avoid breaking profiles by just
opening Wireshark.
Bug: 15114
Bug: 15121
Change-Id: I5b9417c34146c4450526781a20308c9c98fb44a1
Reviewed-on: https://code.wireshark.org/review/29488
Reviewed-by: Stig Bjørlykke <stig@bjorlykke.org>
Petri-Dish: Stig Bjørlykke <stig@bjorlykke.org>
Tested-by: Petri Dish Buildbot
Reviewed-by: Peter Wu <peter@lekensteyn.nl>
Diffstat (limited to 'epan/prefs.c')
-rw-r--r-- | epan/prefs.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/epan/prefs.c b/epan/prefs.c index b74ab1f419..96d242d7e2 100644 --- a/epan/prefs.c +++ b/epan/prefs.c @@ -5388,6 +5388,8 @@ set_pref(gchar *pref_name, const gchar *value, void *private_data _U_, filter_expression_new(filter_label, value, "", filter_enabled); g_free(filter_label); filter_label = NULL; + /* Remember to save the new UAT to file. */ + prefs.filter_expressions_old = TRUE; } else if (strcmp(pref_name, "gui.version_in_start_page") == 0) { /* Convert deprecated value to closest current equivalent */ if (g_ascii_strcasecmp(value, "true") == 0) { @@ -6586,6 +6588,21 @@ write_prefs(char **pf_path_return) pf = stdout; } + /* + * If the preferences file is being written, be sure to write UAT files + * first that were migrated from the preferences file. + */ + if (pf_path_return != NULL) { + if (prefs.filter_expressions_old) { + char *err = NULL; + prefs.filter_expressions_old = FALSE; + if (!uat_save(uat_get_table_by_name("Display expressions"), &err)) { + g_warning("Unable to save Display expressions: %s", err); + g_free(err); + } + } + } + fputs("# Configuration file for Wireshark " VERSION ".\n" "#\n" "# This file is regenerated each time preferences are saved within\n" |