diff options
-rw-r--r-- | editcap.c | 20 |
1 files changed, 17 insertions, 3 deletions
@@ -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) { |