Get rid of merge_n_files() - it's only called in one place now, and
authorguy <guy@f5534014-38df-0310-8fa8-9805f1628bb7>
Wed, 27 Oct 2004 23:45:10 +0000 (23:45 +0000)
committerguy <guy@f5534014-38df-0310-8fa8-9805f1628bb7>
Wed, 27 Oct 2004 23:45:10 +0000 (23:45 +0000)
absorbing its logic into "cf_merge_files()" simplifies things a bit.

git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@12421 f5534014-38df-0310-8fa8-9805f1628bb7

file.c
file.h
merge.c
merge.h

diff --git a/file.c b/file.c
index f7c3f1b71d4d0371289131e4454920d34bf5284f..f1a407fc5167a4b04f1496c5bdf6c6788bca69aa 100644 (file)
--- a/file.c
+++ b/file.c
@@ -969,37 +969,49 @@ read_packet(capture_file *cf, long offset)
 }
 
 gboolean
-cf_merge_files(const char *out_file, int out_fd, int in_file_count,
-               char *const *in_filenames, int filetype, gboolean do_append)
+cf_merge_files(const char *out_filename, int out_fd, int in_file_count,
+               char *const *in_filenames, int file_type, gboolean do_append)
 {
-  merge_status_e  merge_status;
-  int             err;
-  gchar          *err_info;
-  int             err_fileno; 
-
-  merge_status = merge_n_files(out_fd, in_file_count, in_filenames, filetype,
-                               do_append, &err, &err_info, &err_fileno);
-
-  switch (merge_status) {
-
-  case MERGE_SUCCESS:
-    return TRUE;
-
-  case MERGE_OPEN_INPUT_FAILED:
+  merge_in_file_t  *in_files;
+  merge_out_file_t  out_file;
+  int               err, close_err;
+  gchar            *err_info;
+  int               err_fileno; 
+  gboolean          ret;
+
+  /* open the input files */
+  in_file_count = merge_open_in_files(in_file_count, in_filenames, &in_files,
+                                      &err, &err_info, &err_fileno);
+  if (in_file_count < 2) {
+    free(in_files);
     cf_open_failure_alert_box(in_filenames[err_fileno], err, err_info, FALSE, 0);
     return FALSE;
+  }
 
-  case MERGE_OPEN_OUTPUT_FAILED:
-    cf_open_failure_alert_box(out_file, err, err_info, TRUE, filetype);
+  if (!merge_open_outfile(&out_file, out_fd, file_type,
+      merge_select_frame_type(in_file_count, in_files),
+      merge_max_snapshot_length(in_file_count, in_files), &err)) {
+    merge_close_in_files(in_file_count, in_files);
+    free(in_files);
+    cf_open_failure_alert_box(out_filename, err, err_info, TRUE, file_type);
     return FALSE;
+  }
 
-  /* XXX - what about read failures? */
+  /* do the merge (or append) */
+  if (do_append)
+    ret = merge_append_files(in_file_count, in_files, &out_file, &err);
+  else
+    ret = merge_files(in_file_count, in_files, &out_file, &err);
 
-  case MERGE_WRITE_FAILED:
-    cf_write_failure_alert_box(out_file, err);
-    return FALSE;
-  }
-  return TRUE;
+  merge_close_in_files(in_file_count, in_files);
+  if (ret)
+      ret = merge_close_outfile(&out_file, &err);
+  else
+      merge_close_outfile(&out_file, &close_err);
+
+  if (!ret)
+    cf_write_failure_alert_box(out_filename, err);
+  return ret;
 }
 
 gboolean
