diff options
author | Guy Harris <guy@alum.mit.edu> | 2001-05-31 08:36:46 +0000 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2001-05-31 08:36:46 +0000 |
commit | 6ee04dad33e600d932b2d44645727b962962f7d2 (patch) | |
tree | 8489f74ce723f1b02efa28d4257f15538589f499 /gtk | |
parent | 62000543044919a83ca00d16d4a21610cec43a8a (diff) | |
download | wireshark-6ee04dad33e600d932b2d44645727b962962f7d2.tar.gz wireshark-6ee04dad33e600d932b2d44645727b962962f7d2.tar.bz2 wireshark-6ee04dad33e600d932b2d44645727b962962f7d2.zip |
Support for "-N" flag enabling selected forms of name resolution, from
Joerg Meyer.
Support for saving to the preferences file the settings for all types of
name resolution.
Do a case-insensitive check for "true" and "false" in Boolean preference
settings.
svn path=/trunk/; revision=3489
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/capture_dlg.c | 49 | ||||
-rw-r--r-- | gtk/display_opts.c | 42 | ||||
-rw-r--r-- | gtk/file_dlg.c | 89 | ||||
-rw-r--r-- | gtk/main.c | 43 |
4 files changed, 163 insertions, 60 deletions
diff --git a/gtk/capture_dlg.c b/gtk/capture_dlg.c index 7f52396ca5..c7e01acdd7 100644 --- a/gtk/capture_dlg.c +++ b/gtk/capture_dlg.c @@ -1,7 +1,7 @@ /* capture_dlg.c * Routines for packet capture windows * - * $Id: capture_dlg.c,v 1.42 2001/05/31 05:33:15 guy Exp $ + * $Id: capture_dlg.c,v 1.43 2001/05/31 08:36:45 guy Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@zing.org> @@ -72,7 +72,9 @@ #define E_CAP_PROMISC_KEY "cap_promisc" #define E_CAP_SYNC_KEY "cap_sync" #define E_CAP_AUTO_SCROLL_KEY "cap_auto_scroll" -#define E_CAP_RESOLVE_KEY "cap_resolve" +#define E_CAP_M_RESOLVE_KEY "cap_m_resolve" +#define E_CAP_N_RESOLVE_KEY "cap_n_resolve" +#define E_CAP_T_RESOLVE_KEY "cap_t_resolve" #define E_FS_CALLER_PTR_KEY "fs_caller_ptr" #define E_FILE_SEL_DIALOG_PTR_KEY "file_sel_dialog_ptr" @@ -121,7 +123,8 @@ capture_prep_cb(GtkWidget *w, gpointer d) *file_bt, *file_te, *caplen_hb, *table, *bbox, *ok_bt, *cancel_bt, *snap_lb, - *snap_sb, *promisc_cb, *sync_cb, *auto_scroll_cb, *resolv_cb; + *snap_sb, *promisc_cb, *sync_cb, *auto_scroll_cb, + *m_resolv_cb, *n_resolv_cb, *t_resolv_cb; GtkAccelGroup *accel_group; GtkAdjustment *adj; GList *if_list, *count_list = NULL; @@ -276,11 +279,26 @@ capture_prep_cb(GtkWidget *w, gpointer d) gtk_container_add(GTK_CONTAINER(main_vb), auto_scroll_cb); gtk_widget_show(auto_scroll_cb); - resolv_cb = dlg_check_button_new_with_label_with_mnemonic( - "Enable _name resolution", accel_group); - gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(resolv_cb), prefs.name_resolve); - gtk_container_add(GTK_CONTAINER(main_vb), resolv_cb); - gtk_widget_show(resolv_cb); + m_resolv_cb = dlg_check_button_new_with_label_with_mnemonic( + "Enable _MAC name resolution", accel_group); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(m_resolv_cb), + prefs.name_resolve & PREFS_RESOLV_MAC); + gtk_container_add(GTK_CONTAINER(main_vb), m_resolv_cb); + gtk_widget_show(m_resolv_cb); + + n_resolv_cb = dlg_check_button_new_with_label_with_mnemonic( + "Enable _network name resolution", accel_group); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(n_resolv_cb), + prefs.name_resolve & PREFS_RESOLV_NETWORK); + gtk_container_add(GTK_CONTAINER(main_vb), n_resolv_cb); + gtk_widget_show(n_resolv_cb); + + t_resolv_cb = dlg_check_button_new_with_label_with_mnemonic( + "Enable _transport name resolution", accel_group); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(t_resolv_cb), + prefs.name_resolve & PREFS_RESOLV_TRANSPORT); + gtk_container_add(GTK_CONTAINER(main_vb), t_resolv_cb); + gtk_widget_show(t_resolv_cb); /* Button row: OK and cancel buttons */ bbox = gtk_hbutton_box_new(); @@ -313,7 +331,9 @@ capture_prep_cb(GtkWidget *w, gpointer d) gtk_object_set_data(GTK_OBJECT(cap_open_w), E_CAP_PROMISC_KEY, promisc_cb); gtk_object_set_data(GTK_OBJECT(cap_open_w), E_CAP_SYNC_KEY, sync_cb); gtk_object_set_data(GTK_OBJECT(cap_open_w), E_CAP_AUTO_SCROLL_KEY, auto_scroll_cb); - gtk_object_set_data(GTK_OBJECT(cap_open_w), E_CAP_RESOLVE_KEY, resolv_cb); + gtk_object_set_data(GTK_OBJECT(cap_open_w), E_CAP_M_RESOLVE_KEY, m_resolv_cb); + gtk_object_set_data(GTK_OBJECT(cap_open_w), E_CAP_N_RESOLVE_KEY, n_resolv_cb); + gtk_object_set_data(GTK_OBJECT(cap_open_w), E_CAP_T_RESOLVE_KEY, t_resolv_cb); /* Catch the "activate" signal on the frame number and file name text entries, so that if the user types Return there, we act as if the @@ -435,7 +455,7 @@ cap_prep_fs_destroy_cb(GtkWidget *win, gpointer data) static void capture_prep_ok_cb(GtkWidget *ok_bt, gpointer parent_w) { GtkWidget *if_cb, *filter_te, *file_te, *count_cb, *snap_sb, *promisc_cb, - *sync_cb, *auto_scroll_cb, *resolv_cb; + *sync_cb, *auto_scroll_cb, *m_resolv_cb, *n_resolv_cb, *t_resolv_cb; gchar *if_text; gchar *if_name; gchar *filter_text; @@ -449,7 +469,9 @@ capture_prep_ok_cb(GtkWidget *ok_bt, gpointer parent_w) { promisc_cb = (GtkWidget *) gtk_object_get_data(GTK_OBJECT(parent_w), E_CAP_PROMISC_KEY); sync_cb = (GtkWidget *) gtk_object_get_data(GTK_OBJECT(parent_w), E_CAP_SYNC_KEY); auto_scroll_cb = (GtkWidget *) gtk_object_get_data(GTK_OBJECT(parent_w), E_CAP_AUTO_SCROLL_KEY); - resolv_cb = (GtkWidget *) gtk_object_get_data(GTK_OBJECT(parent_w), E_CAP_RESOLVE_KEY); + m_resolv_cb = (GtkWidget *) gtk_object_get_data(GTK_OBJECT(parent_w), E_CAP_M_RESOLVE_KEY); + n_resolv_cb = (GtkWidget *) gtk_object_get_data(GTK_OBJECT(parent_w), E_CAP_N_RESOLVE_KEY); + t_resolv_cb = (GtkWidget *) gtk_object_get_data(GTK_OBJECT(parent_w), E_CAP_T_RESOLVE_KEY); if_text = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(if_cb)->entry))); @@ -502,7 +524,10 @@ capture_prep_ok_cb(GtkWidget *ok_bt, gpointer parent_w) { prefs.capture_auto_scroll = GTK_TOGGLE_BUTTON (auto_scroll_cb)->active; - prefs.name_resolve = GTK_TOGGLE_BUTTON (resolv_cb)->active; + prefs.name_resolve = PREFS_RESOLV_NONE; + prefs.name_resolve |= (GTK_TOGGLE_BUTTON (m_resolv_cb)->active ? PREFS_RESOLV_MAC : PREFS_RESOLV_NONE); + prefs.name_resolve |= (GTK_TOGGLE_BUTTON (n_resolv_cb)->active ? PREFS_RESOLV_NETWORK : PREFS_RESOLV_NONE); + prefs.name_resolve |= (GTK_TOGGLE_BUTTON (t_resolv_cb)->active ? PREFS_RESOLV_TRANSPORT : PREFS_RESOLV_NONE); gtk_widget_destroy(GTK_WIDGET(parent_w)); diff --git a/gtk/display_opts.c b/gtk/display_opts.c index d052f23b4e..44c23c2f33 100644 --- a/gtk/display_opts.c +++ b/gtk/display_opts.c @@ -1,7 +1,7 @@ /* display_opts.c * Routines for packet display windows * - * $Id: display_opts.c,v 1.20 2001/04/15 03:37:16 guy Exp $ + * $Id: display_opts.c,v 1.21 2001/05/31 08:36:45 guy Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@zing.org> @@ -71,7 +71,9 @@ extern GtkWidget *packet_list; #define E_DISPLAY_TIME_REL_KEY "display_time_rel" #define E_DISPLAY_TIME_DELTA_KEY "display_time_delta" #define E_DISPLAY_AUTO_SCROLL_KEY "display_auto_scroll" -#define E_DISPLAY_NAME_RESOLUTION_KEY "display_name_resolution" +#define E_DISPLAY_M_NAME_RESOLUTION_KEY "display_mac_name_resolution" +#define E_DISPLAY_N_NAME_RESOLUTION_KEY "display_network_name_resolution" +#define E_DISPLAY_T_NAME_RESOLUTION_KEY "display_transport_name_resolution" static void display_opt_ok_cb(GtkWidget *, gpointer); static void display_opt_apply_cb(GtkWidget *, gpointer); @@ -178,9 +180,28 @@ display_opt_cb(GtkWidget *w, gpointer d) { gtk_widget_show(button); button = dlg_check_button_new_with_label_with_mnemonic( - "Enable _name resolution", accel_group); - gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(button), prefs.name_resolve); - gtk_object_set_data(GTK_OBJECT(display_opt_w), E_DISPLAY_NAME_RESOLUTION_KEY, + "Enable _MAC name resolution", accel_group); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(button), + prefs.name_resolve & PREFS_RESOLV_MAC); + gtk_object_set_data(GTK_OBJECT(display_opt_w), E_DISPLAY_M_NAME_RESOLUTION_KEY, + button); + gtk_box_pack_start(GTK_BOX(main_vb), button, TRUE, TRUE, 0); + gtk_widget_show(button); + + button = dlg_check_button_new_with_label_with_mnemonic( + "Enable _network name resolution", accel_group); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(button), + prefs.name_resolve & PREFS_RESOLV_NETWORK); + gtk_object_set_data(GTK_OBJECT(display_opt_w), E_DISPLAY_N_NAME_RESOLUTION_KEY, + button); + gtk_box_pack_start(GTK_BOX(main_vb), button, TRUE, TRUE, 0); + gtk_widget_show(button); + + button = dlg_check_button_new_with_label_with_mnemonic( + "Enable _transport name resolution", accel_group); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(button), + prefs.name_resolve & PREFS_RESOLV_TRANSPORT); + gtk_object_set_data(GTK_OBJECT(display_opt_w), E_DISPLAY_T_NAME_RESOLUTION_KEY, button); gtk_box_pack_start(GTK_BOX(main_vb), button, TRUE, TRUE, 0); gtk_widget_show(button); @@ -267,9 +288,16 @@ get_display_options(GtkWidget *parent_w) E_DISPLAY_AUTO_SCROLL_KEY); prefs.capture_auto_scroll = (GTK_TOGGLE_BUTTON (button)->active); + prefs.name_resolve = PREFS_RESOLV_NONE; + button = (GtkWidget *) gtk_object_get_data(GTK_OBJECT(parent_w), + E_DISPLAY_M_NAME_RESOLUTION_KEY); + prefs.name_resolve |= (GTK_TOGGLE_BUTTON (button)->active ? PREFS_RESOLV_MAC : PREFS_RESOLV_NONE); + button = (GtkWidget *) gtk_object_get_data(GTK_OBJECT(parent_w), + E_DISPLAY_N_NAME_RESOLUTION_KEY); + prefs.name_resolve |= (GTK_TOGGLE_BUTTON (button)->active ? PREFS_RESOLV_NETWORK : PREFS_RESOLV_NONE); button = (GtkWidget *) gtk_object_get_data(GTK_OBJECT(parent_w), - E_DISPLAY_NAME_RESOLUTION_KEY); - prefs.name_resolve = (GTK_TOGGLE_BUTTON (button)->active); + E_DISPLAY_T_NAME_RESOLUTION_KEY); + prefs.name_resolve |= (GTK_TOGGLE_BUTTON (button)->active ? PREFS_RESOLV_TRANSPORT : PREFS_RESOLV_NONE); } diff --git a/gtk/file_dlg.c b/gtk/file_dlg.c index ef82046999..d2d3906480 100644 --- a/gtk/file_dlg.c +++ b/gtk/file_dlg.c @@ -1,7 +1,7 @@ /* file_dlg.c * Dialog boxes for handling files * - * $Id: file_dlg.c,v 1.38 2001/04/15 03:37:16 guy Exp $ + * $Id: file_dlg.c,v 1.39 2001/05/31 08:36:46 guy Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@zing.org> @@ -57,7 +57,9 @@ static void select_file_type_cb(GtkWidget *w, gpointer data); static void file_save_as_ok_cb(GtkWidget *w, GtkFileSelection *fs); static void file_save_as_destroy_cb(GtkWidget *win, gpointer user_data); -#define E_FILE_RESOLVE_KEY "file_dlg_resolve_key" +#define E_FILE_M_RESOLVE_KEY "file_dlg_mac_resolve_key" +#define E_FILE_N_RESOLVE_KEY "file_dlg_network_resolve_key" +#define E_FILE_T_RESOLVE_KEY "file_dlg_transport_resolve_key" /* * Keep a static pointer to the current "Open Capture File" window, if @@ -71,8 +73,9 @@ static GtkWidget *file_open_w; void file_open_cmd_cb(GtkWidget *w, gpointer data) { - GtkWidget *filter_hbox, *filter_bt, *filter_te, - *resolv_cb; + GtkWidget *main_vb, *filter_hbox, *filter_bt, *filter_te, + *m_resolv_cb, *n_resolv_cb, *t_resolv_cb; + GtkAccelGroup *accel_group; /* No Apply button, and "OK" just sets our text widget, it doesn't activate it (i.e., it doesn't cause us to try to open the file). */ static construct_args_t args = { @@ -91,33 +94,27 @@ file_open_cmd_cb(GtkWidget *w, gpointer data) gtk_signal_connect(GTK_OBJECT(file_open_w), "destroy", GTK_SIGNAL_FUNC(file_open_destroy_cb), NULL); + /* Accelerator group for the accelerators (or, as they're called in + Windows and, I think, in Motif, "mnemonics"; Alt+<key> is a mnemonic, + Ctrl+<key> is an accelerator). */ + accel_group = gtk_accel_group_new(); + gtk_window_add_accel_group(GTK_WINDOW(file_open_w), accel_group); + /* If we've opened a file, start out by showing the files in the directory in which that file resided. */ if (last_open_dir) gtk_file_selection_set_filename(GTK_FILE_SELECTION(file_open_w), last_open_dir); - resolv_cb = dlg_check_button_new_with_label_with_mnemonic( - "Enable name resolution", NULL); - gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(resolv_cb), prefs.name_resolve); - gtk_box_pack_end(GTK_BOX(GTK_FILE_SELECTION(file_open_w)->main_vbox), - resolv_cb, FALSE, FALSE, 5); - gtk_widget_show(resolv_cb); - gtk_object_set_data(GTK_OBJECT(GTK_FILE_SELECTION(file_open_w)->ok_button), - E_FILE_RESOLVE_KEY, resolv_cb); - - - /* Connect the ok_button to file_open_ok_cb function and pass along a - pointer to the file selection box widget */ - gtk_signal_connect(GTK_OBJECT (GTK_FILE_SELECTION (file_open_w)->ok_button), - "clicked", (GtkSignalFunc) file_open_ok_cb, file_open_w); - - gtk_object_set_data(GTK_OBJECT(GTK_FILE_SELECTION(file_open_w)->ok_button), - E_DFILTER_TE_KEY, gtk_object_get_data(GTK_OBJECT(w), E_DFILTER_TE_KEY)); + /* Container for each row of widgets */ + main_vb = gtk_vbox_new(FALSE, 3); + gtk_container_border_width(GTK_CONTAINER(main_vb), 5); + gtk_box_pack_start(GTK_BOX(GTK_FILE_SELECTION(file_open_w)->action_area), + main_vb, FALSE, FALSE, 0); + gtk_widget_show(main_vb); filter_hbox = gtk_hbox_new(FALSE, 1); gtk_container_border_width(GTK_CONTAINER(filter_hbox), 0); - gtk_box_pack_start(GTK_BOX(GTK_FILE_SELECTION(file_open_w)->action_area), - filter_hbox, FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(main_vb), filter_hbox, FALSE, FALSE, 0); gtk_widget_show(filter_hbox); filter_bt = gtk_button_new_with_label("Filter:"); @@ -134,6 +131,41 @@ file_open_cmd_cb(GtkWidget *w, gpointer data) gtk_object_set_data(GTK_OBJECT(GTK_FILE_SELECTION(file_open_w)->ok_button), E_RFILTER_TE_KEY, filter_te); + m_resolv_cb = dlg_check_button_new_with_label_with_mnemonic( + "Enable _MAC name resolution", accel_group); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(m_resolv_cb), + prefs.name_resolve & PREFS_RESOLV_MAC); + gtk_box_pack_start(GTK_BOX(main_vb), m_resolv_cb, FALSE, FALSE, 0); + gtk_widget_show(m_resolv_cb); + gtk_object_set_data(GTK_OBJECT(GTK_FILE_SELECTION(file_open_w)->ok_button), + E_FILE_M_RESOLVE_KEY, m_resolv_cb); + + n_resolv_cb = dlg_check_button_new_with_label_with_mnemonic( + "Enable _network name resolution", accel_group); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(n_resolv_cb), + prefs.name_resolve & PREFS_RESOLV_NETWORK); + gtk_box_pack_start(GTK_BOX(main_vb), n_resolv_cb, FALSE, FALSE, 0); + gtk_widget_show(n_resolv_cb); + gtk_object_set_data(GTK_OBJECT(GTK_FILE_SELECTION(file_open_w)->ok_button), + E_FILE_N_RESOLVE_KEY, n_resolv_cb); + + t_resolv_cb = dlg_check_button_new_with_label_with_mnemonic( + "Enable _transport name resolution", accel_group); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(t_resolv_cb), + prefs.name_resolve & PREFS_RESOLV_TRANSPORT); + gtk_box_pack_start(GTK_BOX(main_vb), t_resolv_cb, FALSE, FALSE, 0); + gtk_widget_show(t_resolv_cb); + gtk_object_set_data(GTK_OBJECT(GTK_FILE_SELECTION(file_open_w)->ok_button), + E_FILE_T_RESOLVE_KEY, t_resolv_cb); + + /* Connect the ok_button to file_open_ok_cb function and pass along a + pointer to the file selection box widget */ + gtk_signal_connect(GTK_OBJECT (GTK_FILE_SELECTION(file_open_w)->ok_button), + "clicked", (GtkSignalFunc) file_open_ok_cb, file_open_w); + + gtk_object_set_data(GTK_OBJECT(GTK_FILE_SELECTION(file_open_w)->ok_button), + E_DFILTER_TE_KEY, gtk_object_get_data(GTK_OBJECT(w), E_DFILTER_TE_KEY)); + /* Connect the cancel_button to destroy the widget */ gtk_signal_connect_object(GTK_OBJECT (GTK_FILE_SELECTION (file_open_w)->cancel_button), "clicked", (GtkSignalFunc) @@ -150,7 +182,7 @@ file_open_cmd_cb(GtkWidget *w, gpointer data) static void file_open_ok_cb(GtkWidget *w, GtkFileSelection *fs) { gchar *cf_name, *rfilter, *s; - GtkWidget *filter_te, *resolv_cb; + GtkWidget *filter_te, *m_resolv_cb, *n_resolv_cb, *t_resolv_cb; dfilter_t *rfcode = NULL; int err; @@ -190,8 +222,13 @@ file_open_ok_cb(GtkWidget *w, GtkFileSelection *fs) { cfile.rfcode = rfcode; /* Set the global resolving variable */ - resolv_cb = gtk_object_get_data(GTK_OBJECT(w), E_FILE_RESOLVE_KEY); - prefs.name_resolve = GTK_TOGGLE_BUTTON (resolv_cb)->active; + prefs.name_resolve = 0; + m_resolv_cb = gtk_object_get_data(GTK_OBJECT(w), E_FILE_M_RESOLVE_KEY); + prefs.name_resolve |= GTK_TOGGLE_BUTTON (m_resolv_cb)->active ? PREFS_RESOLV_MAC : PREFS_RESOLV_NONE; + n_resolv_cb = gtk_object_get_data(GTK_OBJECT(w), E_FILE_N_RESOLVE_KEY); + prefs.name_resolve |= GTK_TOGGLE_BUTTON (n_resolv_cb)->active ? PREFS_RESOLV_NETWORK : PREFS_RESOLV_NONE; + t_resolv_cb = gtk_object_get_data(GTK_OBJECT(w), E_FILE_T_RESOLVE_KEY); + prefs.name_resolve |= GTK_TOGGLE_BUTTON (t_resolv_cb)->active ? PREFS_RESOLV_TRANSPORT : PREFS_RESOLV_NONE; /* We've crossed the Rubicon; get rid of the file selection box. */ gtk_widget_hide(GTK_WIDGET (fs)); diff --git a/gtk/main.c b/gtk/main.c index 83968e04de..774ad399bb 100644 --- a/gtk/main.c +++ b/gtk/main.c @@ -1,6 +1,6 @@ /* main.c * - * $Id: main.c,v 1.198 2001/05/01 00:41:46 guy Exp $ + * $Id: main.c,v 1.199 2001/05/31 08:36:46 guy Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -539,8 +539,8 @@ void expand_all_cb(GtkWidget *widget, gpointer data) { void resolve_name_cb(GtkWidget *widget, gpointer data) { if (cfile.protocol_tree) { - int tmp = prefs.name_resolve; - prefs.name_resolve = 1; + gint tmp = prefs.name_resolve; + prefs.name_resolve = PREFS_RESOLV_ALL; gtk_clist_clear ( GTK_CLIST(tree_view) ); proto_tree_draw(cfile.protocol_tree, tree_view); prefs.name_resolve = tmp; @@ -730,17 +730,19 @@ print_usage(void) { fprintf(stderr, "This is GNU " PACKAGE " " VERSION ", compiled %s\n", comp_info_str->str); #ifdef HAVE_LIBPCAP - fprintf(stderr, "%s [ -vh ] [ -klpQS ] [ -B <byte view height> ] [ -c count ]\n", + fprintf(stderr, "%s [ -vh ] [ -klpQS ] [ -B <byte view height> ] [ -c <count> ]\n", PACKAGE); - fprintf(stderr, "\t[ -f <capture filter> ] [ -i interface ] [ -m <medium font> ] \n"); - fprintf(stderr, "\t[ -n ] [ -o <preference setting> ] ... [ -P <packet list height> ]\n"); - fprintf(stderr, "\t[ -r infile ] [ -R <read filter> ] [ -s snaplen ] \n"); - fprintf(stderr, "\t[ -t <time stamp format> ] [ -T <tree view height> ] [ -w savefile ]\n"); + fprintf(stderr, "\t[ -f <capture filter> ] [ -i <interface> ] [ -m <medium font> ] \n"); + fprintf(stderr, "\t[ -n ] [ -N <resolving> ]\n"); + fprintf(stderr, "\t[ -o <preference setting> ] ... [ -P <packet list height> ]\n"); + fprintf(stderr, "\t[ -r <infile> ] [ -R <read filter> ] [ -s <snaplen> ] \n"); + fprintf(stderr, "\t[ -t <time stamp format> ] [ -T <tree view height> ] [ -w <savefile> ]\n"); #else - fprintf(stderr, "%s [ -vh ] [ -B <byte view height> ] [ -m <medium font> ] [ -n ]\n", + fprintf(stderr, "%s [ -vh ] [ -B <byte view height> ] [ -m <medium font> ]\n"; + fprintf(stderr, "\t[ -n ] [ -N <resolving> ]\n", PACKAGE); fprintf(stderr, "\t[ -o <preference setting> ... [ -P <packet list height> ]\n"); - fprintf(stderr, "\t[ -r infile ] [ -R <read filter> ] [ -t <time stamp format> ]\n"); + fprintf(stderr, "\t[ -r <infile> ] [ -R <read filter> ] [ -t <time stamp format> ]\n"); fprintf(stderr, "\t[ -T <tree view height> ]\n"); #endif } @@ -823,6 +825,7 @@ main(int argc, char *argv[]) dfilter_t *rfcode = NULL; gboolean rfilter_parse_failed = FALSE; e_prefs *prefs; + char badopt; char *bold_font_name; ethereal_path = argv[0]; @@ -983,7 +986,7 @@ main(int argc, char *argv[]) #endif /* Now get our args */ - while ((opt = getopt(argc, argv, "B:c:f:hi:klm:no:pP:Qr:R:Ss:t:T:w:W:vZ:")) != EOF) { + while ((opt = getopt(argc, argv, "B:c:f:hi:klm:nN:o:pP:Qr:R:Ss:t:T:w:W:vZ:")) != EOF) { switch (opt) { case 'B': /* Byte view pane height */ bv_size = get_positive_int(optarg, "byte view pane height"); @@ -1032,11 +1035,21 @@ main(int argc, char *argv[]) case 'm': /* Fixed-width font for the display */ if (prefs->gui_font_name != NULL) g_free(prefs->gui_font_name); - prefs->gui_font_name = g_strdup(optarg); - break; + prefs->gui_font_name = g_strdup(optarg); + break; case 'n': /* No name resolution */ - prefs->name_resolve = 0; - break; + prefs->name_resolve = PREFS_RESOLV_NONE; + break; + case 'N': /* Select what types of addresses/port #s to resolve */ + if (prefs->name_resolve == PREFS_RESOLV_ALL) + prefs->name_resolve = PREFS_RESOLV_NONE; + badopt = string_to_name_resolve(optarg, &prefs->name_resolve); + if (badopt != '\0') { + fprintf(stderr, "ethereal: -N specifies unknown resolving option '%c'; valid options are 'm', 'n', and 't'\n", + badopt); + exit(1); + } + break; case 'o': /* Override preference from command line */ switch (prefs_set_pref(optarg)) { |