diff options
author | Gerald Combs <gerald@wireshark.org> | 2017-11-28 16:03:11 -0800 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2017-11-30 00:14:16 +0000 |
commit | 3ed5b4fb67edc6829ece7adf542f44e9a75185af (patch) | |
tree | 24ad6cc6525ca7af094d8c6d04dccf26d272227d /ui/recent.c | |
parent | b59dc97dfef3bcce71cd393f4d2493e7ba1a8f82 (diff) |
Reformat some top-level ui files.
Make sure each ui/*.[ch] file uses identical (4-space) indentation.
Remove ui/.editorconfig. Fix up other formatting where needed.
SPDX-abbreviate the license blurb in the files we modify.
Change-Id: I5faa1c1eae9a4b6220422ad8e4ba7a341c7deb1f
Reviewed-on: https://code.wireshark.org/review/24632
Reviewed-by: Gerald Combs <gerald@wireshark.org>
Petri-Dish: Gerald Combs <gerald@wireshark.org>
Tested-by: Petri Dish Buildbot
Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'ui/recent.c')
-rw-r--r-- | ui/recent.c | 2179 |
1 files changed, 1084 insertions, 1095 deletions
diff --git a/ui/recent.c b/ui/recent.c index 7aab5e3470..0b7562621e 100644 --- a/ui/recent.c +++ b/ui/recent.c @@ -6,19 +6,7 @@ * By Gerald Combs <gerald@wireshark.org> * Copyright 1998 Gerald Combs * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * SPDX-License-Identifier: GPL-2.0+ */ #include "config.h" @@ -88,52 +76,52 @@ recent_settings_t recent; static const value_string ts_type_values[] = { - { TS_RELATIVE, "RELATIVE" }, - { TS_ABSOLUTE, "ABSOLUTE" }, - { TS_ABSOLUTE_WITH_YMD, "ABSOLUTE_WITH_YMD" }, - { TS_ABSOLUTE_WITH_YDOY, "ABSOLUTE_WITH_YDOY" }, - { TS_ABSOLUTE_WITH_YMD, "ABSOLUTE_WITH_DATE" }, /* Backward compability */ - { TS_DELTA, "DELTA" }, - { TS_DELTA_DIS, "DELTA_DIS" }, - { TS_EPOCH, "EPOCH" }, - { TS_UTC, "UTC" }, - { TS_UTC_WITH_YMD, "UTC_WITH_YMD" }, - { TS_UTC_WITH_YDOY, "UTC_WITH_YDOY" }, - { TS_UTC_WITH_YMD, "UTC_WITH_DATE" }, /* Backward compability */ - { 0, NULL } + { TS_RELATIVE, "RELATIVE" }, + { TS_ABSOLUTE, "ABSOLUTE" }, + { TS_ABSOLUTE_WITH_YMD, "ABSOLUTE_WITH_YMD" }, + { TS_ABSOLUTE_WITH_YDOY, "ABSOLUTE_WITH_YDOY" }, + { TS_ABSOLUTE_WITH_YMD, "ABSOLUTE_WITH_DATE" }, /* Backward compability */ + { TS_DELTA, "DELTA" }, + { TS_DELTA_DIS, "DELTA_DIS" }, + { TS_EPOCH, "EPOCH" }, + { TS_UTC, "UTC" }, + { TS_UTC_WITH_YMD, "UTC_WITH_YMD" }, + { TS_UTC_WITH_YDOY, "UTC_WITH_YDOY" }, + { TS_UTC_WITH_YMD, "UTC_WITH_DATE" }, /* Backward compability */ + { 0, NULL } }; static const value_string ts_precision_values[] = { - { TS_PREC_AUTO, "AUTO" }, - { TS_PREC_FIXED_SEC, "SEC" }, - { TS_PREC_FIXED_DSEC, "DSEC" }, - { TS_PREC_FIXED_CSEC, "CSEC" }, - { TS_PREC_FIXED_MSEC, "MSEC" }, - { TS_PREC_FIXED_USEC, "USEC" }, - { TS_PREC_FIXED_NSEC, "NSEC" }, - { 0, NULL } + { TS_PREC_AUTO, "AUTO" }, + { TS_PREC_FIXED_SEC, "SEC" }, + { TS_PREC_FIXED_DSEC, "DSEC" }, + { TS_PREC_FIXED_CSEC, "CSEC" }, + { TS_PREC_FIXED_MSEC, "MSEC" }, + { TS_PREC_FIXED_USEC, "USEC" }, + { TS_PREC_FIXED_NSEC, "NSEC" }, + { 0, NULL } }; static const value_string ts_seconds_values[] = { - { TS_SECONDS_DEFAULT, "SECONDS" }, - { TS_SECONDS_HOUR_MIN_SEC, "HOUR_MIN_SEC" }, - { 0, NULL } + { TS_SECONDS_DEFAULT, "SECONDS" }, + { TS_SECONDS_HOUR_MIN_SEC, "HOUR_MIN_SEC" }, + { 0, NULL } }; static void free_col_width_data(gpointer data, gpointer user_data _U_) { - col_width_data *cfmt = (col_width_data *)data; - g_free(cfmt->cfield); - g_free(cfmt); + col_width_data *cfmt = (col_width_data *)data; + g_free(cfmt->cfield); + g_free(cfmt); } static void free_col_width_info(recent_settings_t *rs) { - g_list_foreach(rs->col_width_list, free_col_width_data, NULL); - g_list_free(rs->col_width_list); - rs->col_width_list = NULL; + g_list_foreach(rs->col_width_list, free_col_width_data, NULL); + g_list_free(rs->col_width_list); + rs->col_width_list = NULL; } /** Write the geometry values of a single window to the recent file. @@ -145,21 +133,21 @@ free_col_width_info(recent_settings_t *rs) static void write_recent_geom(gpointer key _U_, gpointer value, gpointer rfh) { - window_geometry_t *geom = (window_geometry_t *)value; - FILE *rf = (FILE *)rfh; - - fprintf(rf, "\n# Geometry and maximized state of %s window.\n", geom->key); - fprintf(rf, "# Decimal integers.\n"); - fprintf(rf, RECENT_GUI_GEOMETRY "%s.x: %d\n", geom->key, geom->x); - fprintf(rf, RECENT_GUI_GEOMETRY "%s.y: %d\n", geom->key, geom->y); - fprintf(rf, RECENT_GUI_GEOMETRY "%s.width: %d\n", geom->key, - geom->width); - fprintf(rf, RECENT_GUI_GEOMETRY "%s.height: %d\n", geom->key, - geom->height); - - fprintf(rf, "# TRUE or FALSE (case-insensitive).\n"); - fprintf(rf, RECENT_GUI_GEOMETRY "%s.maximized: %s\n", geom->key, - geom->maximized == TRUE ? "TRUE" : "FALSE"); + window_geometry_t *geom = (window_geometry_t *)value; + FILE *rf = (FILE *)rfh; + + fprintf(rf, "\n# Geometry and maximized state of %s window.\n", geom->key); + fprintf(rf, "# Decimal integers.\n"); + fprintf(rf, RECENT_GUI_GEOMETRY "%s.x: %d\n", geom->key, geom->x); + fprintf(rf, RECENT_GUI_GEOMETRY "%s.y: %d\n", geom->key, geom->y); + fprintf(rf, RECENT_GUI_GEOMETRY "%s.width: %d\n", geom->key, + geom->width); + fprintf(rf, RECENT_GUI_GEOMETRY "%s.height: %d\n", geom->key, + geom->height); + + fprintf(rf, "# TRUE or FALSE (case-insensitive).\n"); + fprintf(rf, RECENT_GUI_GEOMETRY "%s.maximized: %s\n", geom->key, + geom->maximized == TRUE ? "TRUE" : "FALSE"); } @@ -171,27 +159,27 @@ static GHashTable *window_geom_hash = NULL; void window_geom_save(const gchar *name, window_geometry_t *geom) { - gchar *key; - window_geometry_t *work; - - /* init hashtable, if not already done */ - if (!window_geom_hash) { - window_geom_hash = g_hash_table_new(g_str_hash, g_str_equal); - } - /* if we have an old one, remove and free it first */ - work = (window_geometry_t *)g_hash_table_lookup(window_geom_hash, name); - if (work) { - g_hash_table_remove(window_geom_hash, name); - g_free(work->key); - g_free(work); - } - - /* g_malloc and insert the new one */ - work = (window_geometry_t *)g_malloc(sizeof(window_geometry_t)); - *work = *geom; - key = g_strdup(name); - work->key = key; - g_hash_table_insert(window_geom_hash, key, work); + gchar *key; + window_geometry_t *work; + + /* init hashtable, if not already done */ + if (!window_geom_hash) { + window_geom_hash = g_hash_table_new(g_str_hash, g_str_equal); + } + /* if we have an old one, remove and free it first */ + work = (window_geometry_t *)g_hash_table_lookup(window_geom_hash, name); + if (work) { + g_hash_table_remove(window_geom_hash, name); + g_free(work->key); + g_free(work); + } + + /* g_malloc and insert the new one */ + work = (window_geometry_t *)g_malloc(sizeof(window_geometry_t)); + *work = *geom; + key = g_strdup(name); + work->key = key; + g_hash_table_insert(window_geom_hash, key, work); } /* load the desired geometry for this window from the geometry hashtable */ @@ -199,20 +187,20 @@ gboolean window_geom_load(const gchar *name, window_geometry_t *geom) { - window_geometry_t *p; + window_geometry_t *p; - /* init hashtable, if not already done */ - if (!window_geom_hash) { - window_geom_hash = g_hash_table_new(g_str_hash, g_str_equal); - } + /* init hashtable, if not already done */ + if (!window_geom_hash) { + window_geom_hash = g_hash_table_new(g_str_hash, g_str_equal); + } - p = (window_geometry_t *)g_hash_table_lookup(window_geom_hash, name); - if (p) { - *geom = *p; - return TRUE; - } else { - return FALSE; - } + p = (window_geometry_t *)g_hash_table_lookup(window_geom_hash, name); + if (p) { + *geom = *p; + return TRUE; + } else { + return FALSE; + } } /* parse values of particular types */ @@ -238,50 +226,50 @@ window_geom_recent_read_pair(const char *name, const char *key, const char *value) { - window_geometry_t geom; - - /* find window geometry maybe already in hashtable */ - if (!window_geom_load(name, &geom)) { - /* not in table, init geom with "basic" values */ - geom.key = NULL; /* Will be set in window_geom_save() */ - geom.set_pos = FALSE; - geom.x = -1; - geom.y = -1; - geom.set_size = FALSE; - geom.width = -1; - geom.height = -1; - - geom.set_maximized = FALSE;/* this is valid in GTK2 only */ - geom.maximized = FALSE; /* this is valid in GTK2 only */ - } - - if (strcmp(key, "x") == 0) { - geom.x = (gint)strtol(value, NULL, 10); - geom.set_pos = TRUE; - } else if (strcmp(key, "y") == 0) { - geom.y = (gint)strtol(value, NULL, 10); - geom.set_pos = TRUE; - } else if (strcmp(key, "width") == 0) { - geom.width = (gint)strtol(value, NULL, 10); - geom.set_size = TRUE; - } else if (strcmp(key, "height") == 0) { - geom.height = (gint)strtol(value, NULL, 10); - geom.set_size = TRUE; - } else if (strcmp(key, "maximized") == 0) { - parse_recent_boolean(value, &geom.maximized); - geom.set_maximized = TRUE; - } else { - /* - * Silently ignore the bogus key. We shouldn't abort here, - * as this could be due to a corrupt recent file. - * - * XXX - should we print a message about this? - */ - return; - } + window_geometry_t geom; + + /* find window geometry maybe already in hashtable */ + if (!window_geom_load(name, &geom)) { + /* not in table, init geom with "basic" values */ + geom.key = NULL; /* Will be set in window_geom_save() */ + geom.set_pos = FALSE; + geom.x = -1; + geom.y = -1; + geom.set_size = FALSE; + geom.width = -1; + geom.height = -1; + + geom.set_maximized = FALSE;/* this is valid in GTK2 only */ + geom.maximized = FALSE; /* this is valid in GTK2 only */ + } - /* save / replace geometry in hashtable */ - window_geom_save(name, &geom); + if (strcmp(key, "x") == 0) { + geom.x = (gint)strtol(value, NULL, 10); + geom.set_pos = TRUE; + } else if (strcmp(key, "y") == 0) { + geom.y = (gint)strtol(value, NULL, 10); + geom.set_pos = TRUE; + } else if (strcmp(key, "width") == 0) { + geom.width = (gint)strtol(value, NULL, 10); + geom.set_size = TRUE; + } else if (strcmp(key, "height") == 0) { + geom.height = (gint)strtol(value, NULL, 10); + geom.set_size = TRUE; + } else if (strcmp(key, "maximized") == 0) { + parse_recent_boolean(value, &geom.maximized); + geom.set_maximized = TRUE; + } else { + /* + * Silently ignore the bogus key. We shouldn't abort here, + * as this could be due to a corrupt recent file. + * + * XXX - should we print a message about this? + */ + return; + } + + /* save / replace geometry in hashtable */ + window_geom_save(name, &geom); } /** Write all geometry values of all windows to the recent file. @@ -292,12 +280,12 @@ window_geom_recent_read_pair(const char *name, static void window_geom_recent_write_all(FILE *rf) { - /* init hashtable, if not already done */ - if (!window_geom_hash) { - window_geom_hash = g_hash_table_new(g_str_hash, g_str_equal); - } + /* init hashtable, if not already done */ + if (!window_geom_hash) { + window_geom_hash = g_hash_table_new(g_str_hash, g_str_equal); + } - g_hash_table_foreach(window_geom_hash, write_recent_geom, rf); + g_hash_table_foreach(window_geom_hash, write_recent_geom, rf); } /* Global list of recent capture filters. */ @@ -320,13 +308,13 @@ static guint cfilter_combo_max_recent = 20; GList * recent_get_cfilter_list(const gchar *ifname) { - if (ifname == NULL) - return recent_cfilter_list; - if (per_interface_cfilter_lists_hash == NULL) { - /* No such lists exist. */ - return NULL; - } - return (GList *)g_hash_table_lookup(per_interface_cfilter_lists_hash, ifname); + if (ifname == NULL) + return recent_cfilter_list; + if (per_interface_cfilter_lists_hash == NULL) { + /* No such lists exist. */ + return NULL; + } + return (GList *)g_hash_table_lookup(per_interface_cfilter_lists_hash, ifname); } /** @@ -339,48 +327,48 @@ recent_get_cfilter_list(const gchar *ifname) void recent_add_cfilter(const gchar *ifname, const gchar *s) { - GList *cfilter_list; - GList *li; - gchar *li_filter, *newfilter = NULL; - - /* Don't add empty filters to the list. */ - if (s[0] == '\0') - return; - - if (ifname == NULL) - cfilter_list = recent_cfilter_list; - else { - /* If we don't yet have a hash table for per-interface recent - capture filter lists, create one. Have it free the new key - if we're updating an entry rather than creating it below. */ - if (per_interface_cfilter_lists_hash == NULL) - per_interface_cfilter_lists_hash = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL); - cfilter_list = (GList *)g_hash_table_lookup(per_interface_cfilter_lists_hash, ifname); - } - - li = g_list_first(cfilter_list); - while (li) { - /* If the filter is already in the list, remove the old one and - * append the new one at the latest position (at g_list_append() below) */ - li_filter = (char *)li->data; - if (strcmp(s, li_filter) == 0) { - /* No need to copy the string, we're just moving it. */ - newfilter = li_filter; - cfilter_list = g_list_remove(cfilter_list, li->data); - break; + GList *cfilter_list; + GList *li; + gchar *li_filter, *newfilter = NULL; + + /* Don't add empty filters to the list. */ + if (s[0] == '\0') + return; + + if (ifname == NULL) + cfilter_list = recent_cfilter_list; + else { + /* If we don't yet have a hash table for per-interface recent + capture filter lists, create one. Have it free the new key + if we're updating an entry rather than creating it below. */ + if (per_interface_cfilter_lists_hash == NULL) + per_interface_cfilter_lists_hash = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL); + cfilter_list = (GList *)g_hash_table_lookup(per_interface_cfilter_lists_hash, ifname); + } + + li = g_list_first(cfilter_list); + while (li) { + /* If the filter is already in the list, remove the old one and + * append the new one at the latest position (at g_list_append() below) */ + li_filter = (char *)li->data; + if (strcmp(s, li_filter) == 0) { + /* No need to copy the string, we're just moving it. */ + newfilter = li_filter; + cfilter_list = g_list_remove(cfilter_list, li->data); + break; + } + li = li->next; + } + if (newfilter == NULL) { + /* The filter wasn't already in the list; make a copy to add. */ + newfilter = g_strdup(s); } - li = li->next; - } - if (newfilter == NULL) { - /* The filter wasn't already in the list; make a copy to add. */ - newfilter = g_strdup(s); - } - cfilter_list = g_list_append(cfilter_list, newfilter); - - if (ifname == NULL) - recent_cfilter_list = cfilter_list; - else - g_hash_table_insert(per_interface_cfilter_lists_hash, g_strdup(ifname), cfilter_list); + cfilter_list = g_list_append(cfilter_list, newfilter); + + if (ifname == NULL) + recent_cfilter_list = cfilter_list; + else + g_hash_table_insert(per_interface_cfilter_lists_hash, g_strdup(ifname), cfilter_list); } #ifdef HAVE_PCAP_REMOTE @@ -388,158 +376,159 @@ static GHashTable *remote_host_list=NULL; int recent_get_remote_host_list_size(void) { - if (remote_host_list == NULL) { - /* No entries exist. */ - return 0; - } - return g_hash_table_size (remote_host_list); + if (remote_host_list == NULL) { + /* No entries exist. */ + return 0; + } + return g_hash_table_size (remote_host_list); } void recent_add_remote_host(gchar *host, struct remote_host *rh) { - if (remote_host_list == NULL) { - remote_host_list = g_hash_table_new (g_str_hash, g_str_equal); - } - g_hash_table_insert (remote_host_list, g_strdup(host), rh); + if (remote_host_list == NULL) { + remote_host_list = g_hash_table_new (g_str_hash, g_str_equal); + } + g_hash_table_insert (remote_host_list, g_strdup(host), rh); } static gboolean free_remote_host (gpointer key _U_, gpointer value, gpointer user _U_) { - struct remote_host *rh = (struct remote_host *) value; + struct remote_host *rh = (struct remote_host *) value; - g_free (rh->r_host); - g_free (rh->remote_port); - g_free (rh->auth_username); - g_free (rh->auth_password); + g_free (rh->r_host); + g_free (rh->remote_port); + g_free (rh->auth_username); + g_free (rh->auth_password); - return TRUE; + return TRUE; } void recent_remote_host_list_foreach(GHFunc func, gpointer user_data) { - if (remote_host_list != NULL) - g_hash_table_foreach(remote_host_list, func, user_data); + if (remote_host_list != NULL) { + g_hash_table_foreach(remote_host_list, func, user_data); + } } static void recent_print_remote_host (gpointer key _U_, gpointer value, gpointer user) { - FILE *rf = (FILE *)user; - struct remote_host_info *ri = (struct remote_host_info *)value; + FILE *rf = (FILE *)user; + struct remote_host_info *ri = (struct remote_host_info *)value; - fprintf (rf, RECENT_KEY_REMOTE_HOST ": %s,%s,%d\n", ri->remote_host, ri->remote_port, ri->auth_type); + fprintf (rf, RECENT_KEY_REMOTE_HOST ": %s,%s,%d\n", ri->remote_host, ri->remote_port, ri->auth_type); } void capture_remote_combo_recent_write_all(FILE *rf) { - if (remote_host_list && g_hash_table_size (remote_host_list) > 0) { - /* Write all remote interfaces to the recent file */ - g_hash_table_foreach (remote_host_list, recent_print_remote_host, rf); - } + if (remote_host_list && g_hash_table_size (remote_host_list) > 0) { + /* Write all remote interfaces to the recent file */ + g_hash_table_foreach (remote_host_list, recent_print_remote_host, rf); + } } void recent_free_remote_host_list(void) { - g_hash_table_foreach_remove(remote_host_list, free_remote_host, NULL); + g_hash_table_foreach_remove(remote_host_list, free_remote_host, NULL); } struct remote_host * recent_get_remote_host(const gchar *host) { - if (host == NULL) - return NULL; - if (remote_host_list == NULL) { - /* No such host exist. */ - return NULL; - } - return (struct remote_host *)g_hash_table_lookup(remote_host_list, host); + if (host == NULL) + return NULL; + if (remote_host_list == NULL) { + /* No such host exist. */ + return NULL; + } + return (struct remote_host *)g_hash_table_lookup(remote_host_list, host); } gboolean capture_remote_combo_add_recent(const gchar *s) { - GList *vals = prefs_get_string_list (s); - GList *valp = vals; - capture_auth auth_type; - char *p; - struct remote_host *rh; - - if (valp == NULL) - return FALSE; - - if (remote_host_list == NULL) { - remote_host_list = g_hash_table_new (g_str_hash, g_str_equal); - } - - rh =(struct remote_host *) g_malloc (sizeof (*rh)); - - /* First value is the host */ - rh->r_host = (gchar *)g_strdup ((const gchar *)valp->data); - if (strlen(rh->r_host) == 0) { - /* Empty remote host */ - g_free(rh->r_host); - g_free(rh); - return FALSE; - } - rh->auth_type = CAPTURE_AUTH_NULL; - valp = valp->next; - - if (valp) { - /* Found value 2, this is the port number */ - rh->remote_port = (gchar *)g_strdup ((const gchar *)valp->data); + GList *vals = prefs_get_string_list (s); + GList *valp = vals; + capture_auth auth_type; + char *p; + struct remote_host *rh; + + if (valp == NULL) + return FALSE; + + if (remote_host_list == NULL) { + remote_host_list = g_hash_table_new (g_str_hash, g_str_equal); + } + + rh =(struct remote_host *) g_malloc (sizeof (*rh)); + + /* First value is the host */ + rh->r_host = (gchar *)g_strdup ((const gchar *)valp->data); + if (strlen(rh->r_host) == 0) { + /* Empty remote host */ + g_free(rh->r_host); + g_free(rh); + return FALSE; + } + rh->auth_type = CAPTURE_AUTH_NULL; valp = valp->next; - } else { - /* Did not find a port number */ - rh->remote_port = g_strdup (""); - } - - if (valp) { - /* Found value 3, this is the authentication type */ - auth_type = (capture_auth)strtol((const gchar *)valp->data, &p, 0); - if (p != valp->data && *p == '\0') { - rh->auth_type = auth_type; + + if (valp) { + /* Found value 2, this is the port number */ + rh->remote_port = (gchar *)g_strdup ((const gchar *)valp->data); + valp = valp->next; + } else { + /* Did not find a port number */ + rh->remote_port = g_strdup (""); } - } - /* Do not store username and password */ - rh->auth_username = g_strdup (""); - rh->auth_password = g_strdup (""); + if (valp) { + /* Found value 3, this is the authentication type */ + auth_type = (capture_auth)strtol((const gchar *)valp->data, &p, 0); + if (p != valp->data && *p == '\0') { + rh->auth_type = auth_type; + } + } - prefs_clear_string_list(vals); + /* Do not store username and password */ + rh->auth_username = g_strdup (""); + rh->auth_password = g_strdup (""); - g_hash_table_insert (remote_host_list, g_strdup(rh->r_host), rh); + prefs_clear_string_list(vals); - return TRUE; + g_hash_table_insert (remote_host_list, g_strdup(rh->r_host), rh); + + return TRUE; } #endif static void cfilter_recent_write_all_list(FILE *rf, const gchar *ifname, GList *cfilter_list) { - guint max_count = 0; - GList *li; - - /* write all non empty capture filter strings to the recent file (until max count) */ - li = g_list_first(cfilter_list); - while (li && (max_count++ <= cfilter_combo_max_recent) ) { - if (li->data && strlen((const char *)li->data)) { - if (ifname == NULL) - fprintf (rf, RECENT_KEY_CAPTURE_FILTER ": %s\n", (char *)li->data); - else - fprintf (rf, RECENT_KEY_CAPTURE_FILTER ".%s: %s\n", ifname, (char *)li->data); + guint max_count = 0; + GList *li; + + /* write all non empty capture filter strings to the recent file (until max count) */ + li = g_list_first(cfilter_list); + while (li && (max_count++ <= cfilter_combo_max_recent) ) { + if (li->data && strlen((const char *)li->data)) { + if (ifname == NULL) + fprintf (rf, RECENT_KEY_CAPTURE_FILTER ": %s\n", (char *)li->data); + else + fprintf (rf, RECENT_KEY_CAPTURE_FILTER ".%s: %s\n", ifname, (char *)li->data); + } + li = li->next; } - li = li->next; - } } static void cfilter_recent_write_all_hash_callback(gpointer key, gpointer value, gpointer user_data) { - cfilter_recent_write_all_list((FILE *)user_data, (const gchar *)key, (GList *)value); + cfilter_recent_write_all_list((FILE *)user_data, (const gchar *)key, (GList *)value); } /** Write all capture filter values to the recent file. @@ -549,13 +538,13 @@ cfilter_recent_write_all_hash_callback(gpointer key, gpointer value, gpointer us static void cfilter_recent_write_all(FILE *rf) { - /* Write out the global list. */ - cfilter_recent_write_all_list(rf, NULL, recent_cfilter_list); + /* Write out the global list. */ + cfilter_recent_write_all_list(rf, NULL, recent_cfilter_list); - /* Write out all the per-interface lists. */ - if (per_interface_cfilter_lists_hash != NULL) { - g_hash_table_foreach(per_interface_cfilter_lists_hash, cfilter_recent_write_all_hash_callback, (gpointer)rf); - } + /* Write out all the per-interface lists. */ + if (per_interface_cfilter_lists_hash != NULL) { + g_hash_table_foreach(per_interface_cfilter_lists_hash, cfilter_recent_write_all_hash_callback, (gpointer)rf); + } } /* Write out recent settings of particular types. */ @@ -563,32 +552,32 @@ static void write_recent_boolean(FILE *rf, const char *description, const char *name, gboolean value) { - fprintf(rf, "\n# %s.\n", description); - fprintf(rf, "# TRUE or FALSE (case-insensitive).\n"); - fprintf(rf, "%s: %s\n", name, value == TRUE ? "TRUE" : "FALSE"); + fprintf(rf, "\n# %s.\n", description); + fprintf(rf, "# TRUE or FALSE (case-insensitive).\n"); + fprintf(rf, "%s: %s\n", name, value == TRUE ? "TRUE" : "FALSE"); } static void write_recent_enum(FILE *rf, const char *description, const char *name, const value_string *values, guint value) { - const char *if_invalid = NULL; - const value_string *valp; - - fprintf(rf, "\n# %s.\n", description); - fprintf(rf, "# One of: "); - valp = values; - while (valp->strptr != NULL) { - if (if_invalid == NULL) - if_invalid = valp->strptr; - fprintf(rf, "%s", valp->strptr); - valp++; - if (valp->strptr != NULL) - fprintf(rf, ", "); - } - fprintf(rf, "\n"); - fprintf(rf, "%s: %s\n", name, - val_to_str(value, values, if_invalid != NULL ? if_invalid : "Unknown")); + const char *if_invalid = NULL; + const value_string *valp; + + fprintf(rf, "\n# %s.\n", description); + fprintf(rf, "# One of: "); + valp = values; + while (valp->strptr != NULL) { + if (if_invalid == NULL) + if_invalid = valp->strptr; + fprintf(rf, "%s", valp->strptr); + valp++; + if (valp->strptr != NULL) + fprintf(rf, ", "); + } + fprintf(rf, "\n"); + fprintf(rf, "%s: %s\n", name, + val_to_str(value, values, if_invalid != NULL ? if_invalid : "Unknown")); } /* Attempt to write out "recent common" to the user's recent common file. @@ -597,126 +586,126 @@ write_recent_enum(FILE *rf, const char *description, const char *name, gboolean write_recent(void) { - char *pf_dir_path; - char *rf_path; - FILE *rf; - char *string_list; - - /* To do: - * - Split output lines longer than MAX_VAL_LEN - * - Create a function for the preference directory check/creation - * so that duplication can be avoided with filter.c - */ - - /* Create the directory that holds personal configuration files, if - necessary. */ - if (create_persconffile_dir(&pf_dir_path) == -1) { - simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, - "Can't create directory\n\"%s\"\nfor recent file: %s.", pf_dir_path, - g_strerror(errno)); - g_free(pf_dir_path); - return FALSE; - } - - rf_path = get_persconffile_path(RECENT_COMMON_FILE_NAME, FALSE); - if ((rf = ws_fopen(rf_path, "w")) == NULL) { - simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, - "Can't open recent file\n\"%s\": %s.", rf_path, - g_strerror(errno)); + char *pf_dir_path; + char *rf_path; + FILE *rf; + char *string_list; + + /* To do: + * - Split output lines longer than MAX_VAL_LEN + * - Create a function for the preference directory check/creation + * so that duplication can be avoided with filter.c + */ + + /* Create the directory that holds personal configuration files, if + necessary. */ + if (create_persconffile_dir(&pf_dir_path) == -1) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, + "Can't create directory\n\"%s\"\nfor recent file: %s.", pf_dir_path, + g_strerror(errno)); + g_free(pf_dir_path); + return FALSE; + } + + rf_path = get_persconffile_path(RECENT_COMMON_FILE_NAME, FALSE); + if ((rf = ws_fopen(rf_path, "w")) == NULL) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, + "Can't open recent file\n\"%s\": %s.", rf_path, + g_strerror(errno)); + g_free(rf_path); + return FALSE; + } g_free(rf_path); - return FALSE; - } - g_free(rf_path); - fputs("# Recent settings file for Wireshark " VERSION ".\n" - "#\n" - "# This file is regenerated each time Wireshark is quit.\n" - "# So be careful, if you want to make manual changes here.\n" - "\n" - "######## Recent capture files (latest last), cannot be altered through command line ########\n" - "\n", rf); + fputs("# Recent settings file for Wireshark " VERSION ".\n" + "#\n" + "# This file is regenerated each time Wireshark is quit.\n" + "# So be careful, if you want to make manual changes here.\n" + "\n" + "######## Recent capture files (latest last), cannot be altered through command line ########\n" + "\n", rf); - menu_recent_file_write_all(rf); + menu_recent_file_write_all(rf); - fputs("\n" - "######## Recent capture filters (latest last), cannot be altered through command line ########\n" - "\n", rf); + fputs("\n" + "######## Recent capture filters (latest last), cannot be altered through command line ########\n" + "\n", rf); - cfilter_recent_write_all(rf); + cfilter_recent_write_all(rf); - fputs("\n" - "######## Recent display filters (latest last), cannot be altered through command line ########\n" - "\n", rf); + fputs("\n" + "######## Recent display filters (latest last), cannot be altered through command line ########\n" + "\n", rf); - dfilter_recent_combo_write_all(rf); + dfilter_recent_combo_write_all(rf); #ifdef HAVE_PCAP_REMOTE - fputs("\n" - "######## Recent remote hosts, cannot be altered through command line ########\n" - "\n", rf); + fputs("\n" + "######## Recent remote hosts, cannot be altered through command line ########\n" + "\n", rf); - capture_remote_combo_recent_write_all(rf); + capture_remote_combo_recent_write_all(rf); #endif - fprintf(rf, "\n# Main window geometry.\n"); - fprintf(rf, "# Decimal numbers.\n"); - fprintf(rf, RECENT_GUI_GEOMETRY_MAIN_X ": %d\n", recent.gui_geometry_main_x); - fprintf(rf, RECENT_GUI_GEOMETRY_MAIN_Y ": %d\n", recent.gui_geometry_main_y); - fprintf(rf, RECENT_GUI_GTK_GEOMETRY_MAIN_X ": %d\n", recent.gui_gtk_geometry_main_x); - fprintf(rf, RECENT_GUI_GTK_GEOMETRY_MAIN_Y ": %d\n", recent.gui_gtk_geometry_main_y); - fprintf(rf, RECENT_GUI_GEOMETRY_MAIN_WIDTH ": %d\n", - recent.gui_geometry_main_width); - fprintf(rf, RECENT_GUI_GEOMETRY_MAIN_HEIGHT ": %d\n", - recent.gui_geometry_main_height); - - write_recent_boolean(rf, "Main window maximized", - RECENT_GUI_GEOMETRY_MAIN_MAXIMIZED, - recent.gui_geometry_main_maximized); - - fprintf(rf, "\n# Statusbar left pane size.\n"); - fprintf(rf, "# Decimal number.\n"); - if (recent.gui_geometry_status_pane_left != 0) { - fprintf(rf, RECENT_GUI_GEOMETRY_STATUS_PANE_LEFT ": %d\n", - recent.gui_geometry_status_pane_left); - } - fprintf(rf, "\n# Statusbar middle pane size.\n"); - fprintf(rf, "# Decimal number.\n"); - if (recent.gui_geometry_status_pane_right != 0) { - fprintf(rf, RECENT_GUI_GEOMETRY_STATUS_PANE_RIGHT ": %d\n", - recent.gui_geometry_status_pane_right); - } - - fprintf(rf, "\n# Last used Configuration Profile.\n"); - fprintf(rf, RECENT_LAST_USED_PROFILE ": %s\n", get_profile_name()); - - fprintf(rf, "\n# WLAN statistics upper pane size.\n"); - fprintf(rf, "# Decimal number.\n"); - fprintf(rf, RECENT_GUI_GEOMETRY_WLAN_STATS_PANE ": %d\n", - recent.gui_geometry_wlan_stats_pane); - - write_recent_boolean(rf, "Warn if running with elevated permissions (e.g. as root)", - RECENT_KEY_PRIVS_WARN_IF_ELEVATED, - recent.privs_warn_if_elevated); - - write_recent_boolean(rf, "Warn if npf.sys isn't loaded on Windows >= 6.0", - RECENT_KEY_PRIVS_WARN_IF_NO_NPF, - recent.privs_warn_if_no_npf); - - window_geom_recent_write_all(rf); - - fprintf(rf, "\n# Custom colors.\n"); - fprintf(rf, "# List of custom colors selected in Qt color picker.\n"); - string_list = join_string_list(recent.custom_colors); - fprintf(rf, RECENT_GUI_CUSTOM_COLORS ": %s\n", string_list); - g_free(string_list); - - fclose(rf); - - /* XXX - catch I/O errors (e.g. "ran out of disk space") and return - an error indication, or maybe write to a new recent file and - rename that file on top of the old one only if there are not I/O - errors. */ - return TRUE; + fprintf(rf, "\n# Main window geometry.\n"); + fprintf(rf, "# Decimal numbers.\n"); + fprintf(rf, RECENT_GUI_GEOMETRY_MAIN_X ": %d\n", recent.gui_geometry_main_x); + fprintf(rf, RECENT_GUI_GEOMETRY_MAIN_Y ": %d\n", recent.gui_geometry_main_y); + fprintf(rf, RECENT_GUI_GTK_GEOMETRY_MAIN_X ": %d\n", recent.gui_gtk_geometry_main_x); + fprintf(rf, RECENT_GUI_GTK_GEOMETRY_MAIN_Y ": %d\n", recent.gui_gtk_geometry_main_y); + fprintf(rf, RECENT_GUI_GEOMETRY_MAIN_WIDTH ": %d\n", + recent.gui_geometry_main_width); + fprintf(rf, RECENT_GUI_GEOMETRY_MAIN_HEIGHT ": %d\n", + recent.gui_geometry_main_height); + + write_recent_boolean(rf, "Main window maximized", + RECENT_GUI_GEOMETRY_MAIN_MAXIMIZED, + recent.gui_geometry_main_maximized); + + fprintf(rf, "\n# Statusbar left pane size.\n"); + fprintf(rf, "# Decimal number.\n"); + if (recent.gui_geometry_status_pane_left != 0) { + fprintf(rf, RECENT_GUI_GEOMETRY_STATUS_PANE_LEFT ": %d\n", + recent.gui_geometry_status_pane_left); + } + fprintf(rf, "\n# Statusbar middle pane size.\n"); + fprintf(rf, "# Decimal number.\n"); + if (recent.gui_geometry_status_pane_right != 0) { + fprintf(rf, RECENT_GUI_GEOMETRY_STATUS_PANE_RIGHT ": %d\n", + recent.gui_geometry_status_pane_right); + } + + fprintf(rf, "\n# Last used Configuration Profile.\n"); + fprintf(rf, RECENT_LAST_USED_PROFILE ": %s\n", get_profile_name()); + + fprintf(rf, "\n# WLAN statistics upper pane size.\n"); + fprintf(rf, "# Decimal number.\n"); + fprintf(rf, RECENT_GUI_GEOMETRY_WLAN_STATS_PANE ": %d\n", + recent.gui_geometry_wlan_stats_pane); + + write_recent_boolean(rf, "Warn if running with elevated permissions (e.g. as root)", + RECENT_KEY_PRIVS_WARN_IF_ELEVATED, + recent.privs_warn_if_elevated); + + write_recent_boolean(rf, "Warn if npf.sys isn't loaded on Windows >= 6.0", + RECENT_KEY_PRIVS_WARN_IF_NO_NPF, + recent.privs_warn_if_no_npf); + + window_geom_recent_write_all(rf); + + fprintf(rf, "\n# Custom colors.\n"); + fprintf(rf, "# List of custom colors selected in Qt color picker.\n"); + string_list = join_string_list(recent.custom_colors); + fprintf(rf, RECENT_GUI_CUSTOM_COLORS ": %s\n", string_list); + g_free(string_list); + + fclose(rf); + + /* XXX - catch I/O errors (e.g. "ran out of disk space") and return + an error indication, or maybe write to a new recent file and + rename that file on top of the old one only if there are not I/O + errors. */ + return TRUE; } @@ -726,161 +715,161 @@ write_recent(void) gboolean write_profile_recent(void) { - char *pf_dir_path; - char *rf_path; - char *string_list; - FILE *rf; - - /* To do: - * - Split output lines longer than MAX_VAL_LEN - * - Create a function for the preference directory check/creation - * so that duplication can be avoided with filter.c - */ - - /* Create the directory that holds personal configuration files, if - necessary. */ - if (create_persconffile_dir(&pf_dir_path) == -1) { - simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, - "Can't create directory\n\"%s\"\nfor recent file: %s.", pf_dir_path, - g_strerror(errno)); - g_free(pf_dir_path); - return FALSE; - } - - rf_path = get_persconffile_path(RECENT_FILE_NAME, TRUE); - if ((rf = ws_fopen(rf_path, "w")) == NULL) { - simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, - "Can't open recent file\n\"%s\": %s.", rf_path, - g_strerror(errno)); + char *pf_dir_path; + char *rf_path; + char *string_list; + FILE *rf; + + /* To do: + * - Split output lines longer than MAX_VAL_LEN + * - Create a function for the preference directory check/creation + * so that duplication can be avoided with filter.c + */ + + /* Create the directory that holds personal configuration files, if + necessary. */ + if (create_persconffile_dir(&pf_dir_path) == -1) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, + "Can't create directory\n\"%s\"\nfor recent file: %s.", pf_dir_path, + g_strerror(errno)); + g_free(pf_dir_path); + return FALSE; + } + + rf_path = get_persconffile_path(RECENT_FILE_NAME, TRUE); + if ((rf = ws_fopen(rf_path, "w")) == NULL) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, + "Can't open recent file\n\"%s\": %s.", rf_path, + g_strerror(errno)); + g_free(rf_path); + return FALSE; + } g_free(rf_path); - return FALSE; - } - g_free(rf_path); - fputs("# Recent settings file for Wireshark " VERSION ".\n" - "#\n" - "# This file is regenerated each time Wireshark is quit\n" - "# and when changing configuration profile.\n" - "# So be careful, if you want to make manual changes here.\n" - "\n", rf); + fputs("# Recent settings file for Wireshark " VERSION ".\n" + "#\n" + "# This file is regenerated each time Wireshark is quit\n" + "# and when changing configuration profile.\n" + "# So be careful, if you want to make manual changes here.\n" + "\n", rf); - write_recent_boolean(rf, "Main Toolbar show (hide)", - RECENT_KEY_MAIN_TOOLBAR_SHOW, - recent.main_toolbar_show); + write_recent_boolean(rf, "Main Toolbar show (hide)", + RECENT_KEY_MAIN_TOOLBAR_SHOW, + recent.main_toolbar_show); - write_recent_boolean(rf, "Filter Toolbar show (hide)", - RECENT_KEY_FILTER_TOOLBAR_SHOW, - recent.filter_toolbar_show); + write_recent_boolean(rf, "Filter Toolbar show (hide)", + RECENT_KEY_FILTER_TOOLBAR_SHOW, + recent.filter_toolbar_show); - write_recent_boolean(rf, "Wireless Settings Toolbar show (hide)", - RECENT_KEY_WIRELESS_TOOLBAR_SHOW, - recent.wireless_toolbar_show); + write_recent_boolean(rf, "Wireless Settings Toolbar show (hide)", + RECENT_KEY_WIRELESS_TOOLBAR_SHOW, + recent.wireless_toolbar_show); #ifdef HAVE_AIRPCAP - write_recent_boolean(rf, "Show (hide) old AirPcap driver warning dialog box", - RECENT_KEY_DRIVER_CHECK_SHOW, - recent.airpcap_driver_check_show); + write_recent_boolean(rf, "Show (hide) old AirPcap driver warning dialog box", + RECENT_KEY_DRIVER_CHECK_SHOW, + recent.airpcap_driver_check_show); #endif - write_recent_boolean(rf, "Packet list show (hide)", - RECENT_KEY_PACKET_LIST_SHOW, - recent.packet_list_show); - - write_recent_boolean(rf, "Tree view show (hide)", - RECENT_KEY_TREE_VIEW_SHOW, - recent.tree_view_show); - - write_recent_boolean(rf, "Byte view show (hide)", - RECENT_KEY_BYTE_VIEW_SHOW, - recent.byte_view_show); - - write_recent_boolean(rf, "Statusbar show (hide)", - RECENT_KEY_STATUSBAR_SHOW, - recent.statusbar_show); - - write_recent_boolean(rf, "Packet list colorize (hide)", - RECENT_KEY_PACKET_LIST_COLORIZE, - recent.packet_list_colorize); - - write_recent_enum(rf, "Timestamp display format", - RECENT_GUI_TIME_FORMAT, ts_type_values, - recent.gui_time_format); - - write_recent_enum(rf, "Timestamp display precision", - RECENT_GUI_TIME_PRECISION, ts_precision_values, - recent.gui_time_precision); - - write_recent_enum(rf, "Seconds display format", - RECENT_GUI_SECONDS_FORMAT, ts_seconds_values, - recent.gui_seconds_format); - - fprintf(rf, "\n# Zoom level.\n"); - fprintf(rf, "# A decimal number.\n"); - fprintf(rf, RECENT_GUI_ZOOM_LEVEL ": %d\n", - recent.gui_zoom_level); - - fprintf(rf, "\n# Bytes view.\n"); - fprintf(rf, "# A decimal number.\n"); - fprintf(rf, RECENT_GUI_BYTES_VIEW ": %d\n", - recent.gui_bytes_view); - - fprintf(rf, "\n# Main window upper (or leftmost) pane size.\n"); - fprintf(rf, "# Decimal number.\n"); - if (recent.gui_geometry_main_upper_pane != 0) { - fprintf(rf, RECENT_GUI_GEOMETRY_MAIN_UPPER_PANE ": %d\n", - recent.gui_geometry_main_upper_pane); - } - fprintf(rf, "\n# Main window middle pane size.\n"); - fprintf(rf, "# Decimal number.\n"); - if (recent.gui_geometry_main_lower_pane != 0) { - fprintf(rf, RECENT_GUI_GEOMETRY_MAIN_LOWER_PANE ": %d\n", - recent.gui_geometry_main_lower_pane); - } - - fprintf(rf, "\n# Packet list column pixel widths.\n"); - fprintf(rf, "# Each pair of strings consists of a column format and its pixel width.\n"); - packet_list_recent_write_all(rf); - - fprintf(rf, "\n# Open conversation dialog tabs.\n"); - fprintf(rf, "# List of conversation names, e.g. \"TCP\", \"IPv6\".\n"); - string_list = join_string_list(recent.conversation_tabs); - fprintf(rf, RECENT_GUI_CONVERSATION_TABS ": %s\n", string_list); - g_free(string_list); - - fprintf(rf, "\n# Open endpoint dialog tabs.\n"); - fprintf(rf, "# List of endpoint names, e.g. \"TCP\", \"IPv6\".\n"); - string_list = join_string_list(recent.endpoint_tabs); - fprintf(rf, RECENT_GUI_ENDPOINT_TABS ": %s\n", string_list); - g_free(string_list); - - write_recent_boolean(rf, "For RLC stats, whether to use RLC PDUs found inside MAC frames", - RECENT_GUI_RLC_PDUS_FROM_MAC_FRAMES, - recent.gui_rlc_use_pdus_from_mac); - - if (get_last_open_dir() != NULL) { - fprintf(rf, "\n# Last directory navigated to in File Open dialog.\n"); - fprintf(rf, RECENT_GUI_FILEOPEN_REMEMBERED_DIR ": %s\n", get_last_open_dir()); - } - - fprintf(rf, "\n# Additional Toolbars shown\n"); - fprintf(rf, "# List of additional toolbars to show.\n"); - string_list = join_string_list(recent.gui_additional_toolbars); - fprintf(rf, RECENT_GUI_TOOLBAR_SHOW ": %s\n", string_list); - g_free(string_list); - - fprintf(rf, "\n# Interface Toolbars show.\n"); - fprintf(rf, "# List of interface toolbars to show.\n"); - string_list = join_string_list(recent.interface_toolbars); - fprintf(rf, RECENT_GUI_INTERFACE_TOOLBAR_SHOW ": %s\n", string_list); - g_free(string_list); - - fclose(rf); - - /* XXX - catch I/O errors (e.g. "ran out of disk space") and return - an error indication, or maybe write to a new recent file and - rename that file on top of the old one only if there are not I/O - errors. */ - return TRUE; + write_recent_boolean(rf, "Packet list show (hide)", + RECENT_KEY_PACKET_LIST_SHOW, + recent.packet_list_show); + + write_recent_boolean(rf, "Tree view show (hide)", + RECENT_KEY_TREE_VIEW_SHOW, + recent.tree_view_show); + + write_recent_boolean(rf, "Byte view show (hide)", + RECENT_KEY_BYTE_VIEW_SHOW, + recent.byte_view_show); + + write_recent_boolean(rf, "Statusbar show (hide)", + RECENT_KEY_STATUSBAR_SHOW, + recent.statusbar_show); + + write_recent_boolean(rf, "Packet list colorize (hide)", + RECENT_KEY_PACKET_LIST_COLORIZE, + recent.packet_list_colorize); + + write_recent_enum(rf, "Timestamp display format", + RECENT_GUI_TIME_FORMAT, ts_type_values, + recent.gui_time_format); + + write_recent_enum(rf, "Timestamp display precision", + RECENT_GUI_TIME_PRECISION, ts_precision_values, + recent.gui_time_precision); + + write_recent_enum(rf, "Seconds display format", + RECENT_GUI_SECONDS_FORMAT, ts_seconds_values, + recent.gui_seconds_format); + + fprintf(rf, "\n# Zoom level.\n"); + fprintf(rf, "# A decimal number.\n"); + fprintf(rf, RECENT_GUI_ZOOM_LEVEL ": %d\n", + recent.gui_zoom_level); + + fprintf(rf, "\n# Bytes view.\n"); + fprintf(rf, "# A decimal number.\n"); + fprintf(rf, RECENT_GUI_BYTES_VIEW ": %d\n", + recent.gui_bytes_view); + + fprintf(rf, "\n# Main window upper (or leftmost) pane size.\n"); + fprintf(rf, "# Decimal number.\n"); + if (recent.gui_geometry_main_upper_pane != 0) { + fprintf(rf, RECENT_GUI_GEOMETRY_MAIN_UPPER_PANE ": %d\n", + recent.gui_geometry_main_upper_pane); + } + fprintf(rf, "\n# Main window middle pane size.\n"); + fprintf(rf, "# Decimal number.\n"); + if (recent.gui_geometry_main_lower_pane != 0) { + fprintf(rf, RECENT_GUI_GEOMETRY_MAIN_LOWER_PANE ": %d\n", + recent.gui_geometry_main_lower_pane); + } + + fprintf(rf, "\n# Packet list column pixel widths.\n"); + fprintf(rf, "# Each pair of strings consists of a column format and its pixel width.\n"); + packet_list_recent_write_all(rf); + + fprintf(rf, "\n# Open conversation dialog tabs.\n"); + fprintf(rf, "# List of conversation names, e.g. \"TCP\", \"IPv6\".\n"); + string_list = join_string_list(recent.conversation_tabs); + fprintf(rf, RECENT_GUI_CONVERSATION_TABS ": %s\n", string_list); + g_free(string_list); + + fprintf(rf, "\n# Open endpoint dialog tabs.\n"); + fprintf(rf, "# List of endpoint names, e.g. \"TCP\", \"IPv6\".\n"); + string_list = join_string_list(recent.endpoint_tabs); + fprintf(rf, RECENT_GUI_ENDPOINT_TABS ": %s\n", string_list); + g_free(string_list); + + write_recent_boolean(rf, "For RLC stats, whether to use RLC PDUs found inside MAC frames", + RECENT_GUI_RLC_PDUS_FROM_MAC_FRAMES, + recent.gui_rlc_use_pdus_from_mac); + + if (get_last_open_dir() != NULL) { + fprintf(rf, "\n# Last directory navigated to in File Open dialog.\n"); + fprintf(rf, RECENT_GUI_FILEOPEN_REMEMBERED_DIR ": %s\n", get_last_open_dir()); + } + + fprintf(rf, "\n# Additional Toolbars shown\n"); + fprintf(rf, "# List of additional toolbars to show.\n"); + string_list = join_string_list(recent.gui_additional_toolbars); + fprintf(rf, RECENT_GUI_TOOLBAR_SHOW ": %s\n", string_list); + g_free(string_list); + + fprintf(rf, "\n# Interface Toolbars show.\n"); + fprintf(rf, "# List of interface toolbars to show.\n"); + string_list = join_string_list(recent.interface_toolbars); + fprintf(rf, RECENT_GUI_INTERFACE_TOOLBAR_SHOW ": %s\n", string_list); + g_free(string_list); + + fclose(rf); + + /* XXX - catch I/O errors (e.g. "ran out of disk space") and return + an error indication, or maybe write to a new recent file and + rename that file on top of the old one only if there are not I/O + errors. */ + return TRUE; } /* set one user's recent common file key/value pair */ @@ -889,90 +878,90 @@ read_set_recent_common_pair_static(gchar *key, const gchar *value, void *private_data _U_, gboolean return_range_errors _U_) { - long num; - char *p; - - if (strcmp(key, RECENT_GUI_GEOMETRY_MAIN_MAXIMIZED) == 0) { - parse_recent_boolean(value, &recent.gui_geometry_main_maximized); - } else if (strcmp(key, RECENT_GUI_GEOMETRY_MAIN_X) == 0) { - num = strtol(value, &p, 0); - if (p == value || *p != '\0') - return PREFS_SET_SYNTAX_ERR; /* number was bad */ - recent.gui_geometry_main_x = (gint)num; - } else if (strcmp(key, RECENT_GUI_GEOMETRY_MAIN_Y) == 0) { - num = strtol(value, &p, 0); - if (p == value || *p != '\0') - return PREFS_SET_SYNTAX_ERR; /* number was bad */ - recent.gui_geometry_main_y = (gint)num; - } else if (strcmp(key, RECENT_GUI_GTK_GEOMETRY_MAIN_X) == 0) { - num = strtol(value, &p, 0); - if (p == value || *p != '\0') - return PREFS_SET_SYNTAX_ERR; /* number was bad */ - recent.gui_gtk_geometry_main_x = (gint)num; - } else if (strcmp(key, RECENT_GUI_GTK_GEOMETRY_MAIN_Y) == 0) { - num = strtol(value, &p, 0); - if (p == value || *p != '\0') - return PREFS_SET_SYNTAX_ERR; /* number was bad */ - recent.gui_gtk_geometry_main_y = (gint)num; - } else if (strcmp(key, RECENT_GUI_GEOMETRY_MAIN_WIDTH) == 0) { - num = strtol(value, &p, 0); - if (p == value || *p != '\0') - return PREFS_SET_SYNTAX_ERR; /* number was bad */ - if (num <= 0) - return PREFS_SET_SYNTAX_ERR; /* number must be positive */ - recent.gui_geometry_main_width = (gint)num; - } else if (strcmp(key, RECENT_GUI_GEOMETRY_MAIN_HEIGHT) == 0) { - num = strtol(value, &p, 0); - if (p == value || *p != '\0') - return PREFS_SET_SYNTAX_ERR; /* number was bad */ - if (num <= 0) - return PREFS_SET_SYNTAX_ERR; /* number must be positive */ - recent.gui_geometry_main_height = (gint)num; - } else if (strcmp(key, RECENT_GUI_GEOMETRY_STATUS_PANE_RIGHT) == 0) { - num = strtol(value, &p, 0); - if (p == value || *p != '\0') - return PREFS_SET_SYNTAX_ERR; /* number was bad */ - if (num <= 0) - return PREFS_SET_SYNTAX_ERR; /* number must be positive */ - recent.gui_geometry_status_pane_right = (gint)num; - recent.has_gui_geometry_status_pane = TRUE; - } else if (strcmp(key, RECENT_GUI_GEOMETRY_STATUS_PANE_LEFT) == 0) { - num = strtol(value, &p, 0); - if (p == value || *p != '\0') - return PREFS_SET_SYNTAX_ERR; /* number was bad */ - if (num <= 0) - return PREFS_SET_SYNTAX_ERR; /* number must be positive */ - recent.gui_geometry_status_pane_left = (gint)num; - recent.has_gui_geometry_status_pane = TRUE; - } else if (strcmp(key, RECENT_LAST_USED_PROFILE) == 0) { - if ((strcmp(value, DEFAULT_PROFILE) != 0) && profile_exists (value, FALSE)) { - set_profile_name (value); - } - } else if (strcmp(key, RECENT_GUI_GEOMETRY_WLAN_STATS_PANE) == 0) { - num = strtol(value, &p, 0); - if (p == value || *p != '\0') - return PREFS_SET_SYNTAX_ERR; /* number was bad */ - if (num <= 0) - return PREFS_SET_SYNTAX_ERR; /* number must be positive */ - recent.gui_geometry_wlan_stats_pane = (gint)num; - } else if (strncmp(key, RECENT_GUI_GEOMETRY, sizeof(RECENT_GUI_GEOMETRY)-1) == 0) { - /* now have something like "gui.geom.main.x", split it into win and sub_key */ - char *win = &key[sizeof(RECENT_GUI_GEOMETRY)-1]; - char *sub_key = strchr(win, '.'); - if (sub_key) { - *sub_key = '\0'; - sub_key++; - window_geom_recent_read_pair(win, sub_key, value); + long num; + char *p; + + if (strcmp(key, RECENT_GUI_GEOMETRY_MAIN_MAXIMIZED) == 0) { + parse_recent_boolean(value, &recent.gui_geometry_main_maximized); + } else if (strcmp(key, RECENT_GUI_GEOMETRY_MAIN_X) == 0) { + num = strtol(value, &p, 0); + if (p == value || *p != '\0') + return PREFS_SET_SYNTAX_ERR; /* number was bad */ + recent.gui_geometry_main_x = (gint)num; + } else if (strcmp(key, RECENT_GUI_GEOMETRY_MAIN_Y) == 0) { + num = strtol(value, &p, 0); + if (p == value || *p != '\0') + return PREFS_SET_SYNTAX_ERR; /* number was bad */ + recent.gui_geometry_main_y = (gint)num; + } else if (strcmp(key, RECENT_GUI_GTK_GEOMETRY_MAIN_X) == 0) { + num = strtol(value, &p, 0); + if (p == value || *p != '\0') + return PREFS_SET_SYNTAX_ERR; /* number was bad */ + recent.gui_gtk_geometry_main_x = (gint)num; + } else if (strcmp(key, RECENT_GUI_GTK_GEOMETRY_MAIN_Y) == 0) { + num = strtol(value, &p, 0); + if (p == value || *p != '\0') + return PREFS_SET_SYNTAX_ERR; /* number was bad */ + recent.gui_gtk_geometry_main_y = (gint)num; + } else if (strcmp(key, RECENT_GUI_GEOMETRY_MAIN_WIDTH) == 0) { + num = strtol(value, &p, 0); + if (p == value || *p != '\0') + return PREFS_SET_SYNTAX_ERR; /* number was bad */ + if (num <= 0) + return PREFS_SET_SYNTAX_ERR; /* number must be positive */ + recent.gui_geometry_main_width = (gint)num; + } else if (strcmp(key, RECENT_GUI_GEOMETRY_MAIN_HEIGHT) == 0) { + num = strtol(value, &p, 0); + if (p == value || *p != '\0') + return PREFS_SET_SYNTAX_ERR; /* number was bad */ + if (num <= 0) + return PREFS_SET_SYNTAX_ERR; /* number must be positive */ + recent.gui_geometry_main_height = (gint)num; + } else if (strcmp(key, RECENT_GUI_GEOMETRY_STATUS_PANE_RIGHT) == 0) { + num = strtol(value, &p, 0); + if (p == value || *p != '\0') + return PREFS_SET_SYNTAX_ERR; /* number was bad */ + if (num <= 0) + return PREFS_SET_SYNTAX_ERR; /* number must be positive */ + recent.gui_geometry_status_pane_right = (gint)num; + recent.has_gui_geometry_status_pane = TRUE; + } else if (strcmp(key, RECENT_GUI_GEOMETRY_STATUS_PANE_LEFT) == 0) { + num = strtol(value, &p, 0); + if (p == value || *p != '\0') + return PREFS_SET_SYNTAX_ERR; /* number was bad */ + if (num <= 0) + return PREFS_SET_SYNTAX_ERR; /* number must be positive */ + recent.gui_geometry_status_pane_left = (gint)num; + recent.has_gui_geometry_status_pane = TRUE; + } else if (strcmp(key, RECENT_LAST_USED_PROFILE) == 0) { + if ((strcmp(value, DEFAULT_PROFILE) != 0) && profile_exists (value, FALSE)) { + set_profile_name (value); + } + } else if (strcmp(key, RECENT_GUI_GEOMETRY_WLAN_STATS_PANE) == 0) { + num = strtol(value, &p, 0); + if (p == value || *p != '\0') + return PREFS_SET_SYNTAX_ERR; /* number was bad */ + if (num <= 0) + return PREFS_SET_SYNTAX_ERR; /* number must be positive */ + recent.gui_geometry_wlan_stats_pane = (gint)num; + } else if (strncmp(key, RECENT_GUI_GEOMETRY, sizeof(RECENT_GUI_GEOMETRY)-1) == 0) { + /* now have something like "gui.geom.main.x", split it into win and sub_key */ + char *win = &key[sizeof(RECENT_GUI_GEOMETRY)-1]; + char *sub_key = strchr(win, '.'); + if (sub_key) { + *sub_key = '\0'; + sub_key++; + window_geom_recent_read_pair(win, sub_key, value); + } + } else if (strcmp(key, RECENT_KEY_PRIVS_WARN_IF_ELEVATED) == 0) { + parse_recent_boolean(value, &recent.privs_warn_if_elevated); + } else if (strcmp(key, RECENT_KEY_PRIVS_WARN_IF_NO_NPF) == 0) { + parse_recent_boolean(value, &recent.privs_warn_if_no_npf); + } else if (strcmp(key, RECENT_GUI_CUSTOM_COLORS) == 0) { + recent.custom_colors = prefs_get_string_list(value); } - } else if (strcmp(key, RECENT_KEY_PRIVS_WARN_IF_ELEVATED) == 0) { - parse_recent_boolean(value, &recent.privs_warn_if_elevated); - } else if (strcmp(key, RECENT_KEY_PRIVS_WARN_IF_NO_NPF) == 0) { - parse_recent_boolean(value, &recent.privs_warn_if_no_npf); - } else if (strcmp(key, RECENT_GUI_CUSTOM_COLORS) == 0) { - recent.custom_colors = prefs_get_string_list(value); - } - - return PREFS_SET_OK; + + return PREFS_SET_OK; } /* set one user's recent file key/value pair */ @@ -981,157 +970,157 @@ read_set_recent_pair_static(gchar *key, const gchar *value, void *private_data _U_, gboolean return_range_errors _U_) { - long num; - char *p; - GList *col_l, *col_l_elt; - col_width_data *cfmt; - const gchar *cust_format = col_format_to_string(COL_CUSTOM); - int cust_format_len = (int) strlen(cust_format); - - if (strcmp(key, RECENT_KEY_MAIN_TOOLBAR_SHOW) == 0) { - parse_recent_boolean(value, &recent.main_toolbar_show); - } else if (strcmp(key, RECENT_KEY_FILTER_TOOLBAR_SHOW) == 0) { - parse_recent_boolean(value, &recent.filter_toolbar_show); - /* check both the old and the new keyword */ - } else if (strcmp(key, RECENT_KEY_WIRELESS_TOOLBAR_SHOW) == 0 || (strcmp(key, "gui.airpcap_toolbar_show") == 0)) { - parse_recent_boolean(value, &recent.wireless_toolbar_show); - } else if (strcmp(key, RECENT_KEY_DRIVER_CHECK_SHOW) == 0) { - parse_recent_boolean(value, &recent.airpcap_driver_check_show); - } else if (strcmp(key, RECENT_KEY_PACKET_LIST_SHOW) == 0) { - parse_recent_boolean(value, &recent.packet_list_show); - } else if (strcmp(key, RECENT_KEY_TREE_VIEW_SHOW) == 0) { - parse_recent_boolean(value, &recent.tree_view_show); - } else if (strcmp(key, RECENT_KEY_BYTE_VIEW_SHOW) == 0) { - parse_recent_boolean(value, &recent.byte_view_show); - } else if (strcmp(key, RECENT_KEY_STATUSBAR_SHOW) == 0) { - parse_recent_boolean(value, &recent.statusbar_show); - } else if (strcmp(key, RECENT_KEY_PACKET_LIST_COLORIZE) == 0) { - parse_recent_boolean(value, &recent.packet_list_colorize); - } else if (strcmp(key, RECENT_GUI_TIME_FORMAT) == 0) { - recent.gui_time_format = - (ts_type)str_to_val(value, ts_type_values, TS_RELATIVE); - } else if (strcmp(key, RECENT_GUI_TIME_PRECISION) == 0) { - recent.gui_time_precision = - (ts_precision)str_to_val(value, ts_precision_values, TS_PREC_AUTO); - } else if (strcmp(key, RECENT_GUI_SECONDS_FORMAT) == 0) { - recent.gui_seconds_format = - (ts_seconds_type)str_to_val(value, ts_seconds_values, TS_SECONDS_DEFAULT); - } else if (strcmp(key, RECENT_GUI_ZOOM_LEVEL) == 0) { - num = strtol(value, &p, 0); - if (p == value || *p != '\0') - return PREFS_SET_SYNTAX_ERR; /* number was bad */ - recent.gui_zoom_level = (gint)num; - } else if (strcmp(key, RECENT_GUI_BYTES_VIEW) == 0) { - num = strtol(value, &p, 0); - if (p == value || *p != '\0') - return PREFS_SET_SYNTAX_ERR; /* number was bad */ - recent.gui_bytes_view = (bytes_view_type)num; - } else if (strcmp(key, RECENT_GUI_GEOMETRY_MAIN_MAXIMIZED) == 0) { - parse_recent_boolean(value, &recent.gui_geometry_main_maximized); - } else if (strcmp(key, RECENT_GUI_GEOMETRY_MAIN_UPPER_PANE) == 0) { - num = strtol(value, &p, 0); - if (p == value || *p != '\0') - return PREFS_SET_SYNTAX_ERR; /* number was bad */ - if (num <= 0) - return PREFS_SET_SYNTAX_ERR; /* number must be positive */ - recent.gui_geometry_main_upper_pane = (gint)num; - recent.has_gui_geometry_main_upper_pane = TRUE; - } else if (strcmp(key, RECENT_GUI_GEOMETRY_MAIN_LOWER_PANE) == 0) { - num = strtol(value, &p, 0); - if (p == value || *p != '\0') - return PREFS_SET_SYNTAX_ERR; /* number was bad */ - if (num <= 0) - return PREFS_SET_SYNTAX_ERR; /* number must be positive */ - recent.gui_geometry_main_lower_pane = (gint)num; - recent.has_gui_geometry_main_lower_pane = TRUE; - } else if (strcmp(key, RECENT_GUI_CONVERSATION_TABS) == 0) { - recent.conversation_tabs = prefs_get_string_list(value); - } else if (strcmp(key, RECENT_GUI_ENDPOINT_TABS) == 0) { - recent.endpoint_tabs = prefs_get_string_list(value); - } else if (strcmp(key, RECENT_GUI_RLC_PDUS_FROM_MAC_FRAMES) == 0) { - parse_recent_boolean(value, &recent.gui_rlc_use_pdus_from_mac); - } else if (strcmp(key, RECENT_KEY_COL_WIDTH) == 0) { - col_l = prefs_get_string_list(value); - if (col_l == NULL) - return PREFS_SET_SYNTAX_ERR; - if ((g_list_length(col_l) % 2) != 0) { - /* A title didn't have a matching width. */ - prefs_clear_string_list(col_l); - return PREFS_SET_SYNTAX_ERR; - } - /* Check to make sure all column formats are valid. */ - col_l_elt = g_list_first(col_l); - while (col_l_elt) { - /* Make sure the format isn't empty. */ - if (strcmp((const char *)col_l_elt->data, "") == 0) { - /* It is. */ - prefs_clear_string_list(col_l); - return PREFS_SET_SYNTAX_ERR; - } - - /* Check the format. */ - if (strncmp((const char *)col_l_elt->data, cust_format, cust_format_len) != 0) { - if (get_column_format_from_str((const gchar *)col_l_elt->data) == -1) { - /* It's not a valid column format. */ - prefs_clear_string_list(col_l); - return PREFS_SET_SYNTAX_ERR; + long num; + char *p; + GList *col_l, *col_l_elt; + col_width_data *cfmt; + const gchar *cust_format = col_format_to_string(COL_CUSTOM); + int cust_format_len = (int) strlen(cust_format); + + if (strcmp(key, RECENT_KEY_MAIN_TOOLBAR_SHOW) == 0) { + parse_recent_boolean(value, &recent.main_toolbar_show); + } else if (strcmp(key, RECENT_KEY_FILTER_TOOLBAR_SHOW) == 0) { + parse_recent_boolean(value, &recent.filter_toolbar_show); + /* check both the old and the new keyword */ + } else if (strcmp(key, RECENT_KEY_WIRELESS_TOOLBAR_SHOW) == 0 || (strcmp(key, "gui.airpcap_toolbar_show") == 0)) { + parse_recent_boolean(value, &recent.wireless_toolbar_show); + } else if (strcmp(key, RECENT_KEY_DRIVER_CHECK_SHOW) == 0) { + parse_recent_boolean(value, &recent.airpcap_driver_check_show); + } else if (strcmp(key, RECENT_KEY_PACKET_LIST_SHOW) == 0) { + parse_recent_boolean(value, &recent.packet_list_show); + } else if (strcmp(key, RECENT_KEY_TREE_VIEW_SHOW) == 0) { + parse_recent_boolean(value, &recent.tree_view_show); + } else if (strcmp(key, RECENT_KEY_BYTE_VIEW_SHOW) == 0) { + parse_recent_boolean(value, &recent.byte_view_show); + } else if (strcmp(key, RECENT_KEY_STATUSBAR_SHOW) == 0) { + parse_recent_boolean(value, &recent.statusbar_show); + } else if (strcmp(key, RECENT_KEY_PACKET_LIST_COLORIZE) == 0) { + parse_recent_boolean(value, &recent.packet_list_colorize); + } else if (strcmp(key, RECENT_GUI_TIME_FORMAT) == 0) { + recent.gui_time_format = + (ts_type)str_to_val(value, ts_type_values, TS_RELATIVE); + } else if (strcmp(key, RECENT_GUI_TIME_PRECISION) == 0) { + recent.gui_time_precision = + (ts_precision)str_to_val(value, ts_precision_values, TS_PREC_AUTO); + } else if (strcmp(key, RECENT_GUI_SECONDS_FORMAT) == 0) { + recent.gui_seconds_format = + (ts_seconds_type)str_to_val(value, ts_seconds_values, TS_SECONDS_DEFAULT); + } else if (strcmp(key, RECENT_GUI_ZOOM_LEVEL) == 0) { + num = strtol(value, &p, 0); + if (p == value || *p != '\0') + return PREFS_SET_SYNTAX_ERR; /* number was bad */ + recent.gui_zoom_level = (gint)num; + } else if (strcmp(key, RECENT_GUI_BYTES_VIEW) == 0) { + num = strtol(value, &p, 0); + if (p == value || *p != '\0') + return PREFS_SET_SYNTAX_ERR; /* number was bad */ + recent.gui_bytes_view = (bytes_view_type)num; + } else if (strcmp(key, RECENT_GUI_GEOMETRY_MAIN_MAXIMIZED) == 0) { + parse_recent_boolean(value, &recent.gui_geometry_main_maximized); + } else if (strcmp(key, RECENT_GUI_GEOMETRY_MAIN_UPPER_PANE) == 0) { + num = strtol(value, &p, 0); + if (p == value || *p != '\0') + return PREFS_SET_SYNTAX_ERR; /* number was bad */ + if (num <= 0) + return PREFS_SET_SYNTAX_ERR; /* number must be positive */ + recent.gui_geometry_main_upper_pane = (gint)num; + recent.has_gui_geometry_main_upper_pane = TRUE; + } else if (strcmp(key, RECENT_GUI_GEOMETRY_MAIN_LOWER_PANE) == 0) { + num = strtol(value, &p, 0); + if (p == value || *p != '\0') + return PREFS_SET_SYNTAX_ERR; /* number was bad */ + if (num <= 0) + return PREFS_SET_SYNTAX_ERR; /* number must be positive */ + recent.gui_geometry_main_lower_pane = (gint)num; + recent.has_gui_geometry_main_lower_pane = TRUE; + } else if (strcmp(key, RECENT_GUI_CONVERSATION_TABS) == 0) { + recent.conversation_tabs = prefs_get_string_list(value); + } else if (strcmp(key, RECENT_GUI_ENDPOINT_TABS) == 0) { + recent.endpoint_tabs = prefs_get_string_list(value); + } else if (strcmp(key, RECENT_GUI_RLC_PDUS_FROM_MAC_FRAMES) == 0) { + parse_recent_boolean(value, &recent.gui_rlc_use_pdus_from_mac); + } else if (strcmp(key, RECENT_KEY_COL_WIDTH) == 0) { + col_l = prefs_get_string_list(value); + if (col_l == NULL) + return PREFS_SET_SYNTAX_ERR; + if ((g_list_length(col_l) % 2) != 0) { + /* A title didn't have a matching width. */ + prefs_clear_string_list(col_l); + return PREFS_SET_SYNTAX_ERR; } - } - - /* Go past the format. */ - col_l_elt = col_l_elt->next; - - /* Go past the width. */ - col_l_elt = col_l_elt->next; - } - free_col_width_info(&recent); - recent.col_width_list = NULL; - col_l_elt = g_list_first(col_l); - while (col_l_elt) { - gchar *fmt = g_strdup((const gchar *)col_l_elt->data); - cfmt = (col_width_data *) g_malloc(sizeof(col_width_data)); - if (strncmp(fmt, cust_format, cust_format_len) != 0) { - cfmt->cfmt = get_column_format_from_str(fmt); - cfmt->cfield = NULL; - } else { - cfmt->cfmt = COL_CUSTOM; - cfmt->cfield = g_strdup(&fmt[cust_format_len+1]); /* add 1 for ':' */ - } - g_free (fmt); - if (cfmt->cfmt == -1) { - g_free(cfmt->cfield); - g_free(cfmt); - return PREFS_SET_SYNTAX_ERR; /* string was bad */ - } - - col_l_elt = col_l_elt->next; - cfmt->width = (gint)strtol((const char *)col_l_elt->data, &p, 0); - if (p == col_l_elt->data || (*p != '\0' && *p != ':')) { - g_free(cfmt->cfield); - g_free(cfmt); - return PREFS_SET_SYNTAX_ERR; /* number was bad */ - } - - if (*p == ':') { - cfmt->xalign = *(++p); - } else { - cfmt->xalign = COLUMN_XALIGN_DEFAULT; - } - - col_l_elt = col_l_elt->next; - recent.col_width_list = g_list_append(recent.col_width_list, cfmt); + /* Check to make sure all column formats are valid. */ + col_l_elt = g_list_first(col_l); + while (col_l_elt) { + /* Make sure the format isn't empty. */ + if (strcmp((const char *)col_l_elt->data, "") == 0) { + /* It is. */ + prefs_clear_string_list(col_l); + return PREFS_SET_SYNTAX_ERR; + } + + /* Check the format. */ + if (strncmp((const char *)col_l_elt->data, cust_format, cust_format_len) != 0) { + if (get_column_format_from_str((const gchar *)col_l_elt->data) == -1) { + /* It's not a valid column format. */ + prefs_clear_string_list(col_l); + return PREFS_SET_SYNTAX_ERR; + } + } + + /* Go past the format. */ + col_l_elt = col_l_elt->next; + + /* Go past the width. */ + col_l_elt = col_l_elt->next; + } + free_col_width_info(&recent); + recent.col_width_list = NULL; + col_l_elt = g_list_first(col_l); + while (col_l_elt) { + gchar *fmt = g_strdup((const gchar *)col_l_elt->data); + cfmt = (col_width_data *) g_malloc(sizeof(col_width_data)); + if (strncmp(fmt, cust_format, cust_format_len) != 0) { + cfmt->cfmt = get_column_format_from_str(fmt); + cfmt->cfield = NULL; + } else { + cfmt->cfmt = COL_CUSTOM; + cfmt->cfield = g_strdup(&fmt[cust_format_len+1]); /* add 1 for ':' */ + } + g_free (fmt); + if (cfmt->cfmt == -1) { + g_free(cfmt->cfield); + g_free(cfmt); + return PREFS_SET_SYNTAX_ERR; /* string was bad */ + } + + col_l_elt = col_l_elt->next; + cfmt->width = (gint)strtol((const char *)col_l_elt->data, &p, 0); + if (p == col_l_elt->data || (*p != '\0' && *p != ':')) { + g_free(cfmt->cfield); + g_free(cfmt); + return PREFS_SET_SYNTAX_ERR; /* number was bad */ + } + + if (*p == ':') { + cfmt->xalign = *(++p); + } else { + cfmt->xalign = COLUMN_XALIGN_DEFAULT; + } + + col_l_elt = col_l_elt->next; + recent.col_width_list = g_list_append(recent.col_width_list, cfmt); + } + prefs_clear_string_list(col_l); + } else if (strcmp(key, RECENT_GUI_FILEOPEN_REMEMBERED_DIR) == 0) { + g_free(recent.gui_fileopen_remembered_dir); + recent.gui_fileopen_remembered_dir = g_strdup(value); + } else if (strcmp(key, RECENT_GUI_TOOLBAR_SHOW) == 0) { + recent.gui_additional_toolbars = prefs_get_string_list(value); + } else if (strcmp(key, RECENT_GUI_INTERFACE_TOOLBAR_SHOW) == 0) { + recent.interface_toolbars = prefs_get_string_list(value); } - prefs_clear_string_list(col_l); - } else if (strcmp(key, RECENT_GUI_FILEOPEN_REMEMBERED_DIR) == 0) { - g_free(recent.gui_fileopen_remembered_dir); - recent.gui_fileopen_remembered_dir = g_strdup(value); - } else if (strcmp(key, RECENT_GUI_TOOLBAR_SHOW) == 0) { - recent.gui_additional_toolbars = prefs_get_string_list(value); - } else if (strcmp(key, RECENT_GUI_INTERFACE_TOOLBAR_SHOW) == 0) { - recent.interface_toolbars = prefs_get_string_list(value); - } - - return PREFS_SET_OK; + + return PREFS_SET_OK; } @@ -1141,25 +1130,25 @@ read_set_recent_pair_dynamic(gchar *key, const gchar *value, void *private_data _U_, gboolean return_range_errors _U_) { - if (!g_utf8_validate(value, -1, NULL)) { - return PREFS_SET_SYNTAX_ERR; - } - if (strcmp(key, RECENT_KEY_CAPTURE_FILE) == 0) { - add_menu_recent_capture_file(value); - } else if (strcmp(key, RECENT_KEY_DISPLAY_FILTER) == 0) { - dfilter_combo_add_recent(value); - } else if (strcmp(key, RECENT_KEY_CAPTURE_FILTER) == 0) { - recent_add_cfilter(NULL, value); - } else if (g_str_has_prefix(key, RECENT_KEY_CAPTURE_FILTER ".")) { - /* strrchr() can't fail - string has a prefix that ends with a "." */ - recent_add_cfilter(strrchr(key, '.') + 1, value); + if (!g_utf8_validate(value, -1, NULL)) { + return PREFS_SET_SYNTAX_ERR; + } + if (strcmp(key, RECENT_KEY_CAPTURE_FILE) == 0) { + add_menu_recent_capture_file(value); + } else if (strcmp(key, RECENT_KEY_DISPLAY_FILTER) == 0) { + dfilter_combo_add_recent(value); + } else if (strcmp(key, RECENT_KEY_CAPTURE_FILTER) == 0) { + recent_add_cfilter(NULL, value); + } else if (g_str_has_prefix(key, RECENT_KEY_CAPTURE_FILTER ".")) { + /* strrchr() can't fail - string has a prefix that ends with a "." */ + recent_add_cfilter(strrchr(key, '.') + 1, value); #ifdef HAVE_PCAP_REMOTE - } else if (strcmp(key, RECENT_KEY_REMOTE_HOST) == 0) { - capture_remote_combo_add_recent(value); + } else if (strcmp(key, RECENT_KEY_REMOTE_HOST) == 0) { + capture_remote_combo_add_recent(value); #endif - } + } - return PREFS_SET_OK; + return PREFS_SET_OK; } @@ -1172,36 +1161,36 @@ read_set_recent_pair_dynamic(gchar *key, const gchar *value, int recent_set_arg(char *prefarg) { - gchar *p, *colonp; - int ret; - - colonp = strchr(prefarg, ':'); - if (colonp == NULL) - return PREFS_SET_SYNTAX_ERR; - - p = colonp; - *p++ = '\0'; - - /* - * Skip over any white space (there probably won't be any, but - * as we allow it in the preferences file, we might as well - * allow it here). - */ - while (g_ascii_isspace(*p)) - p++; - if (*p == '\0') { + gchar *p, *colonp; + int ret; + + colonp = strchr(prefarg, ':'); + if (colonp == NULL) + return PREFS_SET_SYNTAX_ERR; + + p = colonp; + *p++ = '\0'; + /* - * Put the colon back, so if our caller uses, in an - * error message, the string they passed us, the message - * looks correct. + * Skip over any white space (there probably won't be any, but + * as we allow it in the preferences file, we might as well + * allow it here). */ - *colonp = ':'; - return PREFS_SET_SYNTAX_ERR; - } + while (g_ascii_isspace(*p)) + p++; + if (*p == '\0') { + /* + * Put the colon back, so if our caller uses, in an + * error message, the string they passed us, the message + * looks correct. + */ + *colonp = ':'; + return PREFS_SET_SYNTAX_ERR; + } - ret = read_set_recent_pair_static(prefarg, p, NULL, TRUE); - *colonp = ':'; /* put the colon back */ - return ret; + ret = read_set_recent_pair_static(prefarg, p, NULL, TRUE); + *colonp = ':'; /* put the colon back */ + return ret; } @@ -1209,50 +1198,50 @@ recent_set_arg(char *prefarg) gboolean recent_read_static(char **rf_path_return, int *rf_errno_return) { - char *rf_path; - FILE *rf; - - /* set defaults */ - recent.gui_geometry_main_x = 20; - recent.gui_geometry_main_y = 20; - recent.gui_gtk_geometry_main_x = 20; - recent.gui_gtk_geometry_main_y = 20; - recent.gui_geometry_main_width = DEF_WIDTH; - recent.gui_geometry_main_height = DEF_HEIGHT; - recent.gui_geometry_main_maximized= FALSE; - - recent.gui_geometry_status_pane_left = (DEF_WIDTH/3); - recent.gui_geometry_status_pane_right = (DEF_WIDTH/3); - recent.gui_geometry_wlan_stats_pane = 200; + char *rf_path; + FILE *rf; - recent.privs_warn_if_elevated = TRUE; - recent.privs_warn_if_no_npf = TRUE; + /* set defaults */ + recent.gui_geometry_main_x = 20; + recent.gui_geometry_main_y = 20; + recent.gui_gtk_geometry_main_x = 20; + recent.gui_gtk_geometry_main_y = 20; + recent.gui_geometry_main_width = DEF_WIDTH; + recent.gui_geometry_main_height = DEF_HEIGHT; + recent.gui_geometry_main_maximized= FALSE; - recent.col_width_list = NULL; - recent.gui_fileopen_remembered_dir = NULL; + recent.gui_geometry_status_pane_left = (DEF_WIDTH/3); + recent.gui_geometry_status_pane_right = (DEF_WIDTH/3); + recent.gui_geometry_wlan_stats_pane = 200; - /* Construct the pathname of the user's recent common file. */ - rf_path = get_persconffile_path(RECENT_COMMON_FILE_NAME, FALSE); + recent.privs_warn_if_elevated = TRUE; + recent.privs_warn_if_no_npf = TRUE; - /* Read the user's recent common file, if it exists. */ - *rf_path_return = NULL; - if ((rf = ws_fopen(rf_path, "r")) != NULL) { - /* We succeeded in opening it; read it. */ - read_prefs_file(rf_path, rf, read_set_recent_common_pair_static, NULL); + recent.col_width_list = NULL; + recent.gui_fileopen_remembered_dir = NULL; - fclose(rf); - } else { - /* We failed to open it. If we failed for some reason other than - "it doesn't exist", return the errno and the pathname, so our - caller can report the error. */ - if (errno != ENOENT) { - *rf_errno_return = errno; - *rf_path_return = rf_path; - return FALSE; + /* Construct the pathname of the user's recent common file. */ + rf_path = get_persconffile_path(RECENT_COMMON_FILE_NAME, FALSE); + + /* Read the user's recent common file, if it exists. */ + *rf_path_return = NULL; + if ((rf = ws_fopen(rf_path, "r")) != NULL) { + /* We succeeded in opening it; read it. */ + read_prefs_file(rf_path, rf, read_set_recent_common_pair_static, NULL); + + fclose(rf); + } else { + /* We failed to open it. If we failed for some reason other than + "it doesn't exist", return the errno and the pathname, so our + caller can report the error. */ + if (errno != ENOENT) { + *rf_errno_return = errno; + *rf_path_return = rf_path; + return FALSE; + } } - } - g_free(rf_path); - return TRUE; + g_free(rf_path); + return TRUE; } @@ -1261,287 +1250,287 @@ recent_read_static(char **rf_path_return, int *rf_errno_return) gboolean recent_read_profile_static(char **rf_path_return, int *rf_errno_return) { - char *rf_path, *rf_common_path; - FILE *rf; - - /* set defaults */ - recent.main_toolbar_show = TRUE; - recent.filter_toolbar_show = TRUE; - recent.wireless_toolbar_show = FALSE; - recent.airpcap_driver_check_show = TRUE; - recent.packet_list_show = TRUE; - recent.tree_view_show = TRUE; - recent.byte_view_show = TRUE; - recent.statusbar_show = TRUE; - recent.packet_list_colorize = TRUE; - recent.gui_time_format = TS_RELATIVE; - recent.gui_time_precision = TS_PREC_AUTO; - recent.gui_seconds_format = TS_SECONDS_DEFAULT; - recent.gui_zoom_level = 0; - recent.gui_bytes_view = BYTES_HEX; - - /* pane size of zero will autodetect */ - recent.gui_geometry_main_upper_pane = 0; - recent.gui_geometry_main_lower_pane = 0; - - recent.has_gui_geometry_main_upper_pane = TRUE; - recent.has_gui_geometry_main_lower_pane = TRUE; - recent.has_gui_geometry_status_pane = TRUE; - - if (recent.col_width_list) { - free_col_width_info(&recent); - } + char *rf_path, *rf_common_path; + FILE *rf; + + /* set defaults */ + recent.main_toolbar_show = TRUE; + recent.filter_toolbar_show = TRUE; + recent.wireless_toolbar_show = FALSE; + recent.airpcap_driver_check_show = TRUE; + recent.packet_list_show = TRUE; + recent.tree_view_show = TRUE; + recent.byte_view_show = TRUE; + recent.statusbar_show = TRUE; + recent.packet_list_colorize = TRUE; + recent.gui_time_format = TS_RELATIVE; + recent.gui_time_precision = TS_PREC_AUTO; + recent.gui_seconds_format = TS_SECONDS_DEFAULT; + recent.gui_zoom_level = 0; + recent.gui_bytes_view = BYTES_HEX; + + /* pane size of zero will autodetect */ + recent.gui_geometry_main_upper_pane = 0; + recent.gui_geometry_main_lower_pane = 0; - if (recent.gui_fileopen_remembered_dir) { - g_free (recent.gui_fileopen_remembered_dir); - recent.gui_fileopen_remembered_dir = NULL; - } - - if (recent.gui_additional_toolbars) { - g_list_free_full (recent.gui_additional_toolbars, g_free); - recent.gui_additional_toolbars = NULL; - } - - if (recent.interface_toolbars) { - g_list_free_full (recent.interface_toolbars, g_free); - recent.interface_toolbars = NULL; - } - - /* Construct the pathname of the user's profile recent file. */ - rf_path = get_persconffile_path(RECENT_FILE_NAME, TRUE); - - /* Read the user's recent file, if it exists. */ - *rf_path_return = NULL; - if ((rf = ws_fopen(rf_path, "r")) != NULL) { - /* We succeeded in opening it; read it. */ - read_prefs_file(rf_path, rf, read_set_recent_pair_static, NULL); - fclose(rf); + recent.has_gui_geometry_main_upper_pane = TRUE; + recent.has_gui_geometry_main_lower_pane = TRUE; + recent.has_gui_geometry_status_pane = TRUE; - /* XXX: The following code doesn't actually do anything since - * the "recent common file" always exists. Presumably the - * "if (!file_exists())" should actually be "if (file_exists())". - * However, I've left the code as is because this - * behaviour has existed for quite some time and I don't - * know what's supposed to happen at this point. - * ToDo: Determine if the "recent common file" should be read at this point - */ - rf_common_path = get_persconffile_path(RECENT_COMMON_FILE_NAME, FALSE); - if (!file_exists(rf_common_path)) { - /* Read older common settings from recent file */ - rf = ws_fopen(rf_path, "r"); - read_prefs_file(rf_path, rf, read_set_recent_common_pair_static, NULL); - fclose(rf); + if (recent.col_width_list) { + free_col_width_info(&recent); + } + + if (recent.gui_fileopen_remembered_dir) { + g_free (recent.gui_fileopen_remembered_dir); + recent.gui_fileopen_remembered_dir = NULL; + } + + if (recent.gui_additional_toolbars) { + g_list_free_full (recent.gui_additional_toolbars, g_free); + recent.gui_additional_toolbars = NULL; } - g_free(rf_common_path); - } else { - /* We failed to open it. If we failed for some reason other than - "it doesn't exist", return the errno and the pathname, so our - caller can report the error. */ - if (errno != ENOENT) { - *rf_errno_return = errno; - *rf_path_return = rf_path; - return FALSE; + + if (recent.interface_toolbars) { + g_list_free_full (recent.interface_toolbars, g_free); + recent.interface_toolbars = NULL; + } + + /* Construct the pathname of the user's profile recent file. */ + rf_path = get_persconffile_path(RECENT_FILE_NAME, TRUE); + + /* Read the user's recent file, if it exists. */ + *rf_path_return = NULL; + if ((rf = ws_fopen(rf_path, "r")) != NULL) { + /* We succeeded in opening it; read it. */ + read_prefs_file(rf_path, rf, read_set_recent_pair_static, NULL); + fclose(rf); + + /* XXX: The following code doesn't actually do anything since + * the "recent common file" always exists. Presumably the + * "if (!file_exists())" should actually be "if (file_exists())". + * However, I've left the code as is because this + * behaviour has existed for quite some time and I don't + * know what's supposed to happen at this point. + * ToDo: Determine if the "recent common file" should be read at this point + */ + rf_common_path = get_persconffile_path(RECENT_COMMON_FILE_NAME, FALSE); + if (!file_exists(rf_common_path)) { + /* Read older common settings from recent file */ + rf = ws_fopen(rf_path, "r"); + read_prefs_file(rf_path, rf, read_set_recent_common_pair_static, NULL); + fclose(rf); + } + g_free(rf_common_path); + } else { + /* We failed to open it. If we failed for some reason other than + "it doesn't exist", return the errno and the pathname, so our + caller can report the error. */ + if (errno != ENOENT) { + *rf_errno_return = errno; + *rf_path_return = rf_path; + return FALSE; + } } - } - g_free(rf_path); - return TRUE; + g_free(rf_path); + return TRUE; } /* opens the user's recent file and read it out */ gboolean recent_read_dynamic(char **rf_path_return, int *rf_errno_return) { - char *rf_path; - FILE *rf; - - - /* Construct the pathname of the user's recent common file. */ - rf_path = get_persconffile_path(RECENT_COMMON_FILE_NAME, FALSE); - if (!file_exists (rf_path)) { - /* Recent common file does not exist, read from default recent */ - g_free (rf_path); - rf_path = get_persconffile_path(RECENT_FILE_NAME, FALSE); - } - - /* Read the user's recent file, if it exists. */ - *rf_path_return = NULL; - if ((rf = ws_fopen(rf_path, "r")) != NULL) { - /* We succeeded in opening it; read it. */ - read_prefs_file(rf_path, rf, read_set_recent_pair_dynamic, NULL); + char *rf_path; + FILE *rf; + + + /* Construct the pathname of the user's recent common file. */ + rf_path = get_persconffile_path(RECENT_COMMON_FILE_NAME, FALSE); + if (!file_exists (rf_path)) { + /* Recent common file does not exist, read from default recent */ + g_free (rf_path); + rf_path = get_persconffile_path(RECENT_FILE_NAME, FALSE); + } + + /* Read the user's recent file, if it exists. */ + *rf_path_return = NULL; + if ((rf = ws_fopen(rf_path, "r")) != NULL) { + /* We succeeded in opening it; read it. */ + read_prefs_file(rf_path, rf, read_set_recent_pair_dynamic, NULL); #if 0 - /* set dfilter combobox to have an empty line */ - dfilter_combo_add_empty(); + /* set dfilter combobox to have an empty line */ + dfilter_combo_add_empty(); #endif - fclose(rf); - } else { - /* We failed to open it. If we failed for some reason other than - "it doesn't exist", return the errno and the pathname, so our - caller can report the error. */ - if (errno != ENOENT) { - *rf_errno_return = errno; - *rf_path_return = rf_path; - return FALSE; + fclose(rf); + } else { + /* We failed to open it. If we failed for some reason other than + "it doesn't exist", return the errno and the pathname, so our + caller can report the error. */ + if (errno != ENOENT) { + *rf_errno_return = errno; + *rf_path_return = rf_path; + return FALSE; + } } - } - g_free(rf_path); - return TRUE; + g_free(rf_path); + return TRUE; } gint recent_get_column_width(gint col) { - GList *col_l; - col_width_data *col_w; - gint cfmt; - const gchar *cfield = NULL; - - cfmt = get_column_format(col); - if (cfmt == COL_CUSTOM) { - cfield = get_column_custom_fields(col); - } - - col_l = g_list_first(recent.col_width_list); - while (col_l) { - col_w = (col_width_data *) col_l->data; - if (col_w->cfmt == cfmt) { - if (cfmt != COL_CUSTOM || strcmp (cfield, col_w->cfield) == 0) { - return col_w->width; - } + GList *col_l; + col_width_data *col_w; + gint cfmt; + const gchar *cfield = NULL; + + cfmt = get_column_format(col); + if (cfmt == COL_CUSTOM) { + cfield = get_column_custom_fields(col); } - col_l = col_l->next; - } - return -1; + col_l = g_list_first(recent.col_width_list); + while (col_l) { + col_w = (col_width_data *) col_l->data; + if (col_w->cfmt == cfmt) { + if (cfmt != COL_CUSTOM || strcmp (cfield, col_w->cfield) == 0) { + return col_w->width; + } + } + col_l = col_l->next; + } + + return -1; } void recent_set_column_width(gint col, gint width) { - GList *col_l; - col_width_data *col_w; - gint cfmt; - const gchar *cfield = NULL; - gboolean found = FALSE; - - cfmt = get_column_format(col); - if (cfmt == COL_CUSTOM) { - cfield = get_column_custom_fields(col); - } - - col_l = g_list_first(recent.col_width_list); - while (col_l) { - col_w = (col_width_data *) col_l->data; - if (col_w->cfmt == cfmt) { - if (cfmt != COL_CUSTOM || strcmp (cfield, col_w->cfield) == 0) { + GList *col_l; + col_width_data *col_w; + gint cfmt; + const gchar *cfield = NULL; + gboolean found = FALSE; + + cfmt = get_column_format(col); + if (cfmt == COL_CUSTOM) { + cfield = get_column_custom_fields(col); + } + + col_l = g_list_first(recent.col_width_list); + while (col_l) { + col_w = (col_width_data *) col_l->data; + if (col_w->cfmt == cfmt) { + if (cfmt != COL_CUSTOM || strcmp (cfield, col_w->cfield) == 0) { + col_w->width = width; + found = TRUE; + break; + } + } + col_l = col_l->next; + } + + if (!found) { + col_w = (col_width_data *) g_malloc(sizeof(col_width_data)); + col_w->cfmt = cfmt; + col_w->cfield = g_strdup(cfield); col_w->width = width; - found = TRUE; - break; - } + col_w->xalign = COLUMN_XALIGN_DEFAULT; + recent.col_width_list = g_list_append(recent.col_width_list, col_w); } - col_l = col_l->next; - } - - if (!found) { - col_w = (col_width_data *) g_malloc(sizeof(col_width_data)); - col_w->cfmt = cfmt; - col_w->cfield = g_strdup(cfield); - col_w->width = width; - col_w->xalign = COLUMN_XALIGN_DEFAULT; - recent.col_width_list = g_list_append(recent.col_width_list, col_w); - } } gchar recent_get_column_xalign(gint col) { - GList *col_l; - col_width_data *col_w; - gint cfmt; - const gchar *cfield = NULL; - - cfmt = get_column_format(col); - if (cfmt == COL_CUSTOM) { - cfield = get_column_custom_fields(col); - } - - col_l = g_list_first(recent.col_width_list); - while (col_l) { - col_w = (col_width_data *) col_l->data; - if (col_w->cfmt == cfmt) { - if (cfmt != COL_CUSTOM || strcmp (cfield, col_w->cfield) == 0) { - return col_w->xalign; - } + GList *col_l; + col_width_data *col_w; + gint cfmt; + const gchar *cfield = NULL; + + cfmt = get_column_format(col); + if (cfmt == COL_CUSTOM) { + cfield = get_column_custom_fields(col); } - col_l = col_l->next; - } - return 0; + col_l = g_list_first(recent.col_width_list); + while (col_l) { + col_w = (col_width_data *) col_l->data; + if (col_w->cfmt == cfmt) { + if (cfmt != COL_CUSTOM || strcmp (cfield, col_w->cfield) == 0) { + return col_w->xalign; + } + } + col_l = col_l->next; + } + + return 0; } void recent_set_column_xalign(gint col, gchar xalign) { - GList *col_l; - col_width_data *col_w; - gint cfmt; - const gchar *cfield = NULL; - gboolean found = FALSE; - - cfmt = get_column_format(col); - if (cfmt == COL_CUSTOM) { - cfield = get_column_custom_fields(col); - } - - col_l = g_list_first(recent.col_width_list); - while (col_l) { - col_w = (col_width_data *) col_l->data; - if (col_w->cfmt == cfmt) { - if (cfmt != COL_CUSTOM || strcmp (cfield, col_w->cfield) == 0) { + GList *col_l; + col_width_data *col_w; + gint cfmt; + const gchar *cfield = NULL; + gboolean found = FALSE; + + cfmt = get_column_format(col); + if (cfmt == COL_CUSTOM) { + cfield = get_column_custom_fields(col); + } + + col_l = g_list_first(recent.col_width_list); + while (col_l) { + col_w = (col_width_data *) col_l->data; + if (col_w->cfmt == cfmt) { + if (cfmt != COL_CUSTOM || strcmp (cfield, col_w->cfield) == 0) { + col_w->xalign = xalign; + found = TRUE; + break; + } + } + col_l = col_l->next; + } + + if (!found) { + col_w = (col_width_data *) g_malloc(sizeof(col_width_data)); + col_w->cfmt = cfmt; + col_w->cfield = g_strdup(cfield); + col_w->width = 40; col_w->xalign = xalign; - found = TRUE; - break; - } + recent.col_width_list = g_list_append(recent.col_width_list, col_w); } - col_l = col_l->next; - } - - if (!found) { - col_w = (col_width_data *) g_malloc(sizeof(col_width_data)); - col_w->cfmt = cfmt; - col_w->cfield = g_strdup(cfield); - col_w->width = 40; - col_w->xalign = xalign; - recent.col_width_list = g_list_append(recent.col_width_list, col_w); - } } void recent_init(void) { - memset(&recent, 0, sizeof(recent_settings_t)); + memset(&recent, 0, sizeof(recent_settings_t)); } void recent_cleanup(void) { - free_col_width_info(&recent); - g_free(recent.gui_fileopen_remembered_dir); - g_list_free_full(recent.gui_additional_toolbars, g_free); - g_list_free_full(recent.interface_toolbars, g_free); - prefs_clear_string_list(recent.conversation_tabs); - prefs_clear_string_list(recent.endpoint_tabs); - prefs_clear_string_list(recent.custom_colors); + free_col_width_info(&recent); + g_free(recent.gui_fileopen_remembered_dir); + g_list_free_full(recent.gui_additional_toolbars, g_free); + g_list_free_full(recent.interface_toolbars, g_free); + prefs_clear_string_list(recent.conversation_tabs); + prefs_clear_string_list(recent.endpoint_tabs); + prefs_clear_string_list(recent.custom_colors); } /* - * Editor modelines - http://www.wireshark.org/tools/modelines.html + * Editor modelines - https://www.wireshark.org/tools/modelines.html * * Local Variables: - * c-basic-offset: 2 + * c-basic-offset: 4 * tab-width: 8 * indent-tabs-mode: nil * End: * - * ex: set shiftwidth=2 tabstop=8 expandtab: - * :indentSize=2:tabSize=8:noTabs=true: + * ex: set shiftwidth=4 tabstop=8 expandtab: + * :indentSize=4:tabSize=8:noTabs=true: */ |