-}
-
-
-/*
- * routine to concatenate files
- */
-static void
-append(int count, in_file_t in_files[], out_file_t *out_file)
-{
- int i;
- int err;
-
- for (i = 0; i < count; i++) {
- if (!wtap_loop(in_files[i].wth, 0, write_frame,
- (u_char*)out_file->pdh, &err)) {
- fprintf(stderr, "mergecap: Error appending from %s to %s: %s\n",
- in_files[i].filename, out_file->filename, wtap_strerror(err));
- }
- }
-}
-
-
-/*
- * 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 */
- return FALSE;
- } else if (l->tv_sec < r->tv_sec) { /* left is earlier */
- return TRUE;
- } else if (l->tv_usec > r->tv_usec) { /* tv_sec equal, l.usec later */
- return FALSE;
- }
- /* either one < two or one == two
- * either way, return one
- */
- return TRUE;
-}
-
-
-/*
- * returns index of earliest timestamp in set of input files
- * or -1 if no valid files remain
- */
-static int
-earliest(int count, in_file_t in_files[]) {
- int i;
- int ei = -1;
- struct timeval tv = {LONG_MAX, LONG_MAX};
-
- for (i = 0; i < count; i++) {
- struct wtap_pkthdr *phdr = wtap_phdr(in_files[i].wth);
-
- if (in_files[i].ok && is_earlier(&(phdr->ts), &tv)) {
- tv = phdr->ts;
- ei = i;
- }
- }
- return ei;
-}
-
-/*
- * actually merge the files
- */
-static void
-merge(int count, in_file_t in_files[], out_file_t *out_file)
-{
- int i;
-
- /* prime the pump (read in first frame from each file) */
- for (i = 0; i < count; i++) {
- in_files[i].ok = wtap_read(in_files[i].wth, &(in_files[i].err),
- &(in_files[i].data_offset));