diff options
author | Guy Harris <guy@alum.mit.edu> | 2002-06-04 07:03:57 +0000 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2002-06-04 07:03:57 +0000 |
commit | 392a7dfc04475dd440efa70ea4b786a96f282c19 (patch) | |
tree | 98dc21a0a82fcaed9cd383f9659adc50973f242a /gtk/packet_win.c | |
parent | 1155a2fb437b43521367b7c75b9b5cb0a6a2de72 (diff) |
Get rid of the "data_src" member of the "frame_data" structure; put it
in the "packet_info" structure instead, as we don't need a pointer for
every single frame in the capture file, just for each frame for which we
currently have an open "epan_dissect_t".
svn path=/trunk/; revision=5614
Diffstat (limited to 'gtk/packet_win.c')
-rw-r--r-- | gtk/packet_win.c | 84 |
1 files changed, 33 insertions, 51 deletions
diff --git a/gtk/packet_win.c b/gtk/packet_win.c index 9414b83897..530ab97827 100644 --- a/gtk/packet_win.c +++ b/gtk/packet_win.c @@ -3,7 +3,7 @@ * * Copyright 2000, Jeffrey C. Foster <jfoste@woodward.com> * - * $Id: packet_win.c,v 1.36 2002/03/31 23:11:04 guy Exp $ + * $Id: packet_win.c,v 1.37 2002/06/04 07:03:56 guy Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -87,53 +87,46 @@ static void new_tree_view_select_row_cb( GtkCTree *ctree, GList *node, static void new_tree_view_unselect_row_cb( GtkCTree *ctree, GList *node, gint column, gpointer user_data); -static void create_new_window( char *Title, gint tv_size, gint bv_size); static void destroy_new_window(GtkObject *object, gpointer user_data); -void new_window_cb(GtkWidget *w _U_){ - - #define NewWinTitleLen 1000 - - int row; - gint tv_size = 95, bv_size = 75; - int i; - char Title[ NewWinTitleLen] = ""; - char *TextPtr; - - /* build title of window by getting */ - /* data from the packet_list GtkCList */ - /* Find what row this packet is in. */ - row = gtk_clist_find_row_from_data(GTK_CLIST(packet_list), - cfile.current_frame); - g_assert(row != -1); - for( i = 0; i < cfile.cinfo.num_cols; ++i){ - - if ( gtk_clist_get_text(GTK_CLIST( packet_list), - row, i, &TextPtr)){ - - if (( strlen( Title) + strlen( TextPtr)) - < ( NewWinTitleLen - 1)){ - - strcat( Title, TextPtr); - strcat( Title, " "); - } - } - } - - create_new_window ( Title, tv_size, bv_size); -} - - -static void -create_new_window(char *Title, gint tv_size, gint bv_size) +void new_window_cb(GtkWidget *w _U_) { + #define NewWinTitleLen 1000 + char Title[NewWinTitleLen] = ""; + char *TextPtr; + gint tv_size = 95, bv_size = 75; GtkWidget *main_w, *main_vbox, *pane, *tree_view, *tv_scrollw, *bv_nb_ptr; struct PacketWinData *DataPtr; - + int i; + + /* Allocate data structure to represent this window. */ + DataPtr = (struct PacketWinData *) g_malloc(sizeof(struct PacketWinData)); + + DataPtr->frame = cfile.current_frame; + memcpy(&DataPtr->pseudo_header, &cfile.pseudo_header, sizeof DataPtr->pseudo_header); + DataPtr->pd = g_malloc(DataPtr->frame->cap_len); + memcpy(DataPtr->pd, cfile.pd, DataPtr->frame->cap_len); + DataPtr->edt = epan_dissect_new(TRUE, TRUE); + epan_dissect_run(DataPtr->edt, &DataPtr->pseudo_header, DataPtr->pd, + DataPtr->frame, &cfile.cinfo); + epan_dissect_fill_in_columns(DataPtr->edt); + main_w = gtk_window_new(GTK_WINDOW_TOPLEVEL); + /* + * Build title of window by getting column data constructed when the + * frame was dissected. + */ + for (i = 0; i < cfile.cinfo.num_cols; ++i) { + TextPtr = cfile.cinfo.col_data[i]; + if ((strlen(Title) + strlen(TextPtr)) < NewWinTitleLen - 1) { + strcat(Title, TextPtr); + strcat(Title, " "); + } + } + gtk_window_set_title(GTK_WINDOW(main_w), Title); gtk_window_set_default_size(GTK_WINDOW(main_w), DEF_WIDTH, -1); @@ -156,16 +149,6 @@ create_new_window(char *Title, gint tv_size, gint bv_size) /* Byte view */ bv_nb_ptr = create_byte_view(bv_size, pane); - /* Allocate data structure to represent this window. */ - DataPtr = (struct PacketWinData *) g_malloc(sizeof(struct PacketWinData)); - - DataPtr->frame = cfile.current_frame; - memcpy(&DataPtr->pseudo_header, &cfile.pseudo_header, sizeof DataPtr->pseudo_header); - DataPtr->pd = g_malloc(DataPtr->frame->cap_len); - memcpy(DataPtr->pd, cfile.pd, DataPtr->frame->cap_len); - DataPtr->edt = epan_dissect_new(TRUE, TRUE); - epan_dissect_run(DataPtr->edt, &DataPtr->pseudo_header, DataPtr->pd, - DataPtr->frame, &cfile.cinfo); DataPtr->main = main_w; DataPtr->tv_scrollw = tv_scrollw; DataPtr->tree_view = tree_view; @@ -183,8 +166,7 @@ create_new_window(char *Title, gint tv_size, gint bv_size) GTK_SIGNAL_FUNC(destroy_new_window), DataPtr); /* draw the protocol tree & print hex data */ - add_byte_views(DataPtr->frame, DataPtr->edt->tree, tree_view, - DataPtr->bv_nb_ptr); + add_byte_views(DataPtr->edt, tree_view, DataPtr->bv_nb_ptr); proto_tree_draw(DataPtr->edt->tree, tree_view); DataPtr->finfo_selected = NULL; |