Update to V9.0.0 (2009-12)
[obnox/wireshark/wip.git] / merge.c
diff --git a/merge.c b/merge.c
index d82c14136bca9e24f2fdb60e3638576e1f7b4d38..bedb342855dec194616869c6e1422d4ff135f1ea 100644 (file)
--- a/merge.c
+++ b/merge.c
 #include <sys/time.h>
 #endif
 
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-
 #include <string.h>
 #include "wtap.h"
 #include "merge.h"
@@ -41,9 +37,9 @@ merge_open_in_files(int in_file_count, char *const *in_file_names,
                     int *err_fileno)
 {
   int i, j;
-  int files_size = in_file_count * sizeof(merge_in_file_t);
+  size_t 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;
 }
@@ -137,12 +133,12 @@ merge_max_snapshot_length(int count, merge_in_file_t in_files[])
  * returns TRUE if first argument is earlier than second
  */
 static gboolean
-is_earlier(struct timeval *l, struct timeval *r) {
-  if (l->tv_sec > r->tv_sec) {  /* left is later */
+is_earlier(struct wtap_nstime *l, struct wtap_nstime *r) {
+  if (l->secs > r->secs) {  /* left is later */
     return FALSE;
-  } else if (l->tv_sec < r->tv_sec) { /* left is earlier */
+  } else if (l->secs < r->secs) { /* left is earlier */
     return TRUE;
-  } else if (l->tv_usec > r->tv_usec) { /* tv_sec equal, l.usec later */
+  } else if (l->nsecs > r->nsecs) { /* tv_sec equal, l.usec later */
     return FALSE;
   }
   /* either one < two or one == two
@@ -161,7 +157,7 @@ merge_read_packet(int in_file_count, merge_in_file_t in_files[], int *err,
 {
   int i;
   int ei = -1;
-  struct timeval tv = {LONG_MAX, LONG_MAX};
+  struct wtap_nstime tv = { sizeof(time_t) > sizeof(int) ? LONG_MAX : INT_MAX, INT_MAX };
   struct wtap_pkthdr *phdr;
 
   /*