From 8fa4a440a8f85ff9078c7c28e3747decede0848e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Valverde?= Date: Thu, 23 Nov 2017 02:06:35 +0000 Subject: [PATCH] GTK: Remove packet editor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Removes limited experimental feature for deprecated UI. Change-Id: Ib3ccfae89dd2a674ebbde346a442fa1cf6587f26 Reviewed-on: https://code.wireshark.org/review/24563 Petri-Dish: João Valverde Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman --- CMakeOptions.txt | 1 - cfile.h | 11 - cmakeconfig.h.in | 3 - configure.ac | 8 - docbook/release-notes.asciidoc | 1 + file.c | 67 --- file.h | 12 - frame_tvbuff.c | 12 +- ui/gtk/bytes_view.c | 3 - ui/gtk/main_menubar.c | 36 -- ui/gtk/packet_win.c | 785 --------------------------------- ui/qt/main_window_slots.cpp | 4 - 12 files changed, 3 insertions(+), 940 deletions(-) diff --git a/CMakeOptions.txt b/CMakeOptions.txt index e66cbed718..b60beeac9a 100644 --- a/CMakeOptions.txt +++ b/CMakeOptions.txt @@ -45,7 +45,6 @@ else() endif() option(ENABLE_QT5 "Use Qt5 instead of Qt4 to build wireshark" ON) option(ENABLE_PCAP "Enable libpcap support (required for capturing)" ON) -option(WANT_PACKET_EDITOR "Enable packet editor (experimental)" ON) # # AirPcap support is available only on Windows. It might be nice to have it # check whether the AirPcap SDK is available, and turn AirPcap support on diff --git a/cfile.h b/cfile.h index 520bbd09ec..bfb7d9bbca 100644 --- a/cfile.h +++ b/cfile.h @@ -43,14 +43,6 @@ typedef enum { SD_BACKWARD } search_direction; -#ifdef WANT_PACKET_EDITOR -/* XXX, where this struct should go? */ -typedef struct { - struct wtap_pkthdr phdr; /**< Modified packet header */ - char *pd; /**< Modified packet data */ -} modified_frame_data; -#endif - typedef struct _capture_file { epan_t *epan; file_state state; /* Current state of capture file */ @@ -108,9 +100,6 @@ typedef struct _capture_file { gint current_row; /* Row number for current frame */ epan_dissect_t *edt; /* Protocol dissection for currently selected packet */ field_info *finfo_selected; /* Field info for currently selected field */ -#ifdef WANT_PACKET_EDITOR - GTree *edited_frames; /* BST with modified frames */ -#endif gpointer window; /* Top-level window associated with file */ GTree *frames_user_comments; /* BST with user comments for frames (key = frame_data) */ gulong computed_elapsed; /* Elapsed time to load the file (in msec). */ diff --git a/cmakeconfig.h.in b/cmakeconfig.h.in index 7f21a97ad2..01810a1ec1 100644 --- a/cmakeconfig.h.in +++ b/cmakeconfig.h.in @@ -381,9 +381,6 @@ /* Define if we have QtWinExtras */ /* #cmakedefine QT_WINEXTRAS_LIB 1 */ -/* Support for packet editor */ -#cmakedefine WANT_PACKET_EDITOR 1 - /* Define to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel and VAX). */ #cmakedefine WORDS_BIGENDIAN 1 diff --git a/configure.ac b/configure.ac index 8135af63c2..a4cf3d8b19 100644 --- a/configure.ac +++ b/configure.ac @@ -1098,14 +1098,6 @@ AC_ARG_ENABLE(wireshark, enable_wireshark=$enableval,enable_wireshark=yes) AM_CONDITIONAL(BUILDING_WIRESHARK, test x$enable_wireshark = xyes) -AC_ARG_ENABLE(packet-editor, - AC_HELP_STRING( [--enable-packet-editor], - [add support for packet editor in Wireshark @<:@default=yes@:>@]), - enable_packet_editor=$enableval,enable_packet_editor=yes) -if test x$enable_packet_editor = xyes; then - AC_DEFINE(WANT_PACKET_EDITOR, 1, [Support for packet editor]) -fi - GLIB_MIN_VERSION=2.22.0 AC_SUBST(GLIB_MIN_VERSION) # GLib checks; we require GLib $GLIB_MIN_VERSION or later, and require gmodule diff --git a/docbook/release-notes.asciidoc b/docbook/release-notes.asciidoc index da9f2156a2..acf51a6b39 100644 --- a/docbook/release-notes.asciidoc +++ b/docbook/release-notes.asciidoc @@ -59,6 +59,7 @@ since version 2.4.0: * Add Flow Graph functionality to TShark using -z * Capinfos now prints SHA256 hashes in addition to RIPEMD160 and SHA1. MD5 output has been removed. +* Packet editor has been removed (GTK only experimental feature). //=== Removed Dissectors diff --git a/file.c b/file.c index 31acf10626..f8748c4f83 100644 --- a/file.c +++ b/file.c @@ -413,12 +413,6 @@ cf_close(capture_file *cf) free_frame_data_sequence(cf->frames); cf->frames = NULL; } -#ifdef WANT_PACKET_EDITOR - if (cf->edited_frames) { - g_tree_destroy(cf->edited_frames); - cf->edited_frames = NULL; - } -#endif if (cf->frames_user_comments) { g_tree_destroy(cf->frames_user_comments); cf->frames_user_comments = NULL; @@ -1497,23 +1491,6 @@ cf_read_record_r(capture_file *cf, const frame_data *fdata, int err; gchar *err_info; -#ifdef WANT_PACKET_EDITOR - /* if fdata->file_off == -1 it means packet was edited, and we must find data inside edited_frames tree */ - if (G_UNLIKELY(fdata->file_off == -1)) { - const modified_frame_data *frame = (const modified_frame_data *) g_tree_lookup(cf->edited_frames, GINT_TO_POINTER(fdata->num)); - - if (!frame) { - simple_error_message_box("fdata->file_off == -1, but can't find modified frame."); - return FALSE; - } - - *phdr = frame->phdr; - ws_buffer_assure_space(buf, frame->phdr.caplen); - memcpy(ws_buffer_start_ptr(buf), frame->pd, frame->phdr.caplen); - return TRUE; - } -#endif - if (!wtap_seek_read(cf->wth, fdata->file_off, phdr, buf, &err, &err_info)) { cfile_read_failure_alert_box(cf->filename, err, err_info); return FALSE; @@ -3953,50 +3930,6 @@ cf_add_ip_name_from_string(capture_file *cf, const char *addr, const char *name) return TRUE; } -#ifdef WANT_PACKET_EDITOR -static gint -g_direct_compare_func(gconstpointer a, gconstpointer b, gpointer user_data _U_) -{ - if (a > b) - return 1; - else if (a < b) - return -1; - else - return 0; -} - -static void -modified_frame_data_free(gpointer data) -{ - modified_frame_data *mfd = (modified_frame_data *)data; - - g_free(mfd->pd); - g_free(mfd); -} - -/* - * Give a frame new, edited data. - */ -void -cf_set_frame_edited(capture_file *cf, frame_data *fd, - struct wtap_pkthdr *phdr, guint8 *pd) -{ - modified_frame_data *mfd = (modified_frame_data *)g_malloc(sizeof(modified_frame_data)); - - mfd->phdr = *phdr; - mfd->pd = (char *)pd; - - if (cf->edited_frames == NULL) - cf->edited_frames = g_tree_new_full(g_direct_compare_func, NULL, NULL, - modified_frame_data_free); - g_tree_insert(cf->edited_frames, GINT_TO_POINTER(fd->num), mfd); - fd->file_off = -1; - - /* Mark the file as having unsaved changes */ - cf->unsaved_changes = TRUE; -} -#endif - typedef struct { wtap_dumper *pdh; const char *fname; diff --git a/file.h b/file.h index 5e1da43ebf..a66ef8b7be 100644 --- a/file.h +++ b/file.h @@ -718,18 +718,6 @@ guint32 cf_comment_types(capture_file *cf); */ gboolean cf_add_ip_name_from_string(capture_file *cf, const char *addr, const char *name); -#ifdef WANT_PACKET_EDITOR -/** - * Give a frame new, edited data. - * - * @param cf the capture file - * @param fd frame_data structure for the frame - * @param phdr the struct wtap_pkthdr for the frame - * @param pd the raw packet data for the frame - */ -void cf_set_frame_edited(capture_file *cf, frame_data *fd, struct wtap_pkthdr *phdr, guint8 *pd); -#endif - #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/frame_tvbuff.c b/frame_tvbuff.c index b60a345356..e050aea113 100644 --- a/frame_tvbuff.c +++ b/frame_tvbuff.c @@ -208,11 +208,7 @@ frame_tvbuff_new(const frame_data *fd, const guint8 *buf) frame_tvb = (struct tvb_frame *) tvb; /* XXX, wtap_can_seek() */ - if (cfile.wth && cfile.wth->random_fh -#ifdef WANT_PACKET_EDITOR - && fd->file_off != -1 /* generic clone for modified packets */ -#endif - ) { + if (cfile.wth && cfile.wth->random_fh) { frame_tvb->wth = cfile.wth; frame_tvb->file_off = fd->file_off; frame_tvb->offset = 0; @@ -313,11 +309,7 @@ file_tvbuff_new(const frame_data *fd, const guint8 *buf) frame_tvb = (struct tvb_frame *) tvb; /* XXX, wtap_can_seek() */ - if (cfile.wth && cfile.wth->random_fh -#ifdef WANT_PACKET_EDITOR - && fd->file_off != -1 /* generic clone for modified packets */ -#endif - ) { + if (cfile.wth && cfile.wth->random_fh) { frame_tvb->wth = cfile.wth; frame_tvb->file_off = fd->file_off; frame_tvb->offset = 0; diff --git a/ui/gtk/bytes_view.c b/ui/gtk/bytes_view.c index 6847fdea8d..86fff12865 100644 --- a/ui/gtk/bytes_view.c +++ b/ui/gtk/bytes_view.c @@ -98,9 +98,6 @@ static void bytes_view_adjustment_set(BytesView *); static void bytes_view_init(BytesView *bv) { -#ifdef WANT_PACKET_EDITOR - gtk_widget_set_can_focus(GTK_WIDGET(bv), TRUE); -#endif bv->context = NULL; bv->encoding = PACKET_CHAR_ENC_CHAR_ASCII; diff --git a/ui/gtk/main_menubar.c b/ui/gtk/main_menubar.c index 2541604a4b..31720adc69 100644 --- a/ui/gtk/main_menubar.c +++ b/ui/gtk/main_menubar.c @@ -171,14 +171,6 @@ new_window_cb_ref(GtkWidget *widget) new_packet_window(widget, TRUE, FALSE); } -#ifdef WANT_PACKET_EDITOR -static void -edit_window_cb(GtkWidget *widget _U_) -{ - new_packet_window(widget, FALSE, TRUE); -} -#endif - static void colorize_conversation_cb(conversation_filter_t* color_filter, int action_num) { @@ -816,9 +808,6 @@ static const char *ui_desc_menubar = " \n" " \n" " \n" -#ifdef WANT_PACKET_EDITOR -" \n" -#endif " \n" " \n" " \n" @@ -1326,9 +1315,6 @@ static const GtkActionEntry main_menu_bar_entries[] = { { "/Edit/ConfigurationProfiles", NULL, "_Configuration Profiles...", "A", NULL, G_CALLBACK(profile_dialog_cb) }, { "/Edit/Preferences", GTK_STOCK_PREFERENCES, "_Preferences...", "P", NULL, G_CALLBACK(menus_prefs_cb) }, -#ifdef WANT_PACKET_EDITOR - { "/Edit/EditPacket", NULL, "_Edit Packet", NULL, NULL, G_CALLBACK(edit_window_cb) }, -#endif { "/Edit/AddEditPktComment", WIRESHARK_STOCK_EDIT, "Packet Comment...", "C", NULL, G_CALLBACK(edit_packet_comment_dlg) }, { "/Edit/AddEditCaptureComment", NULL, "Capture Comment...", "C", NULL, G_CALLBACK(edit_capture_comment_dlg_launch) }, @@ -2122,9 +2108,6 @@ static const char *ui_desc_packet_list_menu_popup = " \n" " \n" " \n" -#ifdef WANT_PACKET_EDITOR -" \n" -#endif " \n" " \n" " \n" @@ -2207,9 +2190,6 @@ static const GtkActionEntry packet_list_menu_popup_action_entries[] = { { "/Set Time Reference", WIRESHARK_STOCK_TIME, "Set Time Reference (toggle)", NULL, NULL, G_CALLBACK(packet_list_menu_set_ref_time_cb) }, { "/TimeShift", WIRESHARK_STOCK_TIME, "Time Shift...", NULL, NULL, G_CALLBACK(time_shift_cb) }, { "/ManuallyResolveAddress", NULL, "Manually Resolve Address", NULL, NULL, G_CALLBACK(manual_addr_resolv_dlg) }, -#ifdef WANT_PACKET_EDITOR - { "/Edit/EditPacket", NULL, "_Edit Packet", NULL, NULL, G_CALLBACK(edit_window_cb) }, -#endif { "/Edit/AddEditPktComment", WIRESHARK_STOCK_EDIT, "Packet Comment...", NULL, NULL, G_CALLBACK(edit_packet_comment_dlg) }, { "/Conversation Filter", NULL, "Conversation Filter", NULL, NULL, NULL }, @@ -2307,9 +2287,6 @@ static const char *ui_desc_tree_view_menu_popup = " \n" " \n" " \n" -#ifdef WANT_PACKET_EDITOR -" \n" -#endif " \n" " \n" " \n" @@ -2365,9 +2342,6 @@ static const GtkActionEntry tree_view_menu_popup_action_entries[] = { { "/Copy/Bytes/BinaryStream", NULL, "Binary Stream", NULL, NULL, G_CALLBACK(packet_list_menu_copy_bytes_bin_strm_cb) }, { "/ExportSelectedPacketBytes", NULL, "Export Selected Packet Bytes...", NULL, NULL, G_CALLBACK(savehex_cb) }, -#ifdef WANT_PACKET_EDITOR - { "/Edit/EditPacket", NULL, "_Edit Packet", NULL, NULL, G_CALLBACK(edit_window_cb) }, -#endif { "/WikiProtocolPage", WIRESHARK_STOCK_WIKI, "Wiki Protocol Page", NULL, NULL, G_CALLBACK(selected_ptree_info_cb) }, { "/FilterFieldReference", WIRESHARK_STOCK_INTERNET, "Filter Field Reference", NULL, NULL, G_CALLBACK(selected_ptree_ref_cb) }, { "/ProtocolHelp", NULL, "Protocol Help", NULL, NULL, NULL }, @@ -4550,12 +4524,6 @@ set_menus_for_selected_packet(capture_file *cf) set_menu_sensitivity(ui_manager_main_menubar, "/Menubar/EditMenu/IgnorePacket", frame_selected); -#ifdef WANT_PACKET_EDITOR - set_menu_sensitivity(ui_manager_main_menubar, "/Menubar/EditMenu/EditPacket", - prefs.gui_packet_editor ? frame_selected : FALSE); - set_menu_sensitivity(ui_manager_packet_list_menu, "/PacketListMenuPopup/EditPacket", - prefs.gui_packet_editor ? frame_selected : FALSE); -#endif /* WANT_PACKET_EDITOR */ set_menu_sensitivity(ui_manager_main_menubar, "/Menubar/EditMenu/AddEditPktComment", frame_selected && wtap_dump_can_write(cf->linktypes, WTAP_COMMENT_PER_PACKET)); set_menu_sensitivity(ui_manager_main_menubar, "/Menubar/EditMenu/AddEditCaptureComment", @@ -5177,10 +5145,6 @@ set_menus_for_selected_tree_row(capture_file *cf) cf->finfo_selected->tree_type != -1); set_menu_sensitivity(ui_manager_tree_view_menu, "/TreeViewPopup/CollapseSubtrees", cf->finfo_selected->tree_type != -1); -#ifdef WANT_PACKET_EDITOR - set_menu_sensitivity(ui_manager_tree_view_menu, "/TreeViewPopup/EditPacket", - prefs.gui_packet_editor ? TRUE : FALSE); -#endif set_menu_sensitivity(ui_manager_tree_view_menu, "/TreeViewPopup/WikiProtocolPage", (id == -1) ? FALSE : TRUE); set_menu_sensitivity(ui_manager_tree_view_menu, "/TreeViewPopup/FilterFieldReference", diff --git a/ui/gtk/packet_win.c b/ui/gtk/packet_win.c index 50cae431ae..4a602b094c 100644 --- a/ui/gtk/packet_win.c +++ b/ui/gtk/packet_win.c @@ -87,38 +87,6 @@ struct PacketWinData { int pd_bitoffset; }; -#ifdef WANT_PACKET_EDITOR -struct FieldinfoWinData { - epan_t *epan; - frame_data *frame; /* The frame being displayed */ - struct wtap_pkthdr phdr; /* Packet header */ - guint8 *pd; /* Packet data */ - int start_offset; - - field_info *finfo; -/* fvalue */ - GtkWidget *edit; - GtkWidget *repr; -/* byteviews */ - GtkWidget *bv; - GtkWidget *app_bv; - - int pd_offset; - int pd_bitoffset; -}; - -struct CommonWinData { - frame_data *frame; /* The frame being displayed */ - guint8 *pd; /* Data for packet */ - - int pd_offset; - int pd_bitoffset; - int val; -}; - -static gboolean edit_pkt_common_key_pressed_cb(GdkEventKey *event, struct CommonWinData *DataPtr); -#endif - /* List of all the packet-detail windows popped up. */ static GList *detail_windows; @@ -199,708 +167,6 @@ redissect_packet_window(gpointer object, gpointer user_data _U_) g_free(title); } -#ifdef WANT_PACKET_EDITOR -static field_info * -proto_finfo_find(proto_tree *tree, field_info *old_finfo) -{ - proto_node *node; - - for (node = tree->first_child; node != NULL; node = node->next) { - field_info *cur = PNODE_FINFO(node); - - if (!cur) - continue; - - /* check everything, if it doesn't work report to me */ - if (cur->hfinfo == old_finfo->hfinfo && - cur->start == old_finfo->start && cur->length == old_finfo->length && - cur->appendix_start == old_finfo->appendix_start && cur->appendix_length == old_finfo->appendix_length && - cur->tree_type == old_finfo->tree_type && cur->flags == old_finfo->flags) - { - return cur; - } - - if ((cur = proto_finfo_find((proto_tree *)node, old_finfo))) - return cur; - } - return NULL; -} - -static gboolean -finfo_window_refresh(struct FieldinfoWinData *DataPtr) -{ - field_info *old_finfo = DataPtr->finfo; - field_info *finfo; - epan_dissect_t edt; - - const guint8 *data; - GtkWidget *byte_view; - gchar label_str[ITEM_LABEL_LENGTH]; - - /* always update byteviews */ - if (DataPtr->bv && (byte_view = get_notebook_bv_ptr(DataPtr->bv))) { - int pos_inside = DataPtr->pd_offset - DataPtr->start_offset - old_finfo->start; - - if (pos_inside < 0 || pos_inside >= old_finfo->length) - pos_inside = -1; - - data = DataPtr->pd + DataPtr->start_offset + old_finfo->start; - packet_hex_editor_print(byte_view, data, DataPtr->frame, pos_inside, DataPtr->pd_bitoffset, old_finfo->length); - } - - if (DataPtr->app_bv && (byte_view = get_notebook_bv_ptr(DataPtr->app_bv))) { - int pos_inside = DataPtr->pd_offset - DataPtr->start_offset - old_finfo->appendix_start; - - if (pos_inside < 0 || pos_inside >= old_finfo->appendix_length) - pos_inside = -1; - - data = DataPtr->pd + DataPtr->start_offset + old_finfo->appendix_start; - packet_hex_editor_print(byte_view, data, DataPtr->frame, pos_inside, DataPtr->pd_bitoffset, old_finfo->appendix_length); - } - - /* redisect */ - epan_dissect_init(&edt, cfile.epan, TRUE, TRUE); - /* Makes any sense? - if (old_finfo->hfinfo) - proto_tree_prime_with_hfid(edt.tree, old_finfo->hfinfo->id); - */ - epan_dissect_run(&edt, cfile.cd_t, &DataPtr->phdr, frame_tvbuff_new(DataPtr->frame, DataPtr->pd), DataPtr->frame, NULL); - - /* Try to find finfo which looks like old_finfo. - * We might not found one, if protocol requires specific magic values, etc... */ - if (!(finfo = proto_finfo_find(edt.tree, old_finfo))) { - epan_dissect_cleanup(&edt); - gtk_entry_set_text(GTK_ENTRY(DataPtr->repr), "[finfo not found, try with another value, or restore old. If you think it is bug, fill bugreport]"); - return FALSE; - } - - /* XXX, update fvalue_edit, e.g. when hexedit was changed */ - - if (finfo->rep == NULL) { - proto_item_fill_label(finfo, label_str); - gtk_entry_set_text(GTK_ENTRY(DataPtr->repr), label_str); - } else - gtk_entry_set_text(GTK_ENTRY(DataPtr->repr), finfo->rep->representation); - - epan_dissect_cleanup(&edt); - return TRUE; -} - -static void -finfo_integer_common(struct FieldinfoWinData *DataPtr, guint64 u_val) -{ - const field_info *finfo = DataPtr->finfo; - const header_field_info *hfinfo = finfo->hfinfo; - /* XXX, appendix? */ - unsigned int finfo_offset = DataPtr->start_offset + finfo->start; - int finfo_length = finfo->length; - - if (finfo_offset <= DataPtr->frame->cap_len && finfo_offset + finfo_length <= DataPtr->frame->cap_len) { - guint64 u_mask = hfinfo->bitmask; - - while (finfo_length--) { - guint8 *ptr = (FI_GET_FLAG(finfo, FI_LITTLE_ENDIAN)) ? - &(DataPtr->pd[finfo_offset++]) : - &(DataPtr->pd[finfo_offset + finfo_length]); - - if (u_mask) { - guint8 n_val = *ptr; - int i; - - for (i = 0; i < 8; i++) { - if (u_mask & 1) { - if (u_val & 1) - n_val |= (1 << i); - else - n_val &= ~(1 << i); - } - u_mask >>= 1; - u_val >>= 1; - } - *ptr = n_val; - - if (!u_mask) - break; - } else { - *ptr = u_val & 0xff; - u_val >>= 8; - } - } - } - finfo_window_refresh(DataPtr); -} - -static void -finfo_string_changed(GtkEditable *editable, gpointer user_data) -{ - struct FieldinfoWinData *DataPtr = (struct FieldinfoWinData *) user_data; - - /* XXX, appendix? */ - const field_info *finfo = DataPtr->finfo; - unsigned int finfo_offset = DataPtr->start_offset + finfo->start; - int finfo_length = finfo->length; - int finfo_type = (finfo->hfinfo) ? finfo->hfinfo->type : FT_NONE; - - const gchar *val = gtk_entry_get_text(GTK_ENTRY(editable)); - - if (finfo_offset <= DataPtr->frame->cap_len && finfo_offset + finfo_length <= DataPtr->frame->cap_len) { - /* strncpy */ - while (finfo_length && *val) { - DataPtr->pd[finfo_offset++] = *val; - finfo_length--; - val++; - } - - /* When FT_STRINGZ is there free space for NUL? */ - if (finfo_type == FT_STRINGZ && finfo_length) { - DataPtr->pd[finfo_offset++] = '\0'; - finfo_length--; - } - - /* XXX, string shorter than previous one. Warn user (red background?), for now fill with NULs */ - while (finfo_length > 0) { - DataPtr->pd[finfo_offset++] = '\0'; - finfo_length--; - } - } - finfo_window_refresh(DataPtr); -} - -static void -finfo_boolean_changed(GtkToggleButton *togglebutton, gpointer user_data) -{ - struct FieldinfoWinData *DataPtr = (struct FieldinfoWinData *) user_data; - - gboolean val = gtk_toggle_button_get_active(togglebutton); - - finfo_integer_common(DataPtr, val ? G_MAXUINT64 : 0); -} - -static void -finfo_integer_changed(GtkSpinButton *spinbutton, gpointer user_data) -{ - struct FieldinfoWinData *DataPtr = (struct FieldinfoWinData *) user_data; - - const field_info *finfo = DataPtr->finfo; - const header_field_info *hfinfo = finfo->hfinfo; - int finfo_type = (hfinfo) ? hfinfo->type : FT_NONE; - - gdouble val = gtk_spin_button_get_value(spinbutton); - guint64 u_val; - - if (finfo_type == FT_INT8 || finfo_type == FT_INT16 || finfo_type == FT_INT24 || finfo_type == FT_INT32 || finfo_type == FT_INT64) - u_val = (guint64) ((gint64) val); - - else if (finfo_type == FT_UINT8 || finfo_type == FT_UINT16 || finfo_type == FT_UINT24 || finfo_type == FT_UINT32 || finfo_type == FT_UINT64) - u_val = (guint64) val; - else { - g_assert_not_reached(); - return; - } - - if (hfinfo->bitmask) - u_val <<= hfinfo_bitshift(hfinfo); - - finfo_integer_common(DataPtr, u_val); -} - -static void -finfo_ipv4_changed(GtkSpinButton *spinbutton, gpointer user_data) -{ - struct FieldinfoWinData *DataPtr = (struct FieldinfoWinData *) user_data; - - gdouble val = gtk_spin_button_get_value(spinbutton); - - finfo_integer_common(DataPtr, (guint32) val); -} - -static gboolean -finfo_bv_key_pressed_cb(GtkWidget *bv _U_, GdkEventKey *event, gpointer user_data) -{ - struct FieldinfoWinData *DataPtr = (struct FieldinfoWinData *)user_data; - const field_info *finfo = DataPtr->finfo; - struct CommonWinData data; - gboolean have_appendix; - gboolean ret; - - /* save */ - data.frame = DataPtr->frame; - data.pd = DataPtr->pd; - data.pd_offset = DataPtr->pd_offset; - data.pd_bitoffset = DataPtr->pd_bitoffset; - - ret = edit_pkt_common_key_pressed_cb(event, &data); - - /* restore */ - DataPtr->pd_offset = data.pd_offset; - DataPtr->pd_bitoffset = data.pd_bitoffset; - - /* XXX, assuming finfo->appendix_start >= finfo->start, and if appendix exists, main exists also. - * easy to fix if needed */ - have_appendix = (finfo->appendix_start >= 0 && finfo->appendix_length > 0); - - if ((DataPtr->pd_offset >= DataPtr->start_offset + finfo->start && DataPtr->pd_offset < DataPtr->start_offset + finfo->start + finfo->length) || - (have_appendix && DataPtr->pd_offset >= DataPtr->start_offset + finfo->appendix_start && DataPtr->pd_offset < DataPtr->start_offset + finfo->appendix_start + finfo->appendix_length)) - { /* pd_offset ok */ } - else - if (have_appendix && DataPtr->pd_offset >= DataPtr->start_offset + finfo->appendix_start + finfo->appendix_length) { - DataPtr->pd_offset = DataPtr->start_offset + finfo->start; - DataPtr->pd_bitoffset = 0; /* first bit */ - - } else if (DataPtr->pd_offset >= DataPtr->start_offset + finfo->start + finfo->length) { - if (have_appendix) - DataPtr->pd_offset = DataPtr->start_offset + finfo->appendix_start; - else - DataPtr->pd_offset = DataPtr->start_offset + finfo->start; - DataPtr->pd_bitoffset = 0; /* first bit */ - } - else - if (DataPtr->pd_offset < DataPtr->start_offset + finfo->start) { - if (have_appendix) - DataPtr->pd_offset = DataPtr->start_offset + finfo->appendix_start + finfo->appendix_length-1; - else - DataPtr->pd_offset = DataPtr->start_offset + finfo->start + finfo->length-1; - /* XXX, last bit/octect? */ - - } else if (have_appendix && DataPtr->pd_offset < DataPtr->start_offset + finfo->appendix_start) { - DataPtr->pd_offset = DataPtr->start_offset + finfo->start + finfo->length-1; - /* XXX, last bit/octect? */ - } - - if (ret) - finfo_window_refresh(DataPtr); - return ret; -} - -static gint -finfo_ipv4_input(GtkSpinButton *spinbutton, gpointer arg1, gpointer user_data _U_) -{ - const gchar *addr_str = gtk_entry_get_text(GTK_ENTRY(spinbutton)); - gdouble *out_val = (gdouble *) arg1; - guint32 addr; -#if 0 - /* XXX, get_host_ipaddr() support hostname resolution */ - if (!get_host_ipaddr(addr_str, &addr)) - return GTK_INPUT_ERROR; - addr = GUINT32_FROM_BE(addr); -#else - unsigned int a0, a1, a2, a3; - - if (sscanf(addr_str, "%u.%u.%u.%u", &a0, &a1, &a2, &a3) != 4) - return GTK_INPUT_ERROR; - - if (a0 > 255 || a1 > 255 || a2 > 255 || a3 > 255) - return GTK_INPUT_ERROR; - - addr = a0 << 24 | a1 << 16 | a2 << 8 | a3; -#endif - *out_val = (gdouble) addr; - return TRUE; -} - -static gboolean -finfo_ipv4_output(GtkSpinButton *spinbutton, gpointer user_data _U_) -{ - GtkAdjustment *adj; - guint32 value; - address addr; - char* addr_str; - - adj = gtk_spin_button_get_adjustment(spinbutton); - value = (guint32) gtk_adjustment_get_value(adj); - value = GUINT32_TO_BE(value); - set_address(&addr, AT_IPv4, 4, &value); - addr_str = (char*)address_to_str(NULL, &addr); - gtk_entry_set_text(GTK_ENTRY(spinbutton), addr_str); - wmem_free(NULL, addr_str); - return TRUE; -} - -static gint -new_finfo_window(GtkWidget *w, struct FieldinfoWinData *DataPtr) -{ - field_info *finfo = DataPtr->finfo; - const header_field_info *hfinfo = finfo->hfinfo; - int finfo_type = (hfinfo) ? hfinfo->type : FT_NONE; - -#if !GTK_CHECK_VERSION(3, 10, 0) - GtkWidget *dialog = gtk_dialog_new_with_buttons("Editing finfo: ....", - GTK_WINDOW(w), - (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), - GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, - GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, - NULL); -#else - GtkWidget *dialog = gtk_dialog_new_with_buttons("Editing finfo: ....", - GTK_WINDOW(w), - (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), - "_OK", GTK_RESPONSE_ACCEPT, - "_Cancel", GTK_RESPONSE_REJECT, - NULL); -#endif - - GtkWidget *dialog_vbox = gtk_dialog_get_content_area(GTK_DIALOG(dialog)); - GtkWidget *fvalue_edit; - GtkWidget *native_repr; - GtkWidget *bv_nb_ptr; - GtkWidget *frame, *frame_vbox; - - gint result; - - if (!FI_GET_FLAG(finfo, FI_LITTLE_ENDIAN) && !FI_GET_FLAG(finfo, FI_BIG_ENDIAN)) { - fvalue_edit = gtk_entry_new(); - gtk_entry_set_text(GTK_ENTRY(fvalue_edit), ""); - gtk_editable_set_editable(GTK_EDITABLE(fvalue_edit), FALSE); - gtk_widget_set_sensitive(fvalue_edit, FALSE); - - } /* else if (XXX) { - fvalue_edit = gtk_entry_new(); - gtk_entry_set_text(GTK_ENTRY(fvalue_edit), ""); - gtk_editable_set_editable(GTK_EDITABLE(fvalue_edit), FALSE); - gtk_widget_set_sensitive(fvalue_edit, FALSE); - - } */ else if (finfo_type == FT_INT8 || finfo_type == FT_INT16 || finfo_type == FT_INT24 || finfo_type == FT_INT32 || - finfo_type == FT_UINT8 || finfo_type == FT_UINT16 || finfo_type == FT_UINT24 || finfo_type == FT_UINT32) - { -#if GTK_CHECK_VERSION(3,0,0) - GtkAdjustment *adj; -#else - GtkObject *adj; -#endif - int bitcount = 0; - - if (finfo_type == FT_INT8 || finfo_type == FT_UINT8) - bitcount = 8; - if (finfo_type == FT_INT16 || finfo_type == FT_UINT16) - bitcount = 16; - if (finfo_type == FT_INT24 || finfo_type == FT_UINT24) - bitcount = 24; - if (finfo_type == FT_INT32 || finfo_type == FT_UINT32) - bitcount = 32; - /* if (finfo_type == FT_INT64 || finfo_type == FT_UINT64) - bitcount = 64; */ - - if (finfo->length * 8 < bitcount) - bitcount = finfo->length / 8; - - if (hfinfo->bitmask) - bitcount -= hfinfo_bitshift(hfinfo); - - /* XXX, hfinfo->bitmask: Can we configure GTK_ADJUSTMENT to do custom step? (value-changed signal?) */ - - /* XXX, I'm little worried about these casts from (unsigned) integer to double... */ - - if (finfo_type == FT_INT8 || finfo_type == FT_INT16 || finfo_type == FT_INT24 || finfo_type == FT_INT32 /* || finfo_type == FT_INT64 */) - adj = gtk_adjustment_new((double) fvalue_get_sinteger(&finfo->value), (double) -(G_GINT64_CONSTANT(1) << (bitcount-1)), (double) ((G_GINT64_CONSTANT(1) << (bitcount-1))-1), 1.0, 10.0, 0); - else if (finfo_type == FT_UINT8 || finfo_type == FT_UINT16 || finfo_type == FT_UINT24 || finfo_type == FT_UINT32 /* || finfo_type == FT_UINT64 */ ) - adj = gtk_adjustment_new((double) fvalue_get_uinteger(&finfo->value), 0.0, (double) ((G_GUINT64_CONSTANT(1) << bitcount)-1), 1.0, 10.0, 0); - else { - g_assert_not_reached(); - goto not_supported; - } - - fvalue_edit = gtk_spin_button_new(GTK_ADJUSTMENT(adj), 1.0, 0); - gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(fvalue_edit), TRUE); - g_signal_connect(fvalue_edit, "value-changed", G_CALLBACK(finfo_integer_changed), DataPtr); - - } else if (finfo_type == FT_STRING || finfo_type == FT_STRINGZ || finfo_type == FT_STRINGZPAD) { - fvalue_edit = gtk_entry_new(); - gtk_entry_set_max_length(GTK_ENTRY(fvalue_edit), finfo->length); - gtk_entry_set_text(GTK_ENTRY(fvalue_edit), (const gchar*) fvalue_get(&finfo->value)); - g_signal_connect(fvalue_edit, "changed", G_CALLBACK(finfo_string_changed), DataPtr); - - } else if (finfo_type == FT_BOOLEAN) { - fvalue_edit = gtk_check_button_new(); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(fvalue_edit), (fvalue_get_uinteger64(&finfo->value) != 0)); - g_signal_connect(fvalue_edit, "toggled", G_CALLBACK(finfo_boolean_changed), DataPtr); - - } else if (finfo_type == FT_IPv4) { - guint32 ipv4 = fvalue_get_uinteger(&finfo->value); -#if GTK_CHECK_VERSION(3,0,0) - GtkAdjustment *adj; -#else - GtkObject *adj; -#endif - adj = gtk_adjustment_new((double) (GUINT32_FROM_BE(ipv4)), 0.0, 4294967295.0 /* (2^32)-1 */, 1.0, 256.0, 0); - - /* XXX, create four gtk_spin_button_new which takes 0..255 */ - fvalue_edit = gtk_spin_button_new(GTK_ADJUSTMENT(adj), 1.0, 0); - gtk_spin_button_set_update_policy(GTK_SPIN_BUTTON(fvalue_edit), GTK_UPDATE_IF_VALID); - g_signal_connect(fvalue_edit, "value-changed", G_CALLBACK(finfo_ipv4_changed), DataPtr); - g_signal_connect(fvalue_edit, "input", G_CALLBACK(finfo_ipv4_input), NULL); - g_signal_connect(fvalue_edit, "output", G_CALLBACK(finfo_ipv4_output), NULL); - - } else { -not_supported: - /* List of unsupported FT_*: - FT_NONE, FT_PROTOCOL, - FT_BYTES, FT_UINT_BYTES, - FT_INT64, FT_UINT64, ; should work with FT_INT[8,16,24,32] code - FT_FLOAT, FT_DOUBLE, - FT_IPXNET, FT_IPv6, FT_ETHER, - FT_GUID, FT_OID, FT_SYSTEM_ID, - FT_UINT_STRING, - FT_ABSOLUTE_TIME, FT_RELATIVE_TIME, - FT_VINES, FT_FCWWN, - */ - fvalue_edit = gtk_entry_new(); - gtk_entry_set_text(GTK_ENTRY(fvalue_edit), ""); - gtk_editable_set_editable(GTK_EDITABLE(fvalue_edit), FALSE); - gtk_widget_set_sensitive(fvalue_edit, FALSE); - } - gtk_box_pack_start(GTK_BOX(dialog_vbox), fvalue_edit, FALSE, FALSE, 0); - gtk_widget_show(fvalue_edit); - - DataPtr->edit = fvalue_edit; - - native_repr = gtk_entry_new(); - gtk_editable_set_editable(GTK_EDITABLE(native_repr), FALSE); - gtk_widget_set_sensitive(native_repr, FALSE); - gtk_box_pack_start(GTK_BOX(dialog_vbox), native_repr, FALSE, FALSE, 0); - gtk_widget_show(native_repr); - - DataPtr->repr = native_repr; - - frame = gtk_frame_new("Hex edit"); - frame_vbox = ws_gtk_box_new(GTK_ORIENTATION_VERTICAL, 1, TRUE); - - /* raw hex edit */ - if (finfo->start >= 0 && finfo->length > 0) { - GtkWidget *byte_view; - /* Byte view */ - bv_nb_ptr = byte_view_new(); - gtk_box_pack_start(GTK_BOX(frame_vbox), bv_nb_ptr, TRUE, TRUE, 0); - gtk_widget_set_size_request(bv_nb_ptr, -1, BV_SIZE); - gtk_widget_show(bv_nb_ptr); - - if ((byte_view = get_notebook_bv_ptr(bv_nb_ptr))) - g_signal_connect(byte_view, "key-press-event", G_CALLBACK(finfo_bv_key_pressed_cb), DataPtr); - DataPtr->bv = bv_nb_ptr; - } - - if (finfo->appendix_start >= 0 && finfo->appendix_length > 0) { - GtkWidget *byte_view; - /* Appendix byte view */ - bv_nb_ptr = byte_view_new(); - gtk_box_pack_start(GTK_BOX(frame_vbox), bv_nb_ptr, TRUE, TRUE, 0); - gtk_widget_set_size_request(bv_nb_ptr, -1, BV_SIZE); - gtk_widget_show(bv_nb_ptr); - - if ((byte_view = get_notebook_bv_ptr(bv_nb_ptr))) - g_signal_connect(byte_view, "key-press-event", G_CALLBACK(finfo_bv_key_pressed_cb), DataPtr); - DataPtr->app_bv = bv_nb_ptr; - } - gtk_container_add(GTK_CONTAINER(frame), frame_vbox); - gtk_widget_show(frame_vbox); gtk_widget_show(frame); - gtk_container_add(GTK_CONTAINER(dialog_vbox), frame); - - gtk_window_set_default_size(GTK_WINDOW(dialog), DEF_WIDTH, -1); - finfo_window_refresh(DataPtr); - result = gtk_dialog_run(GTK_DIALOG(dialog)); - gtk_widget_destroy(dialog); - return result; -} - -static void -edit_pkt_tree_row_activated_cb(GtkTreeView *tree_view, GtkTreePath *path, GtkTreeViewColumn *column _U_, gpointer user_data) -{ - struct PacketWinData *DataPtr = (struct PacketWinData*)user_data; - GtkTreeModel *model; - GtkTreeIter iter; - field_info *finfo; - - model = gtk_tree_view_get_model(tree_view); - if (!gtk_tree_model_get_iter(model, &iter, path)) - return; - - gtk_tree_model_get(model, &iter, 1, &finfo, -1); - if (!finfo) - return; - - if (!FI_GET_FLAG(finfo, FI_GENERATED) && - finfo->ds_tvb && finfo->ds_tvb->real_data >= DataPtr->pd && finfo->ds_tvb->real_data <= DataPtr->pd + DataPtr->frame->cap_len) - { - struct FieldinfoWinData data; - - data.epan = cfile.epan; - data.frame = DataPtr->frame; - data.phdr = DataPtr->phdr; - data.pd = (guint8 *) g_memdup(DataPtr->pd, DataPtr->frame->cap_len); - data.start_offset = (int) (finfo->ds_tvb->real_data - DataPtr->pd); - - data.finfo = finfo; - data.app_bv = data.bv = NULL; - data.repr = data.edit = NULL; - - data.pd_offset = data.start_offset + finfo->start; - data.pd_bitoffset = 0; - - if (new_finfo_window(DataPtr->main, &data) == GTK_RESPONSE_ACCEPT) { - /* DataPtr->phdr = data.phdr; */ - memcpy(DataPtr->pd, data.pd, DataPtr->frame->cap_len); - - proto_tree_draw(NULL, DataPtr->tree_view); - epan_dissect_cleanup(&(DataPtr->edt)); - epan_dissect_init(&(DataPtr->edt), cfile.epan, TRUE, TRUE); - epan_dissect_run(&(DataPtr->edt), cfile.cd_t, &DataPtr->phdr, frame_tvbuff_new(DataPtr->frame, DataPtr->pd), DataPtr->frame, NULL); - add_byte_views(&(DataPtr->edt), DataPtr->tree_view, DataPtr->bv_nb_ptr); - proto_tree_draw(DataPtr->edt.tree, DataPtr->tree_view); - } - g_free(data.pd); - - } else { - /* XXX, simple_dialog() is shown on top of main_window, instead of edit_window. */ - simple_dialog(ESD_TYPE_WARN, ESD_BTN_OK, "Item can't be edited. FI_GENERATED or tvb not subset of packet data (uncompressed?)"); - } -} - -static gboolean -edit_pkt_common_key_pressed_cb(GdkEventKey *event, struct CommonWinData *DataPtr) -{ - int val = -1; - - switch (recent.gui_bytes_view) { - case BYTES_HEX: - if (event->keyval >= 'a' && event->keyval <= 'f') - val = (event->keyval - 'a') + 10; - else if (event->keyval >= 'A' && event->keyval <= 'F') - val = (event->keyval - 'A') + 10; - else if (event->keyval >= '0' && event->keyval <= '9') - val = (event->keyval - '0'); - else if (event->keyval == GDK_Left) - DataPtr->pd_bitoffset -= 4; - else if (event->keyval == GDK_Right) - DataPtr->pd_bitoffset += 4; - else - return FALSE; - - if (val != -1) { - /* Lazy... - * XXX Allow (DataPtr->pd_bitoffset % 4) != 0 ? */ - if (DataPtr->pd_bitoffset < 4) { - DataPtr->pd[DataPtr->pd_offset] = (DataPtr->pd[DataPtr->pd_offset] & 0x0f) | (val << 4); - DataPtr->pd_bitoffset = 4; - } else { - DataPtr->pd[DataPtr->pd_offset] = (DataPtr->pd[DataPtr->pd_offset] & 0xf0) | val; - DataPtr->pd_bitoffset = 8; - } - /* DataPtr->pd_bitoffset += 4; */ - } - break; - - case BYTES_BITS: - if (event->keyval == '0' || event->keyval == '1') - val = (event->keyval != '0'); - else if (event->keyval == GDK_Left) - DataPtr->pd_bitoffset -= 1; - else if (event->keyval == GDK_Right) - DataPtr->pd_bitoffset += 1; - else - return FALSE; - - if (val != -1) { - if (val) - DataPtr->pd[DataPtr->pd_offset] |= (1 << (7-DataPtr->pd_bitoffset)); - else - DataPtr->pd[DataPtr->pd_offset] &= ~(1 << (7-DataPtr->pd_bitoffset)); - DataPtr->pd_bitoffset += 1; - } - break; - - default: - g_assert_not_reached(); - return FALSE; - } - - while (DataPtr->pd_bitoffset >= 8) { - DataPtr->pd_offset += 1; - DataPtr->pd_bitoffset -= 8; - } - while (DataPtr->pd_bitoffset < 0) { - DataPtr->pd_offset -= 1; - DataPtr->pd_bitoffset += 8; - } - - DataPtr->val = val; - return TRUE; -} - -static gboolean -edit_pkt_win_key_pressed_cb(GtkWidget *win _U_, GdkEventKey *event, gpointer user_data) -{ - struct PacketWinData *DataPtr = (struct PacketWinData *)user_data; - struct CommonWinData data; - GSList *src_le; - gboolean ret; - tvbuff_t *ds_tvb = NULL; - - /* save */ - data.frame = DataPtr->frame; - data.pd = DataPtr->pd; - data.pd_offset = DataPtr->pd_offset; - data.pd_bitoffset = DataPtr->pd_bitoffset; - - ret = edit_pkt_common_key_pressed_cb(event, &data); - - /* restore */ - DataPtr->pd_offset = data.pd_offset; - DataPtr->pd_bitoffset = data.pd_bitoffset; - - if (DataPtr->pd_offset < 0) { - DataPtr->pd_offset = DataPtr->frame->cap_len-1; - /* XXX, last bit/octect? */ - } - - if ((guint)DataPtr->pd_offset >= DataPtr->frame->cap_len) { - DataPtr->pd_offset = 0; - DataPtr->pd_bitoffset = 0; /* first bit */ - } - - if (!ret) - return FALSE; - - /* redissect if changed */ - if (data.val != -1) { - redissect_packet_window(DataPtr, NULL); - } - - for (src_le = DataPtr->edt.pi.data_src; src_le != NULL; src_le = src_le->next) { - const struct data_source *src = (const struct data_source *)src_le->data; - tvbuff_t *tvb = get_data_source_tvb(src); - - if (tvb && tvb->real_data == DataPtr->pd) { - ds_tvb = tvb; - break; - } - } - - if (ds_tvb != NULL) { - GtkWidget *byte_view; - - set_notebook_page(DataPtr->bv_nb_ptr, ds_tvb); - byte_view = get_notebook_bv_ptr(DataPtr->bv_nb_ptr); - if (byte_view) - packet_hex_editor_print(byte_view, DataPtr->pd, DataPtr->frame, DataPtr->pd_offset, DataPtr->pd_bitoffset, DataPtr->frame->cap_len); - } - return TRUE; -} - -static void -edit_pkt_destroy_new_window(GObject *object _U_, gpointer user_data) -{ - /* like destroy_new_window, but without freeing DataPtr->pd */ - struct PacketWinData *DataPtr = (struct PacketWinData *)user_data; - - detail_windows = g_list_remove(detail_windows, DataPtr); - proto_tree_draw(NULL, DataPtr->tree_view); - epan_dissect_cleanup(&(DataPtr->edt)); - g_free(DataPtr); - - /* XXX, notify main packet list that packet should be redisplayed */ -} - -#endif /* WANT_PACKET_EDITOR */ - void new_packet_window(GtkWidget *w _U_, gboolean reference, gboolean editable _U_) { char *title; @@ -1004,14 +270,6 @@ void new_packet_window(GtkWidget *w _U_, gboolean reference, gboolean editable _ g_signal_connect(gtk_tree_view_get_selection(GTK_TREE_VIEW(tree_view)), "changed", G_CALLBACK(new_tree_view_selection_changed_cb), DataPtr); g_signal_connect(tree_view, "button_press_event", G_CALLBACK(button_press_handler), NULL); -#ifdef WANT_PACKET_EDITOR - if (editable && DataPtr->frame->cap_len != 0) { - g_signal_connect(main_w, "key-press-event", G_CALLBACK(edit_pkt_win_key_pressed_cb), DataPtr); - /* XXX, popup-menu instead of row-activated? */ - g_signal_connect(tree_view, "row-activated", G_CALLBACK(edit_pkt_tree_row_activated_cb), DataPtr); - g_signal_connect(main_w, "destroy", G_CALLBACK(edit_pkt_destroy_new_window), DataPtr); - } else -#endif g_signal_connect(main_w, "destroy", G_CALLBACK(destroy_new_window), DataPtr); /* draw the protocol tree & print hex data */ @@ -1022,17 +280,6 @@ void new_packet_window(GtkWidget *w _U_, gboolean reference, gboolean editable _ DataPtr->pd_offset = 0; DataPtr->pd_bitoffset = 0; gtk_widget_show(main_w); - -#ifdef WANT_PACKET_EDITOR - if (editable && DataPtr->frame->cap_len != 0) { - /* XXX, there's no Save button here, so lets assume packet is always edited */ - cf_set_frame_edited(&cfile, DataPtr->frame, &DataPtr->phdr, - DataPtr->pd); - - /* Update the main window, as we now have unsaved changes. */ - main_update_for_unsaved_changes(&cfile); - } -#endif } void @@ -1085,38 +332,6 @@ new_tree_view_selection_changed_cb(GtkTreeSelection *sel, gpointer user_data) DataPtr->finfo_selected = finfo; -#ifdef WANT_PACKET_EDITOR - DataPtr->pd_offset = 0; - DataPtr->pd_bitoffset = 0; - - if (!FI_GET_FLAG(finfo, FI_GENERATED) && - finfo->ds_tvb && finfo->ds_tvb->real_data >= DataPtr->pd && finfo->ds_tvb->real_data <= DataPtr->pd + DataPtr->frame->cap_len) - { - /* I haven't really test if TVB subsets works, but why not? :> */ - int pd_offset = (int) (finfo->ds_tvb->real_data - DataPtr->pd); - - /* some code from packet_hex_print */ - int finfo_offset = finfo->start; - int finfo_len = finfo->length; - - if (!(finfo_offset >= 0 && finfo_len > 0)) { - finfo_offset = finfo->appendix_start; - finfo_len = finfo->appendix_length; - } - - /* Don't care about things like bitmask or LE/BE, just point DataPtr->tvb_[bit]offset to proper offsets. */ - if (finfo_offset >= 0 && finfo_len > 0) { - DataPtr->pd_offset = pd_offset + finfo_offset; - DataPtr->pd_bitoffset = 0; /* XXX */ - } - - if (DataPtr->pd_offset < 0) - DataPtr->pd_offset = 0; - if ((guint)DataPtr->pd_offset >= DataPtr->frame->cap_len) - DataPtr->pd_offset = 0; - } -#endif - packet_hex_print(byte_view, data, DataPtr->frame, finfo, len); } else diff --git a/ui/qt/main_window_slots.cpp b/ui/qt/main_window_slots.cpp index 3b626411c3..009b20fe90 100644 --- a/ui/qt/main_window_slots.cpp +++ b/ui/qt/main_window_slots.cpp @@ -1317,10 +1317,6 @@ void MainWindow::setMenusForSelectedPacket() main_ui_->actionEditNextMark->setEnabled(another_is_marked); main_ui_->actionEditPreviousMark->setEnabled(another_is_marked); -#ifdef WANT_PACKET_EDITOR -// set_menu_sensitivity(ui_manager_main_menubar, "/Menubar/EditMenu/EditPacket", -// frame_selected); -#endif // WANT_PACKET_EDITOR main_ui_->actionEditPacketComment->setEnabled(frame_selected && wtap_dump_can_write(capture_file_.capFile()->linktypes, WTAP_COMMENT_PER_PACKET)); main_ui_->actionDeleteAllPacketComments->setEnabled((capture_file_.capFile() != NULL) && wtap_dump_can_write(capture_file_.capFile()->linktypes, WTAP_COMMENT_PER_PACKET));