summaryrefslogtreecommitdiff
path: root/ui
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2015-06-26 23:00:33 -0400
committerMichael Mann <mmann78@netscape.net>2015-06-29 02:11:04 +0000
commitda09a1bfd86c2066ab492178bd2c0faa96bfd579 (patch)
treed0855286253963750b272e04ec2e57b56c9bfee1 /ui
parentb9145bc836daafd6cad960b95e9d2144781e7317 (diff)
downloadwireshark-da09a1bfd86c2066ab492178bd2c0faa96bfd579.tar.gz
Take all epan_column_info members that always get allocated to "number of columns" to share their own data structure.
Change-Id: Ib982662db6cf68730a7d121eac60d9bc5ae67429 Reviewed-on: https://code.wireshark.org/review/9195 Petri-Dish: Michael Mann <mmann78@netscape.net> Reviewed-by: Anders Broman <a.broman58@gmail.com> Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'ui')
-rw-r--r--ui/gtk/main.c14
-rw-r--r--ui/gtk/packet_list.c16
-rw-r--r--ui/gtk/packet_list_store.c28
-rw-r--r--ui/gtk/packet_win.c2
-rw-r--r--ui/packet_list_utils.c8
-rw-r--r--ui/qt/packet_dialog.cpp2
-rw-r--r--ui/qt/packet_list.cpp6
-rw-r--r--ui/qt/packet_list_model.cpp6
-rw-r--r--ui/qt/packet_list_record.cpp10
-rw-r--r--ui/tap-sequence-analysis.c11
10 files changed, 55 insertions, 48 deletions
diff --git a/ui/gtk/main.c b/ui/gtk/main.c
index f62e937f23..4244b9a5a7 100644
--- a/ui/gtk/main.c
+++ b/ui/gtk/main.c
@@ -531,10 +531,10 @@ selected_ptree_ref_cb(GtkWidget *widget _U_, gpointer data _U_)
static gboolean
is_address_column (gint column)
{
- if (((cfile.cinfo.col_fmt[column] == COL_DEF_SRC) ||
- (cfile.cinfo.col_fmt[column] == COL_RES_SRC) ||
- (cfile.cinfo.col_fmt[column] == COL_DEF_DST) ||
- (cfile.cinfo.col_fmt[column] == COL_RES_DST)) &&
+ if (((cfile.cinfo.columns[column].col_fmt == COL_DEF_SRC) ||
+ (cfile.cinfo.columns[column].col_fmt == COL_RES_SRC) ||
+ (cfile.cinfo.columns[column].col_fmt == COL_DEF_DST) ||
+ (cfile.cinfo.columns[column].col_fmt == COL_RES_DST)) &&
strlen(cfile.cinfo.col_expr.col_expr_val[column]))
{
return TRUE;
@@ -609,7 +609,7 @@ get_filter_from_packet_list_row_and_column(gpointer data)
fdata, &cfile.cinfo);
epan_dissect_fill_in_columns(&edt, TRUE, TRUE);
- if ((cfile.cinfo.col_custom_occurrence[column]) ||
+ if ((cfile.cinfo.columns[column].col_custom_occurrence) ||
(strchr (cfile.cinfo.col_expr.col_expr_val[column], ',') == NULL))
{
/* Only construct the filter when a single occurrence is displayed
@@ -622,8 +622,8 @@ get_filter_from_packet_list_row_and_column(gpointer data)
if (strlen(cfile.cinfo.col_expr.col_expr[column]) != 0 &&
strlen(cfile.cinfo.col_expr.col_expr_val[column]) != 0) {
/* leak a little; is there a safe wmem_ scope here? */
- if (cfile.cinfo.col_fmt[column] == COL_CUSTOM) {
- header_field_info *hfi = proto_registrar_get_byname(cfile.cinfo.col_custom_field[column]);
+ if (cfile.cinfo.columns[column].col_fmt == COL_CUSTOM) {
+ header_field_info *hfi = proto_registrar_get_byname(cfile.cinfo.columns[column].col_custom_field);
if (hfi && hfi->parent == -1) {
/* Protocol only */
buf = g_strdup(cfile.cinfo.col_expr.col_expr[column]);
diff --git a/ui/gtk/packet_list.c b/ui/gtk/packet_list.c
index 06e8364c75..477a782c81 100644
--- a/ui/gtk/packet_list.c
+++ b/ui/gtk/packet_list.c
@@ -662,6 +662,7 @@ create_view_and_model(void)
header_field_info *hfi;
gint col_min_width;
gchar *escaped_title;
+ col_item_t* col_item;
packetlist = packet_list_new();
@@ -691,6 +692,7 @@ create_view_and_model(void)
/* We need one extra column to store the entire PacketListRecord */
for(i = 0; i < cfile.cinfo.num_cols; i++) {
+ col_item = &cfile.cinfo.columns[i];
renderer = gtk_cell_renderer_text_new();
col = gtk_tree_view_column_new();
gtk_tree_view_column_pack_start(col, renderer, TRUE);
@@ -706,14 +708,14 @@ create_view_and_model(void)
show_cell_data_func,
GINT_TO_POINTER(i),
NULL);
- if (cfile.cinfo.col_fmt[i] == COL_CUSTOM) {
- hfi = proto_registrar_get_byname(cfile.cinfo.col_custom_field[i]);
+ if (col_item->col_fmt == COL_CUSTOM) {
+ hfi = proto_registrar_get_byname(col_item->col_custom_field);
/* Check if this is a valid custom_field */
if (hfi != NULL) {
if (hfi->parent != -1) {
/* Prefix with protocol name */
- if (cfile.cinfo.col_custom_occurrence[i] != 0) {
- tooltip_text = g_strdup_printf("%s\n%s (%s#%d)", proto_get_protocol_name(hfi->parent), hfi->name, hfi->abbrev, cfile.cinfo.col_custom_occurrence[i]);
+ if (col_item->col_custom_occurrence != 0) {
+ tooltip_text = g_strdup_printf("%s\n%s (%s#%d)", proto_get_protocol_name(hfi->parent), hfi->name, hfi->abbrev, col_item->col_custom_occurrence);
} else {
tooltip_text = g_strdup_printf("%s\n%s (%s)", proto_get_protocol_name(hfi->parent), hfi->name, hfi->abbrev);
}
@@ -724,9 +726,9 @@ create_view_and_model(void)
tooltip_text = g_strdup_printf("Unknown Field: %s", get_column_custom_field(i));
}
} else {
- tooltip_text = g_strdup(col_format_desc(cfile.cinfo.col_fmt[i]));
+ tooltip_text = g_strdup(col_format_desc(col_item->col_fmt));
}
- escaped_title = ws_strdup_escape_char(cfile.cinfo.col_title[i], '_');
+ escaped_title = ws_strdup_escape_char(col_item->col_title, '_');
gtk_tree_view_column_set_title(col, escaped_title);
g_free (escaped_title);
gtk_tree_view_column_set_clickable(col, TRUE);
@@ -743,7 +745,7 @@ create_view_and_model(void)
* XXX The minimum size will be the size of the title
* should that be limited for long titles?
*/
- col_min_width = get_default_col_size (packetlist->view, cfile.cinfo.col_title[i]);
+ col_min_width = get_default_col_size (packetlist->view, cfile.cinfo.columns[i].col_title);
if(col_min_width<COLUMN_WIDTH_MIN){
gtk_tree_view_column_set_min_width(col, COLUMN_WIDTH_MIN);
}else{
diff --git a/ui/gtk/packet_list_store.c b/ui/gtk/packet_list_store.c
index dbb511ae43..842497b14d 100644
--- a/ui/gtk/packet_list_store.c
+++ b/ui/gtk/packet_list_store.c
@@ -398,7 +398,7 @@ packet_list_get_value(GtkTreeModel *tree_model, GtkTreeIter *iter, gint column,
text_column = packet_list->col_to_text[column];
if (text_column == -1) { /* column based on frame_data */
col_fill_in_frame_data(record->fdata, &cfile.cinfo, column, FALSE);
- g_value_set_string(value, cfile.cinfo.col_data[column]);
+ g_value_set_string(value, cfile.cinfo.columns[column].col_data);
} else {
g_return_if_fail(record->col_text);
g_value_set_string(value, record->col_text[text_column]);
@@ -652,6 +652,7 @@ packet_list_change_record(PacketList *packet_list, PacketListRecord *record, gin
gchar *str;
size_t col_text_len;
int text_col;
+ col_item_t* col_item;
text_col = packet_list->col_to_text[col];
@@ -659,7 +660,8 @@ packet_list_change_record(PacketList *packet_list, PacketListRecord *record, gin
if (text_col == -1 || record->col_text[text_col] != NULL)
return;
- switch (cfile.cinfo.col_fmt[col]) {
+ col_item = &cfile.cinfo.columns[col];
+ switch (col_item->col_fmt) {
case COL_DEF_SRC:
case COL_RES_SRC: /* COL_DEF_SRC is currently just like COL_RES_SRC */
case COL_UNRES_SRC:
@@ -685,13 +687,13 @@ packet_list_change_record(PacketList *packet_list, PacketListRecord *record, gin
case COL_8021Q_VLAN_ID:
case COL_EXPERT:
case COL_FREQ_CHAN:
- if (cinfo->col_data[col] && cinfo->col_data[col] != cinfo->col_buf[col]) {
- col_text_len = strlen(cinfo->col_data[col]);
+ if (col_item->col_data && col_item->col_data != col_item->col_buf) {
+ col_text_len = strlen(col_item->col_data);
if (col_text_len > G_MAXUSHORT)
col_text_len = G_MAXUSHORT;
/* This is a constant string, so we don't have to copy it */
- record->col_text[text_col] = (gchar *) cinfo->col_data[col];
+ record->col_text[text_col] = (gchar *) col_item->col_data;
record->col_text_len[text_col] = (gushort) col_text_len;
#ifdef PACKET_LIST_STATISTICS
++packet_list->const_strings;
@@ -701,8 +703,8 @@ packet_list_change_record(PacketList *packet_list, PacketListRecord *record, gin
/* !! FALL-THROUGH!! */
default:
- if(cinfo->col_data[col]){
- col_text_len = strlen(cinfo->col_data[col]);
+ if(col_item->col_data){
+ col_text_len = strlen(col_item->col_data);
if (col_text_len > G_MAXUSHORT)
col_text_len = G_MAXUSHORT;
@@ -722,7 +724,7 @@ packet_list_change_record(PacketList *packet_list, PacketListRecord *record, gin
/* Use the unresolved value in col_expr_val */
str = g_string_chunk_insert_const (packet_list->string_pool, (const gchar *)cinfo->col_expr.col_expr_val[col]);
} else {
- str = g_string_chunk_insert_const (packet_list->string_pool, (const gchar *)cinfo->col_data[col]);
+ str = g_string_chunk_insert_const (packet_list->string_pool, (const gchar *)col_item->col_data);
}
record->col_text[text_col] = str;
break;
@@ -930,7 +932,7 @@ packet_list_compare_custom(gint sort_id, gint text_sort_id, PacketListRecord *a,
{
header_field_info *hfi;
- hfi = proto_registrar_get_byname(cfile.cinfo.col_custom_field[sort_id]);
+ hfi = proto_registrar_get_byname(cfile.cinfo.columns[sort_id].col_custom_field);
if (hfi == NULL) {
return frame_data_compare(cfile.epan, a->fdata, b->fdata, COL_NUMBER);
@@ -968,7 +970,7 @@ _packet_list_compare_records(gint sort_id, gint text_sort_id, PacketListRecord *
if(a->col_text[text_sort_id] == b->col_text[text_sort_id])
return 0; /* no need to call strcmp() */
- if (cfile.cinfo.col_fmt[sort_id] == COL_CUSTOM)
+ if (cfile.cinfo.columns[sort_id].col_fmt == COL_CUSTOM)
return packet_list_compare_custom(sort_id, text_sort_id, a, b);
return strcmp(a->col_text[text_sort_id], b->col_text[text_sort_id]);
@@ -980,7 +982,7 @@ packet_list_compare_records(gint sort_id, gint text_sort_id, PacketListRecord *a
gint ret;
if (text_sort_id == -1) /* based on frame_data ? */
- return frame_data_compare(cfile.epan, a->fdata, b->fdata, cfile.cinfo.col_fmt[sort_id]);
+ return frame_data_compare(cfile.epan, a->fdata, b->fdata, cfile.cinfo.columns[sort_id].col_fmt);
ret = _packet_list_compare_records(sort_id, text_sort_id, a, b);
if (ret == 0)
@@ -1216,7 +1218,7 @@ packet_list_get_widest_column_string(PacketList *packet_list, gint col)
record = PACKET_LIST_RECORD_GET(packet_list->visible_rows, vis_idx);
col_fill_in_frame_data(record->fdata, &cfile.cinfo, col, FALSE);
- column_len = (gint) strlen(cfile.cinfo.col_buf[col]);
+ column_len = (gint) strlen(cfile.cinfo.columns[col].col_buf);
if (column_len > widest_column_len) {
widest_column_len = column_len;
widest_packet = vis_idx;
@@ -1227,7 +1229,7 @@ packet_list_get_widest_column_string(PacketList *packet_list, gint col)
record = PACKET_LIST_RECORD_GET(packet_list->visible_rows, widest_packet);
col_fill_in_frame_data(record->fdata, &cfile.cinfo, col, FALSE);
- return cfile.cinfo.col_buf[col];
+ return cfile.cinfo.columns[col].col_buf;
} else
return "";
}
diff --git a/ui/gtk/packet_win.c b/ui/gtk/packet_win.c
index fb28702dfc..ca5a5be6ed 100644
--- a/ui/gtk/packet_win.c
+++ b/ui/gtk/packet_win.c
@@ -172,7 +172,7 @@ create_packet_window_title(void)
* frame was dissected.
*/
for (i = 0; i < cfile.cinfo.num_cols; ++i) {
- g_string_append(title, cfile.cinfo.col_data[i]);
+ g_string_append(title, cfile.cinfo.columns[i].col_data);
g_string_append_c(title, ' ');
}
diff --git a/ui/packet_list_utils.c b/ui/packet_list_utils.c
index 0f8ab2b775..348fa9ccc5 100644
--- a/ui/packet_list_utils.c
+++ b/ui/packet_list_utils.c
@@ -37,7 +37,7 @@ right_justify_column (gint col, capture_file *cf)
if (!cf) return FALSE;
- switch (cf->cinfo.col_fmt[col]) {
+ switch (cf->cinfo.columns[col].col_fmt) {
case COL_NUMBER:
case COL_PACKET_LENGTH:
@@ -54,7 +54,7 @@ right_justify_column (gint col, capture_file *cf)
break;
case COL_CUSTOM:
- hfi = proto_registrar_get_byname(cf->cinfo.col_custom_field[col]);
+ hfi = proto_registrar_get_byname(cf->cinfo.columns[col].col_custom_field);
/* Check if this is a valid field and we have no strings lookup table */
if ((hfi != NULL) && ((hfi->strings == NULL) || !get_column_resolved(col))) {
/* Check for bool, framenum and decimal/octal integer types */
@@ -81,10 +81,10 @@ resolve_column (gint col, capture_file *cf)
if (!cf) return FALSE;
- switch (cf->cinfo.col_fmt[col]) {
+ switch (cf->cinfo.columns[col].col_fmt) {
case COL_CUSTOM:
- hfi = proto_registrar_get_byname(cf->cinfo.col_custom_field[col]);
+ hfi = proto_registrar_get_byname(cf->cinfo.columns[col].col_custom_field);
/* Check if this is a valid field */
if (hfi != NULL) {
/* Check if we have an OID or a strings table with integer values */
diff --git a/ui/qt/packet_dialog.cpp b/ui/qt/packet_dialog.cpp
index 09a1d939e9..89629dac41 100644
--- a/ui/qt/packet_dialog.cpp
+++ b/ui/qt/packet_dialog.cpp
@@ -97,7 +97,7 @@ PacketDialog::PacketDialog(QWidget &parent, CaptureFile &cf, frame_data *fdata)
// ElidedLabel doesn't support rich text / HTML
col_parts << QString("%1: %2")
.arg(get_column_title(i))
- .arg(cap_file_.capFile()->cinfo.col_data[i]);
+ .arg(cap_file_.capFile()->cinfo.columns[i].col_data);
}
col_info_ = col_parts.join(" " UTF8_MIDDLE_DOT " ");
setHintText();
diff --git a/ui/qt/packet_list.cpp b/ui/qt/packet_list.cpp
index f01b84a158..de4ce5bdeb 100644
--- a/ui/qt/packet_list.cpp
+++ b/ui/qt/packet_list.cpp
@@ -856,7 +856,7 @@ QString &PacketList::getFilterFromRowAndColumn()
epan_dissect_run(&edt, cap_file_->cd_t, &cap_file_->phdr, frame_tvbuff_new_buffer(fdata, &cap_file_->buf), fdata, &cap_file_->cinfo);
epan_dissect_fill_in_columns(&edt, TRUE, TRUE);
- if ((cap_file_->cinfo.col_custom_occurrence[ctx_column_]) ||
+ if ((cap_file_->cinfo.columns[ctx_column_].col_custom_occurrence) ||
(strchr (cap_file_->cinfo.col_expr.col_expr_val[ctx_column_], ',') == NULL))
{
/* Only construct the filter when a single occurrence is displayed
@@ -868,8 +868,8 @@ QString &PacketList::getFilterFromRowAndColumn()
*/
if (strlen(cap_file_->cinfo.col_expr.col_expr[ctx_column_]) != 0 &&
strlen(cap_file_->cinfo.col_expr.col_expr_val[ctx_column_]) != 0) {
- if (cap_file_->cinfo.col_fmt[ctx_column_] == COL_CUSTOM) {
- header_field_info *hfi = proto_registrar_get_byname(cap_file_->cinfo.col_custom_field[ctx_column_]);
+ if (cap_file_->cinfo.columns[ctx_column_].col_fmt == COL_CUSTOM) {
+ header_field_info *hfi = proto_registrar_get_byname(cap_file_->cinfo.columns[ctx_column_].col_custom_field);
if (hfi->parent == -1) {
/* Protocol only */
filter.append(cap_file_->cinfo.col_expr.col_expr[ctx_column_]);
diff --git a/ui/qt/packet_list_model.cpp b/ui/qt/packet_list_model.cpp
index cad606e6f3..80563be940 100644
--- a/ui/qt/packet_list_model.cpp
+++ b/ui/qt/packet_list_model.cpp
@@ -181,15 +181,15 @@ bool PacketListModel::recordLessThan(PacketListRecord *r1, PacketListRecord *r2)
cmp_val = frame_data_compare(sort_cap_file_->epan, r1->frameData(), r2->frameData(), COL_NUMBER);
} else if (text_sort_column_ < 0) {
// Column comes directly from frame data
- cmp_val = frame_data_compare(sort_cap_file_->epan, r1->frameData(), r2->frameData(), sort_cap_file_->cinfo.col_fmt[sort_column_]);
+ cmp_val = frame_data_compare(sort_cap_file_->epan, r1->frameData(), r2->frameData(), sort_cap_file_->cinfo.columns[sort_column_].col_fmt);
} else {
if (r1->columnString(sort_cap_file_, sort_column_).toByteArray().data() == r2->columnString(sort_cap_file_, sort_column_).toByteArray().data()) {
cmp_val = 0;
- } else if (sort_cap_file_->cinfo.col_fmt[sort_column_] == COL_CUSTOM) {
+ } else if (sort_cap_file_->cinfo.columns[sort_column_].col_fmt == COL_CUSTOM) {
header_field_info *hfi;
// Column comes from custom data
- hfi = proto_registrar_get_byname(sort_cap_file_->cinfo.col_custom_field[sort_column_]);
+ hfi = proto_registrar_get_byname(sort_cap_file_->cinfo.columns[sort_column_].col_custom_field);
if (hfi == NULL) {
cmp_val = frame_data_compare(sort_cap_file_->epan, r1->frameData(), r2->frameData(), COL_NUMBER);
diff --git a/ui/qt/packet_list_record.cpp b/ui/qt/packet_list_record.cpp
index d1875f964e..9211f9b371 100644
--- a/ui/qt/packet_list_record.cpp
+++ b/ui/qt/packet_list_record.cpp
@@ -192,7 +192,7 @@ void PacketListRecord::cacheColumnStrings(column_info *cinfo)
/* Column based on frame_data or it already contains a value */
if (text_col < 0) {
col_fill_in_frame_data(fdata_, cinfo, column, FALSE);
- col_text_.append(cinfo->col_data[column]);
+ col_text_.append(cinfo->columns[column].col_data);
continue;
}
@@ -222,12 +222,12 @@ void PacketListRecord::cacheColumnStrings(column_info *cinfo)
case COL_8021Q_VLAN_ID:
case COL_EXPERT:
case COL_FREQ_CHAN:
- if (cinfo->col_data[column] && cinfo->col_data[column] != cinfo->col_buf[column]) {
+ if (cinfo->columns[column].col_data && cinfo->columns[column].col_data != cinfo->columns[column].col_buf) {
/* This is a constant string, so we don't have to copy it */
// XXX - ui/gtk/packet_list_store.c uses G_MAXUSHORT. We don't do proper UTF8
// truncation in either case.
int col_text_len = MIN(qstrlen(cinfo->col_data[column]) + 1, COL_MAX_INFO_LEN);
- col_text_.append(QByteArray::fromRawData(cinfo->col_data[column], col_text_len));
+ col_text_.append(QByteArray::fromRawData(cinfo->columns[column].col_data, col_text_len));
break;
}
/* !! FALL-THROUGH!! */
@@ -238,7 +238,7 @@ void PacketListRecord::cacheColumnStrings(column_info *cinfo)
// XXX Use QContiguousCache?
col_text_.append(cinfo->col_expr.col_expr_val[column]);
} else {
- col_text_.append(cinfo->col_data[column]);
+ col_text_.append(cinfo->columns[column].col_data);
}
break;
}
@@ -254,7 +254,7 @@ void PacketListRecord::cacheColumnStrings(column_info *cinfo)
if (text_col < 0) {
col_fill_in_frame_data(fdata_, cinfo, column, FALSE);
}
- col_text = cinfo->col_data[column];
+ col_text = cinfo->columns[column].col_data;
}
col_text_.append(col_text);
col_lines += col_text.count('\n');
diff --git a/ui/tap-sequence-analysis.c b/ui/tap-sequence-analysis.c
index eb35b9125c..72c3f7bad8 100644
--- a/ui/tap-sequence-analysis.c
+++ b/ui/tap-sequence-analysis.c
@@ -75,6 +75,7 @@ static gboolean
seq_analysis_frame_packet( void *ptr, packet_info *pinfo, epan_dissect_t *edt _U_, const void *dummy _U_)
{
seq_analysis_info_t *sainfo = (seq_analysis_info_t *) ptr;
+ col_item_t* col_item;
if ((sainfo->all_packets)||(pinfo->fd->flags.passed_dfilter==1)){
int i;
@@ -108,8 +109,9 @@ seq_analysis_frame_packet( void *ptr, packet_info *pinfo, epan_dissect_t *edt _U
if (pinfo->cinfo->col_first[COL_INFO]>=0){
for (i = pinfo->cinfo->col_first[COL_INFO]; i <= pinfo->cinfo->col_last[COL_INFO]; i++) {
- if (pinfo->cinfo->fmt_matx[i][COL_INFO]) {
- colinfo = g_strdup(pinfo->cinfo->col_data[i]);
+ col_item = &pinfo->cinfo->columns[i];
+ if (col_item->fmt_matx[COL_INFO]) {
+ colinfo = g_strdup(col_item->col_data);
/* break; ? or g_free(colinfo); before g_strdup() */
}
}
@@ -118,8 +120,9 @@ seq_analysis_frame_packet( void *ptr, packet_info *pinfo, epan_dissect_t *edt _U
if (pinfo->cinfo->col_first[COL_PROTOCOL]>=0){
for (i = pinfo->cinfo->col_first[COL_PROTOCOL]; i <= pinfo->cinfo->col_last[COL_PROTOCOL]; i++) {
- if (pinfo->cinfo->fmt_matx[i][COL_PROTOCOL]) {
- protocol = g_strdup(pinfo->cinfo->col_data[i]);
+ col_item = &pinfo->cinfo->columns[i];
+ if (col_item->fmt_matx[COL_PROTOCOL]) {
+ protocol = g_strdup(col_item->col_data);
/* break; ? or g_free(protocol); before g_strdup() */
}
}