aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--editcap.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/editcap.c b/editcap.c
index 48d6f82004..4f0fa14967 100644
--- 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) {