aboutsummaryrefslogtreecommitdiffstats
path: root/epan/prefs.c
diff options
context:
space:
mode:
authorPeter Wu <peter@lekensteyn.nl>2018-09-08 11:49:22 +0200
committerPeter Wu <peter@lekensteyn.nl>2018-09-10 09:27:34 +0000
commitad0de0ffbc9ed9e397d09e1398555d06d29439d2 (patch)
tree18acdf02c960d2de3cff6b8134be1cae43367a18 /epan/prefs.c
parent7573f7dab49043bc6401b97a10439d9b9b6a291a (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.c17
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"