Add a routine to return the display name for a "capture_file" structure,

rather than constructing that name when a capture file is opened and
putting a pointer to it in that structure.

svn path=/trunk/; revision=8476
This commit is contained in:
Guy Harris 2003-09-15 22:16:08 +00:00
parent 0d87da9c92
commit f56d16abab
10 changed files with 62 additions and 102 deletions

View File

@ -1,7 +1,7 @@
/* cfile.h
* capture_file definition & GUI-independent manipulation
*
* $Id: cfile.h,v 1.4 2003/09/15 20:37:35 guy Exp $
* $Id: cfile.h,v 1.5 2003/09/15 22:16:07 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@ -47,7 +47,6 @@ typedef struct _capture_file {
gchar *filename; /* Name of capture file */
gboolean is_tempfile; /* Is capture file a temporary file? */
gboolean user_saved;/* If capture file is temporary, has it been saved by user yet? */
gchar *displayname; /* Name used when displaying */
long f_len; /* Length of capture file */
guint16 cd_t; /* File type of capture file */
int lnk_t; /* Link-layer type with which to save capture */

67
file.c
View File

@ -1,7 +1,7 @@
/* file.c
* File I/O routines
*
* $Id: file.c,v 1.311 2003/09/15 20:37:36 guy Exp $
* $Id: file.c,v 1.312 2003/09/15 22:16:07 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@ -151,7 +151,6 @@ open_cap_file(char *fname, gboolean is_tempfile, capture_file *cf)
int err;
int fd;
struct stat cf_stat;
gchar *displayname;
wth = wtap_open_offline(fname, &err, TRUE);
if (wth == NULL)
@ -190,17 +189,6 @@ open_cap_file(char *fname, gboolean is_tempfile, capture_file *cf)
/* If it's a temporary capture buffer file, mark it as not saved. */
cf->user_saved = !is_tempfile;
/* Set the name we use in various displays */
if (!cf->is_tempfile) {
/* Get the last component of the file name, and use that. */
displayname = get_basename(cf->filename);
} else {
/* The file we read is a temporary file from a live capture;
we don't mention its name. */
displayname = "<capture>";
}
cf->displayname = g_strdup(displayname);
cf->cd_t = wtap_file_type(cf->wth);
cf->count = 0;
cf->marked_count = 0;
@ -257,10 +245,6 @@ close_cap_file(capture_file *cf)
g_free(cf->filename);
cf->filename = NULL;
}
if (cf->displayname != NULL) {
g_free(cf->displayname);
cf->displayname = NULL;
}
/* ...which means we have nothing to save. */
cf->user_saved = FALSE;
@ -308,6 +292,7 @@ close_cap_file(capture_file *cf)
static void
set_display_filename(capture_file *cf)
{
gchar *name_ptr;
size_t msg_len;
static const gchar done_fmt_nodrops[] = " File: %s";
static const gchar done_fmt_drops[] = " File: %s Drops: %u";
@ -315,21 +300,22 @@ set_display_filename(capture_file *cf)
gchar *win_name_fmt = "%s - Ethereal";
gchar *win_name;
name_ptr = cf_get_display_name(cf);
if (cf->drops_known) {
msg_len = strlen(cf->displayname) + strlen(done_fmt_drops) + 64;
msg_len = strlen(name_ptr) + strlen(done_fmt_drops) + 64;
done_msg = g_malloc(msg_len);
snprintf(done_msg, msg_len, done_fmt_drops, cf->displayname, cf->drops);
snprintf(done_msg, msg_len, done_fmt_drops, name_ptr, cf->drops);
} else {
msg_len = strlen(cf->displayname) + strlen(done_fmt_nodrops);
msg_len = strlen(name_ptr) + strlen(done_fmt_nodrops);
done_msg = g_malloc(msg_len);
snprintf(done_msg, msg_len, done_fmt_nodrops, cf->displayname);
snprintf(done_msg, msg_len, done_fmt_nodrops, name_ptr);
}
statusbar_push_file_msg(done_msg);
g_free(done_msg);
msg_len = strlen(cf->displayname) + strlen(win_name_fmt) + 1;
msg_len = strlen(name_ptr) + strlen(win_name_fmt) + 1;
win_name = g_malloc(msg_len);
snprintf(win_name, msg_len, win_name_fmt, cf->displayname);
snprintf(win_name, msg_len, win_name_fmt, name_ptr);
set_main_window_name(win_name);
g_free(win_name);
}
@ -337,7 +323,7 @@ set_display_filename(capture_file *cf)
read_status_t
read_cap_file(capture_file *cf, int *err)
{
gchar *load_msg, *load_fmt = "%s";
gchar *name_ptr, *load_msg, *load_fmt = "%s";
size_t msg_len;
char *errmsg;
char errmsg_errno[1024+1];
@ -359,10 +345,11 @@ read_cap_file(capture_file *cf, int *err)
cul_bytes=0;
reset_tap_listeners();
name_ptr = get_basename(cf->filename);
msg_len = strlen(cf->displayname) + strlen(load_fmt) + 2;
msg_len = strlen(name_ptr) + strlen(load_fmt) + 2;
load_msg = g_malloc(msg_len);
snprintf(load_msg, msg_len, load_fmt, cf->displayname);
snprintf(load_msg, msg_len, load_fmt, name_ptr);
statusbar_push_file_msg(load_msg);
/* Update the progress bar when it gets to this value. */
@ -658,6 +645,27 @@ finish_tail_cap_file(capture_file *cf, int *err)
}
#endif /* HAVE_LIBPCAP */
gchar *
cf_get_display_name(capture_file *cf)
{
gchar *displayname;
/* Return a name to use in displays */
if (!cf->is_tempfile && cf->filename != NULL) {
/* Get the last component of the file name, and use that. */
displayname = get_basename(cf->filename);
} else {
/* The file we read is a temporary file from a live capture;
we don't mention its name.
XXX - "cf->filename" shouldn't be null here, but this might
be called from some tap display routines, and those can
be called before the file is opened, which is arguably a bug. */
displayname = "<capture>";
}
return displayname;
}
typedef struct {
color_filter_t *colorf;
epan_dissect_t *edt;
@ -2155,7 +2163,7 @@ save_cap_file(char *fname, capture_file *cf, gboolean save_filtered,
gboolean save_marked, guint save_format)
{
gchar *from_filename;
gchar *save_msg, *save_fmt = " Saving: %s...";
gchar *name_ptr, *save_msg, *save_fmt = " Saving: %s...";
size_t msg_len;
int err;
gboolean do_copy;
@ -2166,9 +2174,10 @@ save_cap_file(char *fname, capture_file *cf, gboolean save_filtered,
guint8 pd[65536];
struct stat infile, outfile;
msg_len = strlen(cf->displayname) + strlen(save_fmt) + 2;
name_ptr = get_basename(fname);
msg_len = strlen(name_ptr) + strlen(save_fmt) + 2;
save_msg = g_malloc(msg_len);
snprintf(save_msg, msg_len, save_fmt, cf->displayname);
snprintf(save_msg, msg_len, save_fmt, name_ptr);
statusbar_push_file_msg(save_msg);
g_free(save_msg);

3
file.h
View File

@ -1,7 +1,7 @@
/* file.h
* Definitions for file structures and routines
*
* $Id: file.h,v 1.105 2003/09/12 02:48:20 sahlberg Exp $
* $Id: file.h,v 1.106 2003/09/15 22:16:08 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@ -49,6 +49,7 @@ read_status_t continue_tail_cap_file(capture_file *, int, int *);
read_status_t finish_tail_cap_file(capture_file *, int *);
/* size_t read_frame_header(capture_file *); */
gboolean save_cap_file(char *, capture_file *, gboolean, gboolean, guint);
gchar *cf_get_display_name(capture_file *);
int filter_packets(capture_file *cf, gchar *dfilter);
void reftime_packets(capture_file *);

View File

@ -1,7 +1,7 @@
/* dcerpc_stat.c
* dcerpc_stat 2002 Ronnie Sahlberg
*
* $Id: dcerpc_stat.c,v 1.19 2003/09/15 20:37:36 guy Exp $
* $Id: dcerpc_stat.c,v 1.20 2003/09/15 22:16:08 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@ -37,7 +37,6 @@
#include <gtk/gtk.h>
#include "menu.h"
#include "epan/packet_info.h"
#include "epan/filesystem.h"
#include "simple_dialog.h"
#include "dlg_utils.h"
#include "ui_util.h"
@ -88,10 +87,7 @@ dcerpcstat_reset(rpcstat_t *rs)
char title_string[256];
reset_srt_table_data(&rs->srt_table);
if (cfile.displayname)
snprintf(title_string, 255, "DCE-RPC Service Response Time statistics for %s version %d.%d : %s", rs->prog, rs->ver&0xff, rs->ver>>8, cfile.displayname);
else
snprintf(title_string, 255, "DCE-RPC Service Response Time statistics for %s version %d.%d", rs->prog, rs->ver&0xff, rs->ver>>8);
snprintf(title_string, 255, "DCE-RPC Service Response Time statistics for %s version %d.%d : %s", rs->prog, rs->ver&0xff, rs->ver>>8, cf_get_display_name(&cfile));
gtk_window_set_title(GTK_WINDOW(rs->win), title_string);
}
@ -215,10 +211,7 @@ gtk_dcerpcstat_init(char *optarg)
rs->win=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size(GTK_WINDOW(rs->win), 550, 400);
if (cfile.displayname)
snprintf(title_string, 255, "DCE-RPC Service Response Time statistics for %s version %d.%d : %s", rs->prog, rs->ver&0xff, rs->ver>>8, cfile.displayname);
else
snprintf(title_string, 255, "DCE-RPC Service Response Time statistics for %s version %d.%d", rs->prog, rs->ver&0xff, rs->ver>>8);
snprintf(title_string, 255, "DCE-RPC Service Response Time statistics for %s version %d.%d : %s", rs->prog, rs->ver&0xff, rs->ver>>8, cf_get_display_name(&cfile));
gtk_window_set_title(GTK_WINDOW(rs->win), title_string);
SIGNAL_CONNECT(rs->win, "destroy", win_destroy_cb, rs);

View File

@ -4,7 +4,7 @@
* endpoint_talkers_table 2003 Ronnie Sahlberg
* Helper routines common to all endpoint talkers tap.
*
* $Id: endpoint_talkers_table.c,v 1.18 2003/09/15 20:37:36 guy Exp $
* $Id: endpoint_talkers_table.c,v 1.19 2003/09/15 22:16:08 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@ -36,7 +36,6 @@
#include <gtk/gtk.h>
#include "compat_macros.h"
#include "epan/packet_info.h"
#include "epan/filesystem.h"
#include "epan/to_str.h"
#include "endpoint_talkers_table.h"
#include "image/clist_ascend.xpm"
@ -206,10 +205,7 @@ reset_ett_table_data(endpoints_table *et)
guint32 i;
char title[256];
if (cfile.displayname)
snprintf(title, 255, "%s Conversations: %s", et->name, cfile.displayname);
else
snprintf(title, 255, "%s Conversations", et->name);
snprintf(title, 255, "%s Conversations: %s", et->name, cf_get_display_name(&cfile));
gtk_window_set_title(GTK_WINDOW(et->win), title);
/* remove all entries from the clist */
@ -884,10 +880,7 @@ init_ett_table(gboolean hide_ports, char *table_name, char *tap_name, char *filt
talkers->name=table_name;
talkers->win=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size(GTK_WINDOW(talkers->win), 750, 400);
if (cfile.displayname)
snprintf(title, 255, "%s Conversations: %s", table_name, cfile.displayname);
else
snprintf(title, 255, "%s Conversations", table_name);
snprintf(title, 255, "%s Conversations: %s", table_name, cf_get_display_name(&cfile));
gtk_window_set_title(GTK_WINDOW(talkers->win), title);
SIGNAL_CONNECT(talkers->win, "destroy", ett_win_destroy_cb, talkers);

View File

@ -1,7 +1,7 @@
/* fc_stat.c
* fc_stat 2003 Ronnie Sahlberg
*
* $Id: fc_stat.c,v 1.7 2003/09/15 20:37:36 guy Exp $
* $Id: fc_stat.c,v 1.8 2003/09/15 22:16:08 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@ -38,7 +38,6 @@
#include "../epan/packet_info.h"
#include "../tap.h"
#include "../epan/value_string.h"
#include "../epan/filesystem.h"
#include "../packet-fc.h"
#include "../register.h"
#include "../timestats.h"
@ -65,10 +64,7 @@ fcstat_reset(void *pfc)
char title[256];
reset_srt_table_data(&fc->fc_srt_table);
if (cfile.displayname)
snprintf(title, 255, "Fibre Channel Service Response Time statistics: %s", cfile.displayname);
else
snprintf(title, 255, "Fibre Channel Service Response Time statistics");
snprintf(title, 255, "Fibre Channel Service Response Time statistics: %s", cf_get_display_name(&cfile));
gtk_window_set_title(GTK_WINDOW(fc->win), title);
}
@ -141,10 +137,7 @@ gtk_fcstat_init(char *optarg)
fc->win=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size(GTK_WINDOW(fc->win), 550, 400);
if (cfile.displayname)
snprintf(title, 255, "Fibre Channel Service Response Time statistics: %s", cfile.displayname);
else
snprintf(title, 255, "Fibre Channel Service Response Time statistics");
snprintf(title, 255, "Fibre Channel Service Response Time statistics: %s", cf_get_display_name(&cfile));
gtk_window_set_title(GTK_WINDOW(fc->win), title);
SIGNAL_CONNECT(fc->win, "destroy", win_destroy_cb, fc);

View File

@ -1,7 +1,7 @@
/* io_stat.c
* io_stat 2002 Ronnie Sahlberg
*
* $Id: io_stat.c,v 1.25 2003/09/15 20:37:36 guy Exp $
* $Id: io_stat.c,v 1.26 2003/09/15 22:16:08 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@ -42,7 +42,6 @@
#include "menu.h"
#include "epan/epan_dissect.h"
#include "epan/packet_info.h"
#include "epan/filesystem.h"
#include "../tap.h"
#include "../register.h"
#include "simple_dialog.h"
@ -224,10 +223,7 @@ gtk_iostat_reset(void *g)
gio->io->last_interval=0xffffffff;
gio->io->max_interval=0;
if (cfile.displayname)
snprintf(title, 255, "IO-Stat: %s", cfile.displayname);
else
snprintf(title, 255, "IO-Stat");
snprintf(title, 255, "IO-Stat: %s", cf_get_display_name(&cfile));
gtk_window_set_title(GTK_WINDOW(gio->io->window), title);
}
@ -1646,10 +1642,7 @@ init_io_stat_window(io_stat_t *io)
create_ctrl_area(io, hbox);
gtk_widget_show(io->window);
if (cfile.displayname)
snprintf(title, 255, "IO-Stat: %s", cfile.displayname);
else
snprintf(title, 255, "IO-Stat");
snprintf(title, 255, "IO-Stat: %s", cf_get_display_name(&cfile));
gtk_window_set_title(GTK_WINDOW(io->window), title);
}

View File

@ -2,7 +2,7 @@
* mgcp-statistics for ethereal
* Copyright 2003 Lars Roland
*
* $Id: mgcp_stat.c,v 1.11 2003/09/15 20:37:37 guy Exp $
* $Id: mgcp_stat.c,v 1.12 2003/09/15 22:16:08 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@ -37,7 +37,6 @@
#include <string.h>
#include "menu.h"
#include "../epan/packet_info.h"
#include "../epan/filesystem.h"
#include "../tap.h"
#include "../epan/value_string.h"
#include "../register.h"
@ -110,10 +109,7 @@ mgcpstat_reset(void *pms)
ms->req_dup_num=0;
ms->rsp_dup_num=0;
if (cfile.displayname)
snprintf(title, 255, "MGCP SRT Statistics: %s", cfile.displayname);
else
snprintf(title, 255, "MGCP SRT Statistics");
snprintf(title, 255, "MGCP SRT Statistics: %s", cf_get_display_name(&cfile));
if (! dlg)
dlg=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(dlg), title);
@ -350,10 +346,7 @@ gtk_mgcpstat_cb(GtkWidget *w _U_, gpointer d _U_)
}
dlg=gtk_window_new(GTK_WINDOW_TOPLEVEL);
if (cfile.displayname)
snprintf(title, 255, "MGCP SRT Statistics: %s", cfile.displayname);
else
snprintf(title, 255, "MGCP SRT Statistics");
snprintf(title, 255, "MGCP SRT Statistics: %s", cf_get_display_name(&cfile));
gtk_window_set_title(GTK_WINDOW(dlg), title);
SIGNAL_CONNECT(dlg, "destroy", dlg_destroy_cb, NULL);
dlg_box=gtk_vbox_new(FALSE, 0);

View File

@ -1,7 +1,7 @@
/* rpc_stat.c
* rpc_stat 2002 Ronnie Sahlberg
*
* $Id: rpc_stat.c,v 1.18 2003/09/15 20:37:37 guy Exp $
* $Id: rpc_stat.c,v 1.19 2003/09/15 22:16:08 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@ -35,7 +35,6 @@
#include <gtk/gtk.h>
#include "menu.h"
#include "epan/packet_info.h"
#include "epan/filesystem.h"
#include "simple_dialog.h"
#include "tap.h"
#include "../register.h"
@ -66,10 +65,7 @@ rpcstat_reset(rpcstat_t *rs)
reset_srt_table_data(&rs->srt_table);
if (cfile.displayname)
snprintf(title_string, 256, "ONC-RPC Service Response Time statistics for %s version %d: %s", rs->prog, rs->version, cfile.displayname);
else
snprintf(title_string, 256, "ONC-RPC Service Response Time statistics for %s version %d", rs->prog, rs->version);
snprintf(title_string, 256, "ONC-RPC Service Response Time statistics for %s version %d: %s", rs->prog, rs->version, cf_get_display_name(&cfile));
gtk_window_set_title(GTK_WINDOW(rs->win), title_string);
}
@ -219,10 +215,7 @@ gtk_rpcstat_init(char *optarg)
rs->win=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size(GTK_WINDOW(rs->win), 550, 400);
if (cfile.displayname)
snprintf(title_string, 256, "ONC-RPC Service Response Time statistics for %s version %d: %s", rs->prog, rs->version, cfile.displayname);
else
snprintf(title_string, 256, "ONC-RPC Service Response Time statistics for %s version %d", rs->prog, rs->version);
snprintf(title_string, 256, "ONC-RPC Service Response Time statistics for %s version %d: %s", rs->prog, rs->version, cf_get_display_name(&cfile));
gtk_window_set_title(GTK_WINDOW(rs->win), title_string);
SIGNAL_CONNECT(rs->win, "destroy", win_destroy_cb, rs);

View File

@ -1,7 +1,7 @@
/* smb_stat.c
* smb_stat 2003 Ronnie Sahlberg
*
* $Id: smb_stat.c,v 1.15 2003/09/15 20:37:37 guy Exp $
* $Id: smb_stat.c,v 1.16 2003/09/15 22:16:08 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@ -36,7 +36,6 @@
#include <string.h>
#include "menu.h"
#include "../epan/packet_info.h"
#include "../epan/filesystem.h"
#include "../tap.h"
#include "../epan/value_string.h"
#include "../smb.h"
@ -69,10 +68,7 @@ smbstat_reset(void *pss)
reset_srt_table_data(&ss->smb_srt_table);
reset_srt_table_data(&ss->trans2_srt_table);
reset_srt_table_data(&ss->nt_trans_srt_table);
if (cfile.displayname)
snprintf(title, 255, "SMB Service Response Time statistics: %s", cfile.displayname);
else
snprintf(title, 255, "SMB Service Response Time statistics");
snprintf(title, 255, "SMB Service Response Time statistics: %s", cf_get_display_name(&cfile));
gtk_window_set_title(GTK_WINDOW(ss->win), title);
}
@ -159,10 +155,7 @@ gtk_smbstat_init(char *optarg)
ss->win=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size(GTK_WINDOW(ss->win), 550, 600);
if (cfile.displayname)
snprintf(title, 255, "SMB Service Response Time statistics: %s", cfile.displayname);
else
snprintf(title, 255, "SMB Service Response Time statistics");
snprintf(title, 255, "SMB Service Response Time statistics: %s", cf_get_display_name(&cfile));
gtk_window_set_title(GTK_WINDOW(ss->win), title);
SIGNAL_CONNECT(ss->win, "destroy", win_destroy_cb, ss);