Have "f_datalen" keep track of the number of bytes of uncompressed file

data, so that "f_len" still keeps the size of the underlying file (which
is necessary in order to make the progress bar when files are being read
work correctly).

svn path=/trunk/; revision=15415
This commit is contained in:
Guy Harris 2005-08-19 01:17:24 +00:00
parent 1e1df99990
commit e67b202e2c
5 changed files with 17 additions and 13 deletions

View File

@ -47,7 +47,8 @@ typedef struct _capture_file {
gchar *filename; /* Name of capture file */ gchar *filename; /* Name of capture file */
gboolean is_tempfile; /* Is capture file a temporary 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? */ gboolean user_saved;/* If capture file is temporary, has it been saved by user yet? */
long f_len; /* Length of capture file */ long f_datalen; /* Size of capture file data (uncompressed) */
long f_len; /* Length of capture file (compressed if file is) */
guint16 cd_t; /* File type of capture file */ guint16 cd_t; /* File type of capture file */
int lnk_t; /* Link-layer type with which to save capture */ int lnk_t; /* Link-layer type with which to save capture */
guint32 vers; /* Version. For tcpdump minor is appended to major */ guint32 vers; /* Version. For tcpdump minor is appended to major */

4
file.c
View File

@ -199,6 +199,7 @@ cf_open(capture_file *cf, const char *fname, gboolean is_tempfile, int *err)
cf->wth = wth; cf->wth = wth;
cf->filed = fd; cf->filed = fd;
cf->f_datalen = 0;
cf->f_len = cf_stat.st_size; cf->f_len = cf_stat.st_size;
/* Set the file name because we need it to set the follow stream filter. /* Set the file name because we need it to set the follow stream filter.
@ -297,6 +298,7 @@ cf_reset_state(capture_file *cf)
packet_list_clear(); packet_list_clear();
packet_list_thaw(); packet_list_thaw();
cf->f_datalen = 0;
cf->f_len = 0; cf->f_len = 0;
cf->count = 0; cf->count = 0;
cf->esec = 0; cf->esec = 0;
@ -891,7 +893,7 @@ read_packet(capture_file *cf, long offset)
cf->plist_end = fdata; cf->plist_end = fdata;
cf->count++; cf->count++;
cf->f_len = offset + phdr->caplen; cf->f_datalen = offset + phdr->caplen;
fdata->num = cf->count; fdata->num = cf->count;
add_packet_to_packet_list(fdata, cf, pseudo_header, buf, TRUE); add_packet_to_packet_list(fdata, cf, pseudo_header, buf, TRUE);
} else { } else {

View File

@ -1209,12 +1209,12 @@ set_display_filename(capture_file *cf)
} }
/* convert file size */ /* convert file size */
if (cf->f_len/1024/1024 > 10) { if (cf->f_datalen/1024/1024 > 10) {
size_str = g_strdup_printf("%ld MB", cf->f_len/1024/1024); size_str = g_strdup_printf("%ld MB", cf->f_datalen/1024/1024);
} else if (cf->f_len/1024 > 10) { } else if (cf->f_datalen/1024 > 10) {
size_str = g_strdup_printf("%ld KB", cf->f_len/1024); size_str = g_strdup_printf("%ld KB", cf->f_datalen/1024);
} else { } else {
size_str = g_strdup_printf("%ld Bytes", cf->f_len); size_str = g_strdup_printf("%ld Bytes", cf->f_datalen);
} }
/* statusbar */ /* statusbar */
@ -1352,21 +1352,21 @@ main_cf_cb_live_capture_update_continue(capture_file *cf)
statusbar_pop_file_msg(); statusbar_pop_file_msg();
if (cf->f_len/1024/1024 > 10) { if (cf->f_datalen/1024/1024 > 10) {
capture_msg = g_strdup_printf(" %s: <live capture in progress> File: %s %ld MB", capture_msg = g_strdup_printf(" %s: <live capture in progress> File: %s %ld MB",
get_interface_descriptive_name(capture_opts->iface), get_interface_descriptive_name(capture_opts->iface),
capture_opts->save_file, capture_opts->save_file,
cf->f_len/1024/1024); cf->f_datalen/1024/1024);
} else if (cf->f_len/1024 > 10) { } else if (cf->f_datalen/1024 > 10) {
capture_msg = g_strdup_printf(" %s: <live capture in progress> File: %s %ld KB", capture_msg = g_strdup_printf(" %s: <live capture in progress> File: %s %ld KB",
get_interface_descriptive_name(capture_opts->iface), get_interface_descriptive_name(capture_opts->iface),
capture_opts->save_file, capture_opts->save_file,
cf->f_len/1024); cf->f_datalen/1024);
} else { } else {
capture_msg = g_strdup_printf(" %s: <live capture in progress> File: %s %ld Bytes", capture_msg = g_strdup_printf(" %s: <live capture in progress> File: %s %ld Bytes",
get_interface_descriptive_name(capture_opts->iface), get_interface_descriptive_name(capture_opts->iface),
capture_opts->save_file, capture_opts->save_file,
cf->f_len); cf->f_datalen);
} }
statusbar_push_file_msg(capture_msg); statusbar_push_file_msg(capture_msg);

View File

@ -106,7 +106,7 @@ summary_fill_in(capture_file *cf, summary_tally *st)
} }
st->filename = cf->filename; st->filename = cf->filename;
st->file_length = cf->f_len; st->file_length = cf->f_datalen;
st->encap_type = cf->cd_t; st->encap_type = cf->cd_t;
st->has_snap = cf->has_snap; st->has_snap = cf->has_snap;
st->snap = cf->snap; st->snap = cf->snap;

View File

@ -2970,6 +2970,7 @@ cf_open(capture_file *cf, const char *fname, gboolean is_tempfile, int *err)
cf->wth = wth; cf->wth = wth;
cf->filed = -1; /* not used, but set it anyway */ cf->filed = -1; /* not used, but set it anyway */
cf->f_datalen = 0; /* not used, but set it anyway */
cf->f_len = 0; /* not used, but set it anyway */ cf->f_len = 0; /* not used, but set it anyway */
/* Set the file name because we need it to set the follow stream filter. /* Set the file name because we need it to set the follow stream filter.