If no valid packages was found in the input file we write an empty
authorstig <stig@f5534014-38df-0310-8fa8-9805f1628bb7>
Tue, 2 Jun 2009 23:14:19 +0000 (23:14 +0000)
committerstig <stig@f5534014-38df-0310-8fa8-9805f1628bb7>
Tue, 2 Jun 2009 23:14:19 +0000 (23:14 +0000)
header in the output file.  This way we at least create a file.

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

editcap.c

index 48d6f820046ff902b21a5e85ead4688243b95758..4f0fa14967ef7504ebcfa161940a8af485384d79 100644 (file)
--- a/editcap.c
+++ b/editcap.c
@@ -1230,7 +1230,6 @@ main(int argc, char *argv[])
       count++;
     }
 
-    g_free(filename);
     g_free(fprefix);
     g_free(fsuffix);
 
@@ -1250,13 +1249,28 @@ main(int argc, char *argv[])
       }
     }
 
-    if (pdh && !wtap_dump_close(pdh, &err)) {
+    if (!pdh) {
+      /* No valid packages found, open the outfile so we can write an empty header */
+      g_free (filename);
+      filename = g_strdup(argv[optind+1]);
+
+      pdh = wtap_dump_open(filename, out_file_type,
+                          out_frame_type, wtap_snapshot_length(wth), FALSE /* compressed */, &err);
+      if (pdh == NULL) {
+       fprintf(stderr, "editcap: Can't open or create %s: %s\n", filename, 
+               wtap_strerror(err));
+       exit(2);
+      }
+    }
 
-      fprintf(stderr, "editcap: Error closing %s: %s\n", filename,
+    if (!wtap_dump_close(pdh, &err)) {
+
+      fprintf(stderr, "editcap: Error writing to %s: %s\n", filename,
           wtap_strerror(err));
       exit(2);
 
     }
+    g_free(filename);
   }
 
   if (dup_detect) {