#define INVALID_OPTION 1
#define INVALID_FILE 2
+#define CANT_EXTRACT_PREFIX 2
+#define WRITE_ERROR 2
+#define DUMP_ERROR 2
/*
* Some globals so we can pass things to various routines
GString *comp_info_str;
GString *runtime_info_str;
char *init_progfile_dir_error;
- wtap *wth;
+ wtap *wth = NULL;
int i, j, read_err, write_err;
gchar *read_err_info, *write_err_info;
int opt;
/* Extra actions for the first packet */
if (read_count == 1) {
if (split_packet_count != 0 || secs_per_block != 0) {
- if (!fileset_extract_prefix_suffix(argv[optind+1], &fprefix, &fsuffix))
- goto error_on_exit;
+ if (!fileset_extract_prefix_suffix(argv[optind+1], &fprefix, &fsuffix)) {
+ ret = CANT_EXTRACT_PREFIX;
+ goto clean_exit;
+ }
filename = fileset_get_filename_by_pattern(block_cnt++, phdr, fprefix, fsuffix);
} else {
if (pdh == NULL) {
fprintf(stderr, "editcap: Can't open or create %s: %s\n",
filename, wtap_strerror(write_err));
- goto error_on_exit;
+ ret = INVALID_FILE;
+ goto clean_exit;
}
} /* first packet only handling */
if (!wtap_dump_close(pdh, &write_err)) {
fprintf(stderr, "editcap: Error writing to %s: %s\n",
filename, wtap_strerror(write_err));
- goto error_on_exit;
+ ret = WRITE_ERROR;
+ goto clean_exit;
}
block_start.secs = block_start.secs + secs_per_block; /* reset for next interval */
g_free(filename);
if (pdh == NULL) {
fprintf(stderr, "editcap: Can't open or create %s: %s\n",
filename, wtap_strerror(write_err));
- goto error_on_exit;
+ ret = INVALID_FILE;
+ goto clean_exit;
}
}
}
if (!wtap_dump_close(pdh, &write_err)) {
fprintf(stderr, "editcap: Error writing to %s: %s\n",
filename, wtap_strerror(write_err));
- goto error_on_exit;
+ ret = WRITE_ERROR;
+ goto clean_exit;
}
g_free(filename);
if (pdh == NULL) {
fprintf(stderr, "editcap: Can't open or create %s: %s\n",
filename, wtap_strerror(write_err));
- goto error_on_exit;
+ ret = INVALID_FILE;
+ goto clean_exit;
}
}
} /* split packet handling */
filename, wtap_strerror(write_err));
break;
}
- goto error_on_exit;
+ ret = DUMP_ERROR;
+ goto clean_exit;
}
written_count++;
}
if (pdh == NULL) {
fprintf(stderr, "editcap: Can't open or create %s: %s\n",
filename, wtap_strerror(write_err));
- goto error_on_exit;
+ ret = INVALID_FILE;
+ goto clean_exit;
}
}
if (!wtap_dump_close(pdh, &write_err)) {
fprintf(stderr, "editcap: Error writing to %s: %s\n", filename,
wtap_strerror(write_err));
- goto error_on_exit;
+ ret = WRITE_ERROR;
+ goto clean_exit;
}
g_free(filename);
(long int)relative_time_window.nsecs);
}
+clean_exit:
wtap_block_array_free(shb_hdrs);
wtap_block_array_free(nrb_hdrs);
g_free(idb_inf);
wtap_close(wth);
-clean_exit:
wtap_cleanup();
free_progdirs();
#ifdef HAVE_PLUGINS
plugins_cleanup();
#endif
return ret;
-
-error_on_exit:
- wtap_block_array_free(shb_hdrs);
- wtap_block_array_free(nrb_hdrs);
- g_free(idb_inf);
- exit(2);
}
/* Skip meta-information read from file to return offset of real