Added a preference to turn of capture filter syntax check.

This can be used to disable the effect in bug 5356.

svn path=/trunk/; revision=37830
This commit is contained in:
Stig Bjørlykke 2011-06-29 10:42:29 +00:00
parent e015eca944
commit 6747aef250
4 changed files with 29 additions and 3 deletions

View File

@ -1302,6 +1302,7 @@ init_prefs(void) {
prefs.capture_real_time = TRUE;
prefs.capture_auto_scroll = TRUE;
prefs.capture_show_info = FALSE;
prefs.capture_syntax_check_filter = TRUE;
/* set the default values for the name resolution dialog box */
prefs.name_resolve = RESOLV_ALL ^ RESOLV_NETWORK;
@ -1861,6 +1862,7 @@ prefs_capture_device_monitor_mode(const char *name)
#define PRS_CAP_REAL_TIME "capture.real_time_update"
#define PRS_CAP_AUTO_SCROLL "capture.auto_scroll"
#define PRS_CAP_SHOW_INFO "capture.show_info"
#define PRS_CAP_SYNTAX_CHECK_FILTER "capture.syntax_check_filter"
#define RED_COMPONENT(x) (guint16) (((((x) >> 16) & 0xff) * 65535 / 255))
#define GREEN_COMPONENT(x) (guint16) (((((x) >> 8) & 0xff) * 65535 / 255))
@ -2350,6 +2352,8 @@ set_pref(gchar *pref_name, gchar *value, void *private_data _U_,
prefs.capture_auto_scroll = ((g_ascii_strcasecmp(value, "true") == 0)?TRUE:FALSE);
} else if (strcmp(pref_name, PRS_CAP_SHOW_INFO) == 0) {
prefs.capture_show_info = ((g_ascii_strcasecmp(value, "true") == 0)?TRUE:FALSE);
} else if (strcmp(pref_name, PRS_CAP_SYNTAX_CHECK_FILTER) == 0) {
prefs.capture_syntax_check_filter = ((g_ascii_strcasecmp(value, "true") == 0)?TRUE:FALSE);
/* handle the global options */
} else if (strcmp(pref_name, PRS_NAME_RESOLVE) == 0 ||
@ -3277,6 +3281,11 @@ write_prefs(char **pf_path_return)
fprintf(pf, PRS_CAP_SHOW_INFO ": %s\n",
prefs.capture_show_info == TRUE ? "TRUE" : "FALSE");
fprintf(pf, "\n# Syntax check capture filter?\n");
fprintf(pf, "# TRUE or FALSE (case-insensitive).\n");
fprintf(pf, PRS_CAP_SYNTAX_CHECK_FILTER ": %s\n",
prefs.capture_syntax_check_filter == TRUE ? "TRUE" : "FALSE");
fprintf (pf, "\n######## Printing ########\n");
fprintf (pf, "\n# Can be one of \"text\" or \"postscript\".\n"
@ -3422,6 +3431,7 @@ copy_prefs(e_prefs *dest, e_prefs *src)
dest->capture_real_time = src->capture_real_time;
dest->capture_auto_scroll = src->capture_auto_scroll;
dest->capture_show_info = src->capture_show_info;
dest->capture_syntax_check_filter = src->capture_syntax_check_filter;
dest->name_resolve = src->name_resolve;
dest->name_resolve_concurrency = src->name_resolve_concurrency;
dest->display_hidden_proto_items = src->display_hidden_proto_items;

View File

@ -160,6 +160,7 @@ typedef struct _e_prefs {
gboolean capture_real_time;
gboolean capture_auto_scroll;
gboolean capture_show_info;
gboolean capture_syntax_check_filter;
guint rtp_player_max_visible;
guint tap_update_interval;
gboolean display_hidden_proto_items;

View File

@ -264,6 +264,9 @@ capture_filter_check_syntax_cb(GtkWidget *w _U_, gpointer user_data _U_)
GtkTreeModel *model;
#endif
if (!prefs.capture_syntax_check_filter)
return;
filter_cm = g_object_get_data(G_OBJECT(top_level), E_CFILTER_CM_KEY);
filter_te = gtk_bin_get_child(GTK_BIN(filter_cm));
#if GTK_CHECK_VERSION(2,24,0)
@ -2257,12 +2260,14 @@ capture_prep_cb(GtkWidget *w _U_, gpointer d _U_)
#if GTK_CHECK_VERSION(2,12,0)
gtk_widget_set_tooltip_text(filter_cm,
"Enter a capture filter to reduce the amount of packets to be captured. "
"See \"Capture Filters\" in the online help for further information how to use it."
"See \"Capture Filters\" in the online help for further information how to use it. "
"Syntax checking can be disabled in Preferences -> Capture -> Syntax check capture filter."
);
#else
gtk_tooltips_set_tip(tooltips, filter_cm,
"Enter a capture filter to reduce the amount of packets to be captured. "
"See \"Capture Filters\" in the online help for further information how to use it.",
"Syntax checking can be disabled in Preferences -> Capture -> Syntax check capture filter."
NULL);
#endif
gtk_box_pack_start(GTK_BOX(filter_hb), filter_cm, TRUE, TRUE, 3);

View File

@ -54,6 +54,7 @@
#define CAPTURE_REAL_TIME_KEY "capture_real_time"
#define AUTO_SCROLL_KEY "auto_scroll"
#define SHOW_INFO_KEY "show_info"
#define SYNTAX_CHECK_FILTER_KEY "syntax_check_filter"
#define CAPTURE_TABLE_ROWS 6
@ -98,7 +99,7 @@ GtkWidget*
capture_prefs_show(void)
{
GtkWidget *main_tb, *main_vb;
GtkWidget *if_cbxe, *if_lb, *promisc_cb, *pcap_ng_cb, *sync_cb, *auto_scroll_cb, *show_info_cb;
GtkWidget *if_cbxe, *if_lb, *promisc_cb, *pcap_ng_cb, *sync_cb, *auto_scroll_cb, *show_info_cb, *syntax_check_filter_cb;
GtkWidget *ifopts_lb, *ifopts_bt;
GList *if_list, *combo_list;
int err;
@ -206,6 +207,13 @@ capture_prefs_show(void)
!prefs.capture_show_info);
g_object_set_data(G_OBJECT(main_vb), SHOW_INFO_KEY, show_info_cb);
/* Syntax check capture filter */
syntax_check_filter_cb = create_preference_check_button(main_tb, row++,
"Syntax check capture filter:",
"Syntax check capture filter. Turn this off if you experience delay when writing capture filters.",
prefs.capture_syntax_check_filter);
g_object_set_data(G_OBJECT(main_vb), SYNTAX_CHECK_FILTER_KEY, syntax_check_filter_cb);
/* Show 'em what we got */
gtk_widget_show_all(main_vb);
@ -215,7 +223,7 @@ capture_prefs_show(void)
void
capture_prefs_fetch(GtkWidget *w)
{
GtkWidget *if_cbxe, *promisc_cb, *pcap_ng_cb, *sync_cb, *auto_scroll_cb, *show_info_cb;
GtkWidget *if_cbxe, *promisc_cb, *pcap_ng_cb, *sync_cb, *auto_scroll_cb, *show_info_cb, *syntax_check_filter_cb;
gchar *if_text;
if_cbxe = (GtkWidget *)g_object_get_data(G_OBJECT(w), DEVICE_KEY);
@ -224,6 +232,7 @@ capture_prefs_fetch(GtkWidget *w)
sync_cb = (GtkWidget *)g_object_get_data(G_OBJECT(w), CAPTURE_REAL_TIME_KEY);
auto_scroll_cb = (GtkWidget *)g_object_get_data(G_OBJECT(w), AUTO_SCROLL_KEY);
show_info_cb = (GtkWidget *)g_object_get_data(G_OBJECT(w), SHOW_INFO_KEY);
syntax_check_filter_cb = (GtkWidget *)g_object_get_data(G_OBJECT(w), SYNTAX_CHECK_FILTER_KEY);
if (prefs.capture_device != NULL) {
g_free(prefs.capture_device);
@ -250,6 +259,7 @@ capture_prefs_fetch(GtkWidget *w)
prefs.capture_auto_scroll = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(auto_scroll_cb));
prefs.capture_show_info = !(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(show_info_cb)));
prefs.capture_syntax_check_filter = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(syntax_check_filter_cb));
}
void