diff options
Diffstat (limited to 'ui/gtk')
-rw-r--r-- | ui/gtk/capture_file_dlg.c | 12 | ||||
-rw-r--r-- | ui/gtk/color_edit_dlg.c | 6 | ||||
-rw-r--r-- | ui/gtk/dfilter_expr_dlg.c | 23 | ||||
-rw-r--r-- | ui/gtk/filter_dlg.c | 56 | ||||
-rw-r--r-- | ui/gtk/find_dlg.c | 9 | ||||
-rw-r--r-- | ui/gtk/funnel_stat.c | 13 | ||||
-rw-r--r-- | ui/gtk/gui_utils.c | 5 | ||||
-rw-r--r-- | ui/gtk/gui_utils.h | 5 | ||||
-rw-r--r-- | ui/gtk/iax2_analysis.c | 6 | ||||
-rw-r--r-- | ui/gtk/io_stat.c | 6 | ||||
-rw-r--r-- | ui/gtk/main.c | 13 | ||||
-rw-r--r-- | ui/gtk/main_menubar.c | 2 | ||||
-rw-r--r-- | ui/gtk/rlc_lte_graph.c | 6 | ||||
-rw-r--r-- | ui/gtk/rtp_analysis.c | 6 | ||||
-rw-r--r-- | ui/gtk/sctp_assoc_analyse.c | 6 |
15 files changed, 91 insertions, 83 deletions
diff --git a/ui/gtk/capture_file_dlg.c b/ui/gtk/capture_file_dlg.c index 030a10b8c6..6d94cf796b 100644 --- a/ui/gtk/capture_file_dlg.c +++ b/ui/gtk/capture_file_dlg.c @@ -684,6 +684,7 @@ file_open_cmd(capture_file *cf, GtkWidget *w _U_) GString *file_name = g_string_new(""); GString *display_filter = g_string_new(""); dfilter_t *rfcode = NULL; + gchar *err_msg; int err; int type = WTAP_TYPE_AUTO; @@ -700,12 +701,13 @@ file_open_cmd(capture_file *cf, GtkWidget *w _U_) /* Only close the old file now that we know we want to open another one. */ cf_close(cf); /* apply our filter */ - if (dfilter_compile(display_filter->str, &rfcode)) { + if (dfilter_compile(display_filter->str, &rfcode, &err_msg)) { cf_set_rfcode(&cfile, rfcode); } else { /* Not valid. Tell the user, and go back and run the file selection box again once they dismiss the alert. */ - bad_dfilter_alert_box(top_level, display_filter->str); + bad_dfilter_alert_box(top_level, display_filter->str, err_msg); + g_free(err_msg); continue; } @@ -935,6 +937,7 @@ file_merge_cmd(GtkWidget *w _U_) GString *display_filter = g_string_new(""); int merge_type; dfilter_t *rfcode = NULL; + gchar *err_msg; int err; int file_type; cf_status_t merge_status; @@ -954,10 +957,11 @@ file_merge_cmd(GtkWidget *w _U_) #endif /* USE_WIN32_FILE_DIALOGS */ /* Get the specified read filter and try to compile it. */ - if (!dfilter_compile(display_filter->str, &rfcode)) { + if (!dfilter_compile(display_filter->str, &rfcode, &err_msg)) { /* Not valid. Tell the user, and go back and run the file selection box again once they dismiss the alert. */ - bad_dfilter_alert_box(top_level, display_filter->str); + bad_dfilter_alert_box(top_level, display_filter->str, err_msg); + g_free(err_msg); continue; } diff --git a/ui/gtk/color_edit_dlg.c b/ui/gtk/color_edit_dlg.c index d9c2354f60..33aa800c9c 100644 --- a/ui/gtk/color_edit_dlg.c +++ b/ui/gtk/color_edit_dlg.c @@ -369,6 +369,7 @@ color_edit_dlg_ok_cb(GtkWidget *w _U_, gpointer user_data) gboolean filter_disabled; color_filter_t *colorf; dfilter_t *compiled_filter; + gchar *err_msg; GtkTreeModel *model; GtkTreeIter iter; gchar fg_str[14], bg_str[14]; @@ -386,11 +387,12 @@ color_edit_dlg_ok_cb(GtkWidget *w _U_, gpointer user_data) return; } - if (!dfilter_compile(filter_text, &compiled_filter)) { + if (!dfilter_compile(filter_text, &compiled_filter, &err_msg)) { simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "Filter \"%s\" didn't compile correctly.\n" " Please try again. Filter unchanged.\n%s\n", filter_name, - dfilter_error_msg); + err_msg); + g_free(err_msg); g_free(filter_name); g_free(filter_text); return; diff --git a/ui/gtk/dfilter_expr_dlg.c b/ui/gtk/dfilter_expr_dlg.c index affc7f806c..4256090b3c 100644 --- a/ui/gtk/dfilter_expr_dlg.c +++ b/ui/gtk/dfilter_expr_dlg.c @@ -583,19 +583,6 @@ value_list_sel_cb(GtkTreeSelection *sel, gpointer value_entry_arg) } static void -dfilter_report_bad_value(const char *format, ...) -{ - char error_msg_buf[1024]; - va_list args; - - va_start(args, format); - g_vsnprintf(error_msg_buf, sizeof error_msg_buf, format, args); - va_end(args); - - simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", error_msg_buf); -} - -static void dfilter_expr_dlg_accept_cb(GtkWidget *w, gpointer filter_te_arg) { GtkWidget *filter_te = (GtkWidget *)filter_te_arg; @@ -615,6 +602,7 @@ dfilter_expr_dlg_accept_cb(GtkWidget *w, gpointer filter_te_arg) ftenum_t ftype; gboolean can_compare; fvalue_t *fvalue; + gchar *err_msg; GtkTreeModel *model; GtkTreeIter iter; gboolean quote_it; @@ -743,19 +731,18 @@ dfilter_expr_dlg_accept_cb(GtkWidget *w, gpointer filter_te_arg) */ if (strcmp(item_str, "contains") == 0) { fvalue = fvalue_from_unparsed(ftype, stripped_value_str, TRUE, - dfilter_report_bad_value); + &err_msg); } else { fvalue = fvalue_from_unparsed(ftype, stripped_value_str, FALSE, - dfilter_report_bad_value); + &err_msg); } if (fvalue == NULL) { /* * It's not valid. - * - * The dialog box was already popped up by - * "dfilter_report_bad_value()". */ + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_msg); + g_free(err_msg); g_free(range_str); g_free(value_str); g_free(item_str); diff --git a/ui/gtk/filter_dlg.c b/ui/gtk/filter_dlg.c index f5a68b579e..a12a7bfd9c 100644 --- a/ui/gtk/filter_dlg.c +++ b/ui/gtk/filter_dlg.c @@ -1345,7 +1345,7 @@ filter_te_syntax_check_cb(GtkWidget *w, gpointer user_data _U_) statusbar_pop_filter_msg(); } - if (strval && g_object_get_data(G_OBJECT(w), E_FILT_MULTI_FIELD_NAME_ONLY_KEY)) { + if (g_object_get_data(G_OBJECT(w), E_FILT_MULTI_FIELD_NAME_ONLY_KEY)) { gchar **fields; guint i_field = 0; @@ -1369,41 +1369,41 @@ filter_te_syntax_check_cb(GtkWidget *w, gpointer user_data _U_) /* colorize filter string entry */ if (g_object_get_data(G_OBJECT(w), E_FILT_FIELD_NAME_ONLY_KEY) && - strval && (c = proto_check_field_name(strval)) != 0) + (c = proto_check_field_name(strval)) != 0) { colorize_filter_te_as_invalid(w); if (use_statusbar) { statusbar_push_filter_msg(" Illegal character in field name: '%c'", c); } - } else if (strval && dfilter_compile(strval, &dfp)) { - if (dfp != NULL) { - depr = dfilter_deprecated_tokens(dfp); - } - if (strlen(strval) == 0) { - colorize_filter_te_as_empty(w); - } else if (depr) { - /* You keep using that word. I do not think it means what you think it means. */ - colorize_filter_te_as_deprecated(w); - if (use_statusbar) { - /* - * We're being lazy and only printing the first "problem" token. - * Would it be better to print all of them? - */ - statusbar_push_temporary_msg(" \"%s\" may have unexpected results (see the User's Guide)", - (const char *) g_ptr_array_index(depr, 0)); - } - } else { - colorize_filter_te_as_valid(w); - } - dfilter_free(dfp); } else { - colorize_filter_te_as_invalid(w); - if (use_statusbar) { - if (dfilter_error_msg) { - statusbar_push_filter_msg(" Invalid filter: %s", dfilter_error_msg); + gchar *err_msg; + + if (dfilter_compile(strval, &dfp, &err_msg)) { + if (dfp != NULL) { + depr = dfilter_deprecated_tokens(dfp); + } + if (strlen(strval) == 0) { + colorize_filter_te_as_empty(w); + } else if (depr) { + /* You keep using that word. I do not think it means what you think it means. */ + colorize_filter_te_as_deprecated(w); + if (use_statusbar) { + /* + * We're being lazy and only printing the first "problem" token. + * Would it be better to print all of them? + */ + statusbar_push_temporary_msg(" \"%s\" may have unexpected results (see the User's Guide)", + (const char *) g_ptr_array_index(depr, 0)); + } } else { - statusbar_push_filter_msg(" Invalid filter"); + colorize_filter_te_as_valid(w); } + dfilter_free(dfp); + } else { + colorize_filter_te_as_invalid(w); + if (use_statusbar) + statusbar_push_filter_msg(" Invalid filter: %s", err_msg); + g_free(err_msg); } } } diff --git a/ui/gtk/find_dlg.c b/ui/gtk/find_dlg.c index faa9f48b83..7a128e552d 100644 --- a/ui/gtk/find_dlg.c +++ b/ui/gtk/find_dlg.c @@ -626,9 +626,12 @@ find_frame_ok_cb(GtkWidget *ok_bt _U_, gpointer parent_w) /* * Display filter search - try to compile the filter. */ - if (!dfilter_compile(filter_text, &sfcode)) { + gchar *err_msg; + + if (!dfilter_compile(filter_text, &sfcode, &err_msg)) { /* The attempt failed; report an error. */ - bad_dfilter_alert_box(GTK_WIDGET(parent_w), filter_text); + bad_dfilter_alert_box(GTK_WIDGET(parent_w), filter_text, err_msg); + g_free(err_msg); return; } @@ -752,7 +755,7 @@ find_previous_next(GtkWidget *w, gpointer d, search_direction dir) } g_free(string); } else { - if (!dfilter_compile(cfile.sfilter, &sfcode)) { + if (!dfilter_compile(cfile.sfilter, &sfcode, NULL)) { /* * XXX - this shouldn't happen, as we've already successfully * translated the string once. diff --git a/ui/gtk/funnel_stat.c b/ui/gtk/funnel_stat.c index 13bf97a3e6..c61de1bd1f 100644 --- a/ui/gtk/funnel_stat.c +++ b/ui/gtk/funnel_stat.c @@ -486,11 +486,11 @@ static void funnel_retap_packets(void) { cf_retap_packets(&cfile); } -static gboolean funnel_open_file(const char* fname, const char* filter, const char** err_str) { +static gboolean funnel_open_file(const char* fname, const char* filter, char** err_str) { int err = 0; dfilter_t *rfcode = NULL; - *err_str = "no error"; + *err_str = NULL; switch (cfile.state) { case FILE_CLOSED: @@ -498,20 +498,19 @@ static gboolean funnel_open_file(const char* fname, const char* filter, const ch case FILE_READ_ABORTED: break; case FILE_READ_IN_PROGRESS: - *err_str = "file read in progress"; + *err_str = g_strdup("file read in progress"); return FALSE; } if (filter) { - if (!dfilter_compile(filter, &rfcode)) { - *err_str = dfilter_error_msg ? dfilter_error_msg : "cannot compile filter"; + if (!dfilter_compile(filter, &rfcode, err_str)) { return FALSE; } } /* This closes the current file if it succeeds. */ if (cf_open(&cfile, fname, WTAP_TYPE_AUTO, FALSE, &err) != CF_OK) { - *err_str = g_strerror(err); + *err_str = g_strdup(g_strerror(err)); if (rfcode != NULL) dfilter_free(rfcode); return FALSE; } @@ -523,7 +522,7 @@ static gboolean funnel_open_file(const char* fname, const char* filter, const ch case CF_READ_ERROR: break; default: - *err_str = "problem while reading file"; + *err_str = g_strdup("problem while reading file"); return FALSE; } diff --git a/ui/gtk/gui_utils.c b/ui/gtk/gui_utils.c index 5643f3e1fd..b30cc87246 100644 --- a/ui/gtk/gui_utils.c +++ b/ui/gtk/gui_utils.c @@ -535,7 +535,8 @@ pixbuf_to_widget(const guint8 *pb_data) { */ void bad_dfilter_alert_box(GtkWidget *parent, - const char *dftext) + const char *dftext, + gchar *err_msg) { GtkWidget *msg_dialog; @@ -544,7 +545,7 @@ bad_dfilter_alert_box(GtkWidget *parent, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "The filter expression \"%s\" isn't a valid display filter. (%s)", - dftext, dfilter_error_msg); + dftext, err_msg); gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(msg_dialog), "See the help for a description of the display filter syntax."); gtk_dialog_run(GTK_DIALOG(msg_dialog)); diff --git a/ui/gtk/gui_utils.h b/ui/gtk/gui_utils.h index 9277824ac8..468c862817 100644 --- a/ui/gtk/gui_utils.h +++ b/ui/gtk/gui_utils.h @@ -189,13 +189,12 @@ extern void reactivate_window(GtkWidget *win); /** @} */ /** Alert box for an invalid display filter expression. - * Assumes "dfilter_error_msg" has been set by "dfilter_compile()" to the - * error message for the filter. * * @param parent parent window from which the display filter came * @param dftext text of the display filter + * @param err_msg text of the error message for the filter */ -extern void bad_dfilter_alert_box(GtkWidget *parent, const char *dftext); +extern void bad_dfilter_alert_box(GtkWidget *parent, const char *dftext, gchar *err_msg); /** Create a GtkScrolledWindow, set its scrollbar placement appropriately, * and remember it. diff --git a/ui/gtk/iax2_analysis.c b/ui/gtk/iax2_analysis.c index 28efc2eb22..7c18c755d5 100644 --- a/ui/gtk/iax2_analysis.c +++ b/ui/gtk/iax2_analysis.c @@ -3703,6 +3703,7 @@ void iax2_analysis_cb(GtkAction *action _U_, gpointer user_data _U_) gchar filter_text[256]; dfilter_t *sfcode; + gchar *err_msg; capture_file *cf; frame_data *fdata; GList *strinfo_list; @@ -3713,8 +3714,9 @@ void iax2_analysis_cb(GtkAction *action _U_, gpointer user_data _U_) /* Try to compile the filter. */ g_strlcpy(filter_text,"iax2 && (ip || ipv6)",256); - if (!dfilter_compile(filter_text, &sfcode)) { - simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", dfilter_error_msg); + if (!dfilter_compile(filter_text, &sfcode, &err_msg)) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_msg); + g_free(err_msg); return; } /* we load the current file into cf variable */ diff --git a/ui/gtk/io_stat.c b/ui/gtk/io_stat.c index 535211b8aa..d67d35bbd2 100644 --- a/ui/gtk/io_stat.c +++ b/ui/gtk/io_stat.c @@ -1784,6 +1784,7 @@ filter_callback(GtkWidget *widget, gpointer user_data) io_stat_graph_t *gio = (io_stat_graph_t *)user_data; const char *filter; dfilter_t *dfilter; + gchar *err_msg; const char *field_name = NULL; /* this graph is not active, just update display and redraw */ @@ -1813,9 +1814,10 @@ filter_callback(GtkWidget *widget, gpointer user_data) /* first check if the filter string is valid. */ filter = gtk_entry_get_text(GTK_ENTRY(gio->filter_field)); - if (!dfilter_compile(filter, &dfilter)) { + if (!dfilter_compile(filter, &dfilter, &err_msg)) { bad_dfilter_alert_box(gtk_widget_get_toplevel(widget), - filter); + filter, err_msg); + g_free(err_msg); disable_graph(gio); io_stat_redraw(gio->io); return; diff --git a/ui/gtk/main.c b/ui/gtk/main.c index f5b6028a98..224491a1f1 100644 --- a/ui/gtk/main.c +++ b/ui/gtk/main.c @@ -2163,6 +2163,7 @@ main(int argc, char *argv[]) gint pl_size = 280, tv_size = 95, bv_size = 75; gchar *rc_file, *cf_name = NULL, *rfilter = NULL, *dfilter = NULL, *jfilter = NULL; dfilter_t *rfcode = NULL; + gchar *err_msg; gboolean rfilter_parse_failed = FALSE; e_prefs *prefs_p; char badopt; @@ -3082,8 +3083,9 @@ main(int argc, char *argv[]) show_main_window(TRUE); check_and_warn_user_startup(cf_name); if (rfilter != NULL) { - if (!dfilter_compile(rfilter, &rfcode)) { - bad_dfilter_alert_box(top_level, rfilter); + if (!dfilter_compile(rfilter, &rfcode, &err_msg)) { + bad_dfilter_alert_box(top_level, rfilter, err_msg); + g_free(err_msg); rfilter_parse_failed = TRUE; } } @@ -3121,8 +3123,9 @@ main(int argc, char *argv[]) cf_goto_frame(&cfile, go_to_packet); } else if (jfilter != NULL) { /* try to compile given filter */ - if (!dfilter_compile(jfilter, &jump_to_filter)) { - bad_dfilter_alert_box(top_level, jfilter); + if (!dfilter_compile(jfilter, &jump_to_filter, &err_msg)) { + bad_dfilter_alert_box(top_level, jfilter, err_msg); + g_free(err_msg); } else { /* Filter ok, jump to the first packet matching the filter conditions. Default search direction is forward, but if @@ -3859,7 +3862,7 @@ main_fields_changed (void) if (cfile.dfilter) { /* Check if filter is still valid */ dfilter_t *dfp = NULL; - if (!dfilter_compile(cfile.dfilter, &dfp)) { + if (!dfilter_compile(cfile.dfilter, &dfp, NULL)) { /* Not valid. Enable 'Apply' button and remove dfilter. */ g_signal_emit_by_name(G_OBJECT(main_display_filter_widget), "changed"); g_free(cfile.dfilter); diff --git a/ui/gtk/main_menubar.c b/ui/gtk/main_menubar.c index fe1d0a3563..a925b4ac75 100644 --- a/ui/gtk/main_menubar.c +++ b/ui/gtk/main_menubar.c @@ -271,7 +271,7 @@ goto_conversation_frame(gboolean dir) return; } - if (!dfilter_compile(filter, &dfcode)) { + if (!dfilter_compile(filter, &dfcode, NULL)) { /* The attempt failed; report an error. */ statusbar_push_temporary_msg("Error compiling filter for this conversation."); g_free(filter); diff --git a/ui/gtk/rlc_lte_graph.c b/ui/gtk/rlc_lte_graph.c index 05ad9e03a0..3b0323dcab 100644 --- a/ui/gtk/rlc_lte_graph.c +++ b/ui/gtk/rlc_lte_graph.c @@ -892,6 +892,7 @@ static rlc_lte_tap_info *select_rlc_lte_session(capture_file *cf, struct segment frame_data *fdata; epan_dissect_t edt; dfilter_t *sfcode; + gchar *err_msg; GString *error_string; nstime_t rel_ts; th_t th = {0, {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}}; @@ -903,8 +904,9 @@ static rlc_lte_tap_info *select_rlc_lte_session(capture_file *cf, struct segment fdata = cf->current_frame; /* no real filter yet */ - if (!dfilter_compile("rlc-lte", &sfcode)) { - simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", dfilter_error_msg); + if (!dfilter_compile("rlc-lte", &sfcode, &err_msg)) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_msg); + g_free(err_msg); return NULL; } diff --git a/ui/gtk/rtp_analysis.c b/ui/gtk/rtp_analysis.c index c2446a6649..6feac4a2e0 100644 --- a/ui/gtk/rtp_analysis.c +++ b/ui/gtk/rtp_analysis.c @@ -3933,6 +3933,7 @@ rtp_analysis_cb(GtkAction *action _U_, gpointer user_data _U_) gchar filter_text[256]; dfilter_t *sfcode; + gchar *err_msg; capture_file *cf; frame_data *fdata; GList *strinfo_list; @@ -3943,8 +3944,9 @@ rtp_analysis_cb(GtkAction *action _U_, gpointer user_data _U_) /* Try to compile the filter. */ g_strlcpy(filter_text, "rtp && rtp.version && rtp.ssrc && (ip || ipv6)", sizeof(filter_text)); - if (!dfilter_compile(filter_text, &sfcode)) { - simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", dfilter_error_msg); + if (!dfilter_compile(filter_text, &sfcode, &err_msg)) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_msg); + g_free(err_msg); return; } /* we load the current file into cf variable */ diff --git a/ui/gtk/sctp_assoc_analyse.c b/ui/gtk/sctp_assoc_analyse.c index 9b47435c5c..ad914efda3 100644 --- a/ui/gtk/sctp_assoc_analyse.c +++ b/ui/gtk/sctp_assoc_analyse.c @@ -973,6 +973,7 @@ sctp_analyse_cb(struct sctp_analyse *u_data, gboolean ext) { GList *list; dfilter_t *sfcode; + gchar *err_msg; capture_file *cf; epan_dissect_t edt; gboolean frame_found = FALSE; @@ -980,8 +981,9 @@ sctp_analyse_cb(struct sctp_analyse *u_data, gboolean ext) gchar filter_text[256]; g_strlcpy(filter_text, "sctp", 250); - if (!dfilter_compile(filter_text, &sfcode)) { - simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", dfilter_error_msg); + if (!dfilter_compile(filter_text, &sfcode, &err_msg)) { + simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_msg); + g_free(err_msg); return; } |