diff --git a/file.h b/file.h
index 967eeb8aaa43e7314d84dc0785002679e498b31e..f3ab319bca70700ebcc5c7e8d165edf4562415a2 100644 (file)
--- a/file.h
+++ b/file.h
@@ -54,8 +54,8 @@ gboolean cf_save(char *fname, capture_file * cf, packet_range_t *range, guint sa
 gchar *cf_get_display_name(capture_file *);
 
 gboolean
-cf_merge_files(const char *out_file, int out_fd, int in_file_count,
-               char *const *in_filenames, int filetype, gboolean do_append);
+cf_merge_files(const char *out_filename, int out_fd, int in_file_count,
+               char *const *in_filenames, int file_type, gboolean do_append);
 
 gboolean filter_packets(capture_file *cf, gchar *dfilter, gboolean force);
 void reftime_packets(capture_file *);
diff --git a/merge.c b/merge.c
index c1dfe0e4a4b292eb33c890cf90cd788837f986f0..2c7c7b566f0ea20e37eeb2430ee44e421f4c6255 100644 (file)
--- a/merge.c
+++ b/merge.c
@@ -380,52 +380,3 @@ merge_open_in_files(int in_file_count, char *const *in_file_names,
 
   return count;
 }
-
-
-/*
- * Convenience function: merge two or more files into one.
- */
-merge_status_e
-merge_n_files(int out_fd, int in_file_count, char *const *in_filenames,
-              int file_type, gboolean do_append, int *err, gchar **err_info,
-              int *err_fileno)
-{
-  merge_in_file_t  *in_files      = NULL;
-  merge_out_file_t  out_file;
-  gboolean          ret;
-  int               close_err;
-
-  /* open the input files */
-  in_file_count = merge_open_in_files(in_file_count, in_filenames, &in_files,
-                                      err, err_info, err_fileno);
-  if (in_file_count < 2) {
-    if (merge_verbose == VERBOSE_ALL)
-        fprintf(stderr, "mergecap: Not all input files valid\n");
-    free(in_files);
-    return MERGE_OPEN_INPUT_FAILED;
-  }
-
-  if (!merge_open_outfile(&out_file, out_fd, file_type,
-      merge_select_frame_type(in_file_count, in_files),
-      merge_max_snapshot_length(in_file_count, in_files), err)) {
-    merge_close_in_files(in_file_count, in_files);
-    free(in_files);
-    return MERGE_OPEN_OUTPUT_FAILED;
-  }
-
-  /* do the merge (or append) */
-  if (do_append)
-    ret = merge_append_files(in_file_count, in_files, &out_file, err);
-  else
-    ret = merge_files(in_file_count, in_files, &out_file, err);
-
-  merge_close_in_files(in_file_count, in_files);
-  if (ret)
-      ret = merge_close_outfile(&out_file, err);
-  else
-      merge_close_outfile(&out_file, &close_err);
-
-  free(in_files);
-
-  return ret ? MERGE_SUCCESS : MERGE_WRITE_FAILED;
-}
diff --git a/merge.h b/merge.h
index 81dff56169afd5a4a9e655848e1630d62219d238..3102e94f20bd3493b187fb1344ae78ca5df6f3f8 100644 (file)
--- a/merge.h
+++ b/merge.h
@@ -146,32 +146,6 @@ merge_files(int in_file_count, merge_in_file_t in_files[], merge_out_file_t *out
 extern gboolean
 merge_append_files(int in_file_count, merge_in_file_t in_files[], merge_out_file_t *out_file, int *err);
 
-/** Return status from merge_n_files */
-typedef enum {
-    MERGE_SUCCESS,
-    MERGE_OPEN_INPUT_FAILED,
-    MERGE_OPEN_OUTPUT_FAILED,
-    MERGE_WRITE_FAILED
-} merge_status_e;
-
-/*
- * Convenience function: merge any number of input files into one.
- *
- * @param out_filename the output filename
- * @param in_file_count number of input files
- * @param in_filenames array of input filenames
- * @param do_append TRUE to append, FALSE to merge chronologically
- * @param err wiretap error, if failed and VERBOSE_NONE
- * @param err_info wiretap error string, if failed and VERBOSE_NONE
- * @param err_fileno file on which open failed, if VERBOSE_NONE
- * @return merge_status_e
- */
-extern merge_status_e
-merge_n_files(int out_fd, int in_file_count, char *const *in_filenames,
-              int filetype, gboolean do_append, int *err, gchar **err_info,
-              int *err_fileno);
-
-
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */