aboutsummaryrefslogtreecommitdiffstats
path: root/merge.c
diff options
context:
space:
mode:
authorguy <guy@f5534014-38df-0310-8fa8-9805f1628bb7>2005-08-19 19:40:00 +0000
committerguy <guy@f5534014-38df-0310-8fa8-9805f1628bb7>2005-08-19 19:40:00 +0000
commitb74f760334f784437305db4928ba9d1220cc0ce0 (patch)
tree8ffe4f642463b43885354f4dd755e59b4daf3823 /merge.c
parent82f2acbc58e8c6d08fba56d1d411128417aea056 (diff)
Add APIs to Wiretap to return the file of the size as supplied by the OS
(so if the file's gzipped, it's *NOT* the size of the file after uncompressing), and an approximation of the amount of that data read sequentially so far. Use those for various progress bars and the like. Make the fstat() in the Ascend trace reader directly use wth->fd, as it's inside Wiretap; that gets rid of the last caller of wtap_fd() (as we're no longer directly using fstat() or lseek() in Ethereal), so get rid of wtap_fd(). git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@15437 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'merge.c')
-rw-r--r--merge.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/merge.c b/merge.c
index d82c14136b..f2fb294aa2 100644
--- a/merge.c
+++ b/merge.c
@@ -24,10 +24,6 @@
#include <sys/time.h>
#endif
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-
#include <string.h>
#include "wtap.h"
#include "merge.h"
@@ -43,7 +39,7 @@ merge_open_in_files(int in_file_count, char *const *in_file_names,
int i, j;
int files_size = in_file_count * sizeof(merge_in_file_t);
merge_in_file_t *files;
- struct stat statb;
+ gint64 size;
files = g_malloc(files_size);
*in_files = files;
@@ -60,14 +56,14 @@ merge_open_in_files(int in_file_count, char *const *in_file_names,
*err_fileno = i;
return FALSE;
}
- if (fstat(wtap_fd(files[i].wth), &statb) < 0) {
- *err = errno;
+ size = wtap_file_size(files[i].wth, err);
+ if (size == -1) {
for (j = 0; j <= i; j++)
wtap_close(files[j].wth);
*err_fileno = i;
return FALSE;
}
- files[i].size = statb.st_size;
+ files[i].size = size;
}
return TRUE;
}