aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorMichal Labedzki <michal.labedzki@tieto.com>2015-12-11 09:34:08 +0100
committerAnders Broman <a.broman58@gmail.com>2015-12-20 08:21:02 +0000
commit9bb3f6be4c18822267a64633c298e1a8f1809221 (patch)
treede9b8934c58f239e29d0227039ad7f55f3d42f06 /epan
parent7e0ec2c8eb3c88e70992dc40b130c76177b83a30 (diff)
Qt: Add missing multi-field column validation
GTK already has it, but Qt forgot about it, so multi-field custom column works ok if previously saved in GTK-shark. Invalid validation prevent from modifying and saving multi-field custom column in Qt version. While at it, rename "custom field" to "custom fields" to ensure we think about multi-field custom column. Change-Id: I99588150ccb38be11b75f5dd5b0f6443e7055ebb Reviewed-on: https://code.wireshark.org/review/12685 Petri-Dish: Michal Labedzki <michal.labedzki@tieto.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan')
-rw-r--r--epan/column-info.h4
-rw-r--r--epan/column-utils.c32
-rw-r--r--epan/column.c26
-rw-r--r--epan/column.h6
-rw-r--r--epan/prefs.c62
5 files changed, 65 insertions, 65 deletions
diff --git a/epan/column-info.h b/epan/column-info.h
index e78ef3a575..f2c0ef25fe 100644
--- a/epan/column-info.h
+++ b/epan/column-info.h
@@ -48,9 +48,9 @@ typedef struct {
gint col_fmt; /**< Format of column */
gboolean *fmt_matx; /**< Specifies which formats apply to a column */
gchar *col_title; /**< Column titles */
- gchar *col_custom_field; /**< Custom column field */
+ gchar *col_custom_fields; /**< Custom column fields */
gint col_custom_occurrence;/**< Custom column field occurrence */
- GSList *col_custom_field_ids; /**< Custom column field id */
+ GSList *col_custom_fields_ids;/**< Custom column fields id */
struct epan_dfilter *col_custom_dfilter; /**< Compiled custom column field */
const gchar *col_data; /**< Column data */
gchar *col_buf; /**< Buffer into which to copy data for column */
diff --git a/epan/column-utils.c b/epan/column-utils.c
index 261e459cd6..61f6d84589 100644
--- a/epan/column-utils.c
+++ b/epan/column-utils.c
@@ -55,7 +55,7 @@ col_setup(column_info *cinfo, const gint num_cols)
cinfo->col_first = g_new(int, NUM_COL_FMTS);
cinfo->col_last = g_new(int, NUM_COL_FMTS);
for (i = 0; i < num_cols; i++) {
- cinfo->columns[i].col_custom_field_ids = NULL;
+ cinfo->columns[i].col_custom_fields_ids = NULL;
}
cinfo->col_expr.col_expr = g_new(const gchar*, num_cols + 1);
cinfo->col_expr.col_expr_val = g_new(gchar*, num_cols + 1);
@@ -75,13 +75,13 @@ col_custom_ids_free_wrapper(gpointer data, gpointer user_data _U_)
}
static void
-col_custom_field_ids_free(GSList** custom_field_id)
+col_custom_fields_ids_free(GSList** custom_fields_id)
{
- if (*custom_field_id != NULL) {
- g_slist_foreach(*custom_field_id, col_custom_ids_free_wrapper, NULL);
- g_slist_free(*custom_field_id);
+ if (*custom_fields_id != NULL) {
+ g_slist_foreach(*custom_fields_id, col_custom_ids_free_wrapper, NULL);
+ g_slist_free(*custom_fields_id);
}
- *custom_field_id = NULL;
+ *custom_fields_id = NULL;
}
/* Cleanup all the data structures for constructing column data; undoes
@@ -96,12 +96,12 @@ col_cleanup(column_info *cinfo)
col_item = &cinfo->columns[i];
g_free(col_item->fmt_matx);
g_free(col_item->col_title);
- g_free(col_item->col_custom_field);
+ g_free(col_item->col_custom_fields);
dfilter_free(col_item->col_custom_dfilter);
/* col_item->col_data points to col_buf or static memory */
g_free(col_item->col_buf);
g_free(cinfo->col_expr.col_expr_val[i]);
- col_custom_field_ids_free(&col_item->col_custom_field_ids);
+ col_custom_fields_ids_free(&col_item->col_custom_fields_ids);
}
g_free(cinfo->columns);
@@ -305,10 +305,10 @@ void col_custom_set_edt(epan_dissect_t *edt, column_info *cinfo)
i <= cinfo->col_last[COL_CUSTOM]; i++) {
col_item = &cinfo->columns[i];
if (col_item->fmt_matx[COL_CUSTOM] &&
- col_item->col_custom_field &&
- col_item->col_custom_field_ids) {
+ col_item->col_custom_fields &&
+ col_item->col_custom_fields_ids) {
col_item->col_data = col_item->col_buf;
- cinfo->col_expr.col_expr[i] = epan_custom_set(edt, col_item->col_custom_field_ids,
+ cinfo->col_expr.col_expr[i] = epan_custom_set(edt, col_item->col_custom_fields_ids,
col_item->col_custom_occurrence,
col_item->col_buf,
cinfo->col_expr.col_expr_val[i],
@@ -331,17 +331,17 @@ col_custom_prime_edt(epan_dissect_t *edt, column_info *cinfo)
int i_list = 0;
col_item = &cinfo->columns[i];
- col_custom_field_ids_free(&col_item->col_custom_field_ids);
+ col_custom_fields_ids_free(&col_item->col_custom_fields_ids);
if (col_item->fmt_matx[COL_CUSTOM] &&
col_item->col_custom_dfilter) {
epan_dissect_prime_dfilter(edt, col_item->col_custom_dfilter);
- if (col_item->col_custom_field) {
+ if (col_item->col_custom_fields) {
gchar **fields;
guint i_field = 0;
/* Not using a GRegex here would improve performance. */
- fields = g_regex_split(cinfo->prime_regex, col_item->col_custom_field,
+ fields = g_regex_split(cinfo->prime_regex, col_item->col_custom_fields,
G_REGEX_MATCH_ANCHORED);
for (i_field =0; i_field < g_strv_length(fields); i_field += 1) {
@@ -355,8 +355,8 @@ col_custom_prime_edt(epan_dissect_t *edt, column_info *cinfo)
idx = g_new(int, 1);
*idx = id;
- col_item->col_custom_field_ids =
- g_slist_insert(col_item->col_custom_field_ids, idx, i_list);
+ col_item->col_custom_fields_ids =
+ g_slist_insert(col_item->col_custom_fields_ids, idx, i_list);
i_list += 1;
}
}
diff --git a/epan/column.c b/epan/column.c
index ca482c8127..1ec3312501 100644
--- a/epan/column.c
+++ b/epan/column.c
@@ -728,7 +728,7 @@ set_column_resolved(const gint col, gboolean resolved)
}
const gchar *
-get_column_custom_field(const gint col)
+get_column_custom_fields(const gint col)
{
GList *clp = g_list_nth(prefs.col_list, col);
fmt_data *cfmt;
@@ -738,11 +738,11 @@ get_column_custom_field(const gint col)
cfmt = (fmt_data *) clp->data;
- return(cfmt->custom_field);
+ return(cfmt->custom_fields);
}
void
-set_column_custom_field(const gint col, const char *custom_field)
+set_column_custom_fields(const gint col, const char *custom_fields)
{
GList *clp = g_list_nth(prefs.col_list, col);
fmt_data *cfmt;
@@ -752,8 +752,8 @@ set_column_custom_field(const gint col, const char *custom_field)
cfmt = (fmt_data *) clp->data;
- g_free (cfmt->custom_field);
- cfmt->custom_field = g_strdup (custom_field);
+ g_free (cfmt->custom_fields);
+ cfmt->custom_fields = g_strdup (custom_fields);
}
gint
@@ -797,8 +797,8 @@ get_column_tooltip(const gint col)
cfmt = (fmt_data *) clp->data;
if (cfmt->fmt == COL_CUSTOM) {
- header_field_info *hfi = proto_registrar_get_byname(cfmt->custom_field);
- /* Check if this is a valid custom_field */
+ header_field_info *hfi = proto_registrar_get_byname(cfmt->custom_fields);
+ /* Check if this is a valid custom_fields */
if (hfi != NULL) {
if (hfi->parent != -1) {
/* Prefix with protocol name */
@@ -811,7 +811,7 @@ get_column_tooltip(const gint col)
tooltip_text = g_strdup_printf("%s (%s)", hfi->name, hfi->abbrev);
}
} else {
- tooltip_text = g_strdup_printf("Unknown Field: %s", get_column_custom_field(col));
+ tooltip_text = g_strdup_printf("Unknown Field: %s", get_column_custom_fields(col));
}
} else {
tooltip_text = g_strdup(col_format_desc(cfmt->fmt));
@@ -835,17 +835,17 @@ build_column_format_array(column_info *cinfo, const gint num_cols, const gboolea
col_item->col_title = g_strdup(get_column_title(i));
if (col_item->col_fmt == COL_CUSTOM) {
- col_item->col_custom_field = g_strdup(get_column_custom_field(i));
+ col_item->col_custom_fields = g_strdup(get_column_custom_fields(i));
col_item->col_custom_occurrence = get_column_custom_occurrence(i);
- if(!dfilter_compile(col_item->col_custom_field, &col_item->col_custom_dfilter, NULL)) {
+ if(!dfilter_compile(col_item->col_custom_fields, &col_item->col_custom_dfilter, NULL)) {
/* XXX: Should we issue a warning? */
- g_free(col_item->col_custom_field);
- col_item->col_custom_field = NULL;
+ g_free(col_item->col_custom_fields);
+ col_item->col_custom_fields = NULL;
col_item->col_custom_occurrence = 0;
col_item->col_custom_dfilter = NULL;
}
} else {
- col_item->col_custom_field = NULL;
+ col_item->col_custom_fields = NULL;
col_item->col_custom_occurrence = 0;
col_item->col_custom_dfilter = NULL;
}
diff --git a/epan/column.h b/epan/column.h
index af19b07ca2..365652e2e4 100644
--- a/epan/column.h
+++ b/epan/column.h
@@ -33,7 +33,7 @@ extern "C" {
typedef struct _fmt_data {
gchar *title; /* title of the column */
int fmt; /* format of column */
- gchar *custom_field; /* field name for COL_CUSTOM */
+ gchar *custom_fields; /* fields names for COL_CUSTOM */
gint custom_occurrence; /* optional ordinal of occurrence of that field */
gboolean visible; /* if FALSE, hide this column */
gboolean resolved; /* if TRUE, show a more human-readable name */
@@ -64,9 +64,9 @@ gboolean get_column_resolved(const gint);
WS_DLL_PUBLIC
void set_column_resolved(const gint, gboolean);
WS_DLL_PUBLIC
-const gchar *get_column_custom_field(const gint);
+const gchar *get_column_custom_fields(const gint);
WS_DLL_PUBLIC
-void set_column_custom_field(const gint, const char *);
+void set_column_custom_fields(const gint, const char *);
WS_DLL_PUBLIC
gint get_column_custom_occurrence(const gint);
WS_DLL_PUBLIC
diff --git a/epan/prefs.c b/epan/prefs.c
index 7aa333d533..860ef4d314 100644
--- a/epan/prefs.c
+++ b/epan/prefs.c
@@ -1557,10 +1557,10 @@ column_hidden_to_str_cb(pref_t* pref, gboolean default_val)
while (clp) {
gchar *prefs_fmt;
cfmt = (fmt_data *) clp->data;
- if ((cfmt->fmt == COL_CUSTOM) && (cfmt->custom_field)) {
+ if ((cfmt->fmt == COL_CUSTOM) && (cfmt->custom_fields)) {
prefs_fmt = g_strdup_printf("%s:%s:%d:%c",
col_format_to_string(cfmt->fmt),
- cfmt->custom_field,
+ cfmt->custom_fields,
cfmt->custom_occurrence,
cfmt->resolved ? 'R' : 'U');
} else {
@@ -1646,11 +1646,11 @@ column_format_init_cb(pref_t* pref, GList** value)
dest_cfmt = g_new(fmt_data,1);
dest_cfmt->title = g_strdup(src_cfmt->title);
dest_cfmt->fmt = src_cfmt->fmt;
- if (src_cfmt->custom_field) {
- dest_cfmt->custom_field = g_strdup(src_cfmt->custom_field);
+ if (src_cfmt->custom_fields) {
+ dest_cfmt->custom_fields = g_strdup(src_cfmt->custom_fields);
dest_cfmt->custom_occurrence = src_cfmt->custom_occurrence;
} else {
- dest_cfmt->custom_field = NULL;
+ dest_cfmt->custom_fields = NULL;
dest_cfmt->custom_occurrence = 0;
}
dest_cfmt->visible = src_cfmt->visible;
@@ -1681,11 +1681,11 @@ column_format_reset_cb(pref_t* pref)
dest_cfmt = g_new(fmt_data,1);
dest_cfmt->title = g_strdup(src_cfmt->title);
dest_cfmt->fmt = src_cfmt->fmt;
- if (src_cfmt->custom_field) {
- dest_cfmt->custom_field = g_strdup(src_cfmt->custom_field);
+ if (src_cfmt->custom_fields) {
+ dest_cfmt->custom_fields = g_strdup(src_cfmt->custom_fields);
dest_cfmt->custom_occurrence = src_cfmt->custom_occurrence;
} else {
- dest_cfmt->custom_field = NULL;
+ dest_cfmt->custom_fields = NULL;
dest_cfmt->custom_occurrence = 0;
}
dest_cfmt->visible = src_cfmt->visible;
@@ -1734,7 +1734,7 @@ column_format_set_cb(pref_t* pref, const gchar* value, gboolean* changed _U_)
try_convert_to_custom_column(&col_l_elt->data);
} else {
/* We don't need the custom column field on this pass. */
- g_free(cfmt_check.custom_field);
+ g_free(cfmt_check.custom_fields);
}
/* Go past the format. */
@@ -1799,8 +1799,8 @@ column_format_is_default_cb(pref_t* pref)
def_cfmt = (fmt_data *) def_col->data;
if ((g_strcmp0(cfmt->title, def_cfmt->title) != 0) ||
(cfmt->fmt != def_cfmt->fmt) ||
- (((cfmt->fmt == COL_CUSTOM) && (cfmt->custom_field)) &&
- ((g_strcmp0(cfmt->custom_field, def_cfmt->custom_field) != 0) ||
+ (((cfmt->fmt == COL_CUSTOM) && (cfmt->custom_fields)) &&
+ ((g_strcmp0(cfmt->custom_fields, def_cfmt->custom_fields) != 0) ||
(cfmt->resolved != def_cfmt->resolved)))) {
is_default = FALSE;
break;
@@ -1828,10 +1828,10 @@ column_format_to_str_cb(pref_t* pref, gboolean default_val)
while (clp) {
cfmt = (fmt_data *) clp->data;
col_l = g_list_append(col_l, g_strdup(cfmt->title));
- if ((cfmt->fmt == COL_CUSTOM) && (cfmt->custom_field)) {
+ if ((cfmt->fmt == COL_CUSTOM) && (cfmt->custom_fields)) {
prefs_fmt = g_strdup_printf("%s:%s:%d:%c",
col_format_to_string(cfmt->fmt),
- cfmt->custom_field,
+ cfmt->custom_fields,
cfmt->custom_occurrence,
cfmt->resolved ? 'R' : 'U');
} else {
@@ -2865,7 +2865,7 @@ parse_column_format(fmt_data *cfmt, const char *fmt)
gchar **cust_format_info;
char *p;
int col_fmt;
- gchar *col_custom_field = NULL;
+ gchar *col_custom_fields = NULL;
long col_custom_occurrence = 0;
gboolean col_resolved = TRUE;
@@ -2877,17 +2877,17 @@ parse_column_format(fmt_data *cfmt, const char *fmt)
/* Yes. */
col_fmt = COL_CUSTOM;
cust_format_info = g_strsplit(&fmt[cust_format_len+1],":",3); /* add 1 for ':' */
- col_custom_field = g_strdup(cust_format_info[0]);
- if (col_custom_field && cust_format_info[1]) {
+ col_custom_fields = g_strdup(cust_format_info[0]);
+ if (col_custom_fields && cust_format_info[1]) {
col_custom_occurrence = strtol(cust_format_info[1], &p, 10);
if (p == cust_format_info[1] || *p != '\0') {
/* Not a valid number. */
- g_free(col_custom_field);
+ g_free(col_custom_fields);
g_strfreev(cust_format_info);
return FALSE;
}
}
- if (col_custom_field && cust_format_info[1] && cust_format_info[2]) {
+ if (col_custom_fields && cust_format_info[1] && cust_format_info[2]) {
col_resolved = (cust_format_info[2][0] == 'U') ? FALSE : TRUE;
}
g_strfreev(cust_format_info);
@@ -2898,7 +2898,7 @@ parse_column_format(fmt_data *cfmt, const char *fmt)
}
cfmt->fmt = col_fmt;
- cfmt->custom_field = col_custom_field;
+ cfmt->custom_fields = col_custom_fields;
cfmt->custom_occurrence = (int)col_custom_occurrence;
cfmt->resolved = col_resolved;
return TRUE;
@@ -3074,7 +3074,7 @@ pre_init_prefs(void)
parse_column_format(cfmt, col_fmt[(i * 2) + 1]);
cfmt->visible = TRUE;
cfmt->resolved = TRUE;
- cfmt->custom_field = NULL;
+ cfmt->custom_fields = NULL;
cfmt->custom_occurrence = 0;
prefs.col_list = g_list_append(prefs.col_list, cfmt);
}
@@ -3724,8 +3724,8 @@ prefs_is_column_visible(const gchar *cols_hidden, fmt_data *cfmt)
*/
if (cfmt->fmt != cfmt_hidden.fmt) {
/* No. */
- g_free(cfmt_hidden.custom_field);
- cfmt_hidden.custom_field = NULL;
+ g_free(cfmt_hidden.custom_fields);
+ cfmt_hidden.custom_fields = NULL;
continue;
}
if (cfmt->fmt == COL_CUSTOM) {
@@ -3733,18 +3733,18 @@ prefs_is_column_visible(const gchar *cols_hidden, fmt_data *cfmt)
* A custom column has to have the
* same custom field and occurrence.
*/
- if (cfmt_hidden.custom_field && cfmt->custom_field) {
- if (strcmp(cfmt->custom_field,
- cfmt_hidden.custom_field) != 0) {
+ if (cfmt_hidden.custom_fields && cfmt->custom_fields) {
+ if (strcmp(cfmt->custom_fields,
+ cfmt_hidden.custom_fields) != 0) {
/* Different fields. */
- g_free(cfmt_hidden.custom_field);
- cfmt_hidden.custom_field = NULL;
+ g_free(cfmt_hidden.custom_fields);
+ cfmt_hidden.custom_fields = NULL;
continue;
}
if (cfmt->custom_occurrence != cfmt_hidden.custom_occurrence) {
/* Different occurrences. */
- g_free(cfmt_hidden.custom_field);
- cfmt_hidden.custom_field = NULL;
+ g_free(cfmt_hidden.custom_fields);
+ cfmt_hidden.custom_fields = NULL;
continue;
}
}
@@ -3754,7 +3754,7 @@ prefs_is_column_visible(const gchar *cols_hidden, fmt_data *cfmt)
* OK, they match, so it's one of the hidden fields,
* hence not visible.
*/
- g_free(cfmt_hidden.custom_field);
+ g_free(cfmt_hidden.custom_fields);
g_free(cols);
return FALSE;
}
@@ -5020,7 +5020,7 @@ free_col_info(GList *list)
cfmt = (fmt_data *)list->data;
g_free(cfmt->title);
- g_free(cfmt->custom_field);
+ g_free(cfmt->custom_fields);
g_free(cfmt);
list = g_list_next(list);
}