From e67b202e2c4b0b6bcf21bff9ad0fc724346c8d14 Mon Sep 17 00:00:00 2001 From: Guy Harris Date: Fri, 19 Aug 2005 01:17:24 +0000 Subject: [PATCH] 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 --- cfile.h | 3 ++- file.c | 4 +++- gtk/main.c | 20 ++++++++++---------- summary.c | 2 +- tethereal.c | 1 + 5 files changed, 17 insertions(+), 13 deletions(-) diff --git a/cfile.h b/cfile.h index 3dc11d4da4..d78461c72d 100644 --- a/cfile.h +++ b/cfile.h @@ -47,7 +47,8 @@ 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? */ - 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 */ int lnk_t; /* Link-layer type with which to save capture */ guint32 vers; /* Version. For tcpdump minor is appended to major */ diff --git a/file.c b/file.c index 74c8978a47..e79b8e3aaa 100644 --- a/file.c +++ b/file.c @@ -199,6 +199,7 @@ cf_open(capture_file *cf, const char *fname, gboolean is_tempfile, int *err) cf->wth = wth; cf->filed = fd; + cf->f_datalen = 0; cf->f_len = cf_stat.st_size; /* 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_thaw(); + cf->f_datalen = 0; cf->f_len = 0; cf->count = 0; cf->esec = 0; @@ -891,7 +893,7 @@ read_packet(capture_file *cf, long offset) cf->plist_end = fdata; cf->count++; - cf->f_len = offset + phdr->caplen; + cf->f_datalen = offset + phdr->caplen; fdata->num = cf->count; add_packet_to_packet_list(fdata, cf, pseudo_header, buf, TRUE); } else { diff --git a/gtk/main.c b/gtk/main.c index e33d622717..5e99501c80 100644 --- a/gtk/main.c +++ b/gtk/main.c @@ -1209,12 +1209,12 @@ set_display_filename(capture_file *cf) } /* convert file size */ - if (cf->f_len/1024/1024 > 10) { - size_str = g_strdup_printf("%ld MB", cf->f_len/1024/1024); - } else if (cf->f_len/1024 > 10) { - size_str = g_strdup_printf("%ld KB", cf->f_len/1024); + if (cf->f_datalen/1024/1024 > 10) { + size_str = g_strdup_printf("%ld MB", cf->f_datalen/1024/1024); + } else if (cf->f_datalen/1024 > 10) { + size_str = g_strdup_printf("%ld KB", cf->f_datalen/1024); } else { - size_str = g_strdup_printf("%ld Bytes", cf->f_len); + size_str = g_strdup_printf("%ld Bytes", cf->f_datalen); } /* statusbar */ @@ -1352,21 +1352,21 @@ main_cf_cb_live_capture_update_continue(capture_file *cf) statusbar_pop_file_msg(); - if (cf->f_len/1024/1024 > 10) { + if (cf->f_datalen/1024/1024 > 10) { capture_msg = g_strdup_printf(" %s: File: %s %ld MB", get_interface_descriptive_name(capture_opts->iface), capture_opts->save_file, - cf->f_len/1024/1024); - } else if (cf->f_len/1024 > 10) { + cf->f_datalen/1024/1024); + } else if (cf->f_datalen/1024 > 10) { capture_msg = g_strdup_printf(" %s: File: %s %ld KB", get_interface_descriptive_name(capture_opts->iface), capture_opts->save_file, - cf->f_len/1024); + cf->f_datalen/1024); } else { capture_msg = g_strdup_printf(" %s: File: %s %ld Bytes", get_interface_descriptive_name(capture_opts->iface), capture_opts->save_file, - cf->f_len); + cf->f_datalen); } statusbar_push_file_msg(capture_msg); diff --git a/summary.c b/summary.c index e9df777805..511cf47f18 100644 --- a/summary.c +++ b/summary.c @@ -106,7 +106,7 @@ summary_fill_in(capture_file *cf, summary_tally *st) } st->filename = cf->filename; - st->file_length = cf->f_len; + st->file_length = cf->f_datalen; st->encap_type = cf->cd_t; st->has_snap = cf->has_snap; st->snap = cf->snap; diff --git a/tethereal.c b/tethereal.c index 92595f3275..ec69777f28 100644 --- a/tethereal.c +++ b/tethereal.c @@ -2970,6 +2970,7 @@ cf_open(capture_file *cf, const char *fname, gboolean is_tempfile, int *err) cf->wth = wth; 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 */ /* Set the file name because we need it to set the follow stream filter. -- 2.34.1