forked from osmocom/wireshark
text2pcap: Use common failure messages, exit codes
Use the common exit codes and failure messages.
This commit is contained in:
parent
96c299c6b8
commit
0d68a1364f
146
text2pcap.c
146
text2pcap.c
|
@ -72,6 +72,7 @@
|
|||
#include <wsutil/file_util.h>
|
||||
#include <cli_main.h>
|
||||
#include <ui/cmdarg_err.h>
|
||||
#include <ui/exit_codes.h>
|
||||
#include <ui/text_import.h>
|
||||
#include <ui/version_info.h>
|
||||
#include <ui/failure_message.h>
|
||||
|
@ -338,6 +339,7 @@ print_usage (FILE *output)
|
|||
static int
|
||||
parse_options(int argc, char *argv[], text_import_info_t * const info, wtap_dump_params * const params)
|
||||
{
|
||||
int ret;
|
||||
int c;
|
||||
char *p;
|
||||
static const struct ws_option long_options[] = {
|
||||
|
@ -372,9 +374,9 @@ parse_options(int argc, char *argv[], text_import_info_t * const info, wtap_dump
|
|||
case 'N': interface_name = ws_optarg; break;
|
||||
case 'o':
|
||||
if (ws_optarg[0] != 'h' && ws_optarg[0] != 'o' && ws_optarg[0] != 'd') {
|
||||
fprintf(stderr, "Bad argument for '-o': %s\n", ws_optarg);
|
||||
cmdarg_err("Bad argument for '-o': %s", ws_optarg);
|
||||
print_usage(stderr);
|
||||
return EXIT_FAILURE;
|
||||
return INVALID_OPTION;
|
||||
}
|
||||
switch (ws_optarg[0]) {
|
||||
case 'o': offset_base = 8; break;
|
||||
|
@ -385,9 +387,9 @@ parse_options(int argc, char *argv[], text_import_info_t * const info, wtap_dump
|
|||
case 'e':
|
||||
hdr_ethernet = TRUE;
|
||||
if (sscanf(ws_optarg, "%x", &hdr_ethernet_proto) < 1) {
|
||||
fprintf(stderr, "Bad argument for '-e': %s\n", ws_optarg);
|
||||
cmdarg_err("Bad argument for '-e': %s", ws_optarg);
|
||||
print_usage(stderr);
|
||||
return EXIT_FAILURE;
|
||||
return INVALID_OPTION;
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -395,9 +397,9 @@ parse_options(int argc, char *argv[], text_import_info_t * const info, wtap_dump
|
|||
hdr_ip_proto = strtol(ws_optarg, &p, 10);
|
||||
if (p == ws_optarg || *p != '\0' || hdr_ip_proto < 0 ||
|
||||
hdr_ip_proto > 255) {
|
||||
fprintf(stderr, "Bad argument for '-i': %s\n", ws_optarg);
|
||||
cmdarg_err("Bad argument for '-i': %s", ws_optarg);
|
||||
print_usage(stderr);
|
||||
return EXIT_FAILURE;
|
||||
return INVALID_OPTION;
|
||||
}
|
||||
hdr_ethernet = TRUE;
|
||||
break;
|
||||
|
@ -409,35 +411,35 @@ parse_options(int argc, char *argv[], text_import_info_t * const info, wtap_dump
|
|||
hdr_udp = FALSE;
|
||||
hdr_sctp_src = (guint32)strtol(ws_optarg, &p, 10);
|
||||
if (p == ws_optarg || (*p != ',' && *p != '\0')) {
|
||||
fprintf(stderr, "Bad src port for '-%c'\n", c);
|
||||
cmdarg_err("Bad src port for '-%c'", c);
|
||||
print_usage(stderr);
|
||||
return EXIT_FAILURE;
|
||||
return INVALID_OPTION;
|
||||
}
|
||||
if (*p == '\0') {
|
||||
fprintf(stderr, "No dest port specified for '-%c'\n", c);
|
||||
cmdarg_err("No dest port specified for '-%c'", c);
|
||||
print_usage(stderr);
|
||||
return EXIT_FAILURE;
|
||||
return INVALID_OPTION;
|
||||
}
|
||||
p++;
|
||||
ws_optarg = p;
|
||||
hdr_sctp_dest = (guint32)strtol(ws_optarg, &p, 10);
|
||||
if (p == ws_optarg || (*p != ',' && *p != '\0')) {
|
||||
fprintf(stderr, "Bad dest port for '-s'\n");
|
||||
cmdarg_err("Bad dest port for '-s'");
|
||||
print_usage(stderr);
|
||||
return EXIT_FAILURE;
|
||||
return INVALID_OPTION;
|
||||
}
|
||||
if (*p == '\0') {
|
||||
fprintf(stderr, "No tag specified for '-%c'\n", c);
|
||||
cmdarg_err("No tag specified for '-%c'", c);
|
||||
print_usage(stderr);
|
||||
return EXIT_FAILURE;
|
||||
return INVALID_OPTION;
|
||||
}
|
||||
p++;
|
||||
ws_optarg = p;
|
||||
hdr_sctp_tag = (guint32)strtol(ws_optarg, &p, 10);
|
||||
if (p == ws_optarg || *p != '\0') {
|
||||
fprintf(stderr, "Bad tag for '-%c'\n", c);
|
||||
cmdarg_err("Bad tag for '-%c'", c);
|
||||
print_usage(stderr);
|
||||
return EXIT_FAILURE;
|
||||
return INVALID_OPTION;
|
||||
}
|
||||
|
||||
hdr_ip_proto = 132;
|
||||
|
@ -450,35 +452,35 @@ parse_options(int argc, char *argv[], text_import_info_t * const info, wtap_dump
|
|||
hdr_udp = FALSE;
|
||||
hdr_sctp_src = (guint32)strtol(ws_optarg, &p, 10);
|
||||
if (p == ws_optarg || (*p != ',' && *p != '\0')) {
|
||||
fprintf(stderr, "Bad src port for '-%c'\n", c);
|
||||
cmdarg_err("Bad src port for '-%c'", c);
|
||||
print_usage(stderr);
|
||||
return EXIT_FAILURE;
|
||||
return INVALID_OPTION;
|
||||
}
|
||||
if (*p == '\0') {
|
||||
fprintf(stderr, "No dest port specified for '-%c'\n", c);
|
||||
cmdarg_err("No dest port specified for '-%c'", c);
|
||||
print_usage(stderr);
|
||||
return EXIT_FAILURE;
|
||||
return INVALID_OPTION;
|
||||
}
|
||||
p++;
|
||||
ws_optarg = p;
|
||||
hdr_sctp_dest = (guint32)strtol(ws_optarg, &p, 10);
|
||||
if (p == ws_optarg || (*p != ',' && *p != '\0')) {
|
||||
fprintf(stderr, "Bad dest port for '-s'\n");
|
||||
cmdarg_err("Bad dest port for '-s'");
|
||||
print_usage(stderr);
|
||||
return EXIT_FAILURE;
|
||||
return INVALID_OPTION;
|
||||
}
|
||||
if (*p == '\0') {
|
||||
fprintf(stderr, "No ppi specified for '-%c'\n", c);
|
||||
cmdarg_err("No ppi specified for '-%c'", c);
|
||||
print_usage(stderr);
|
||||
return EXIT_FAILURE;
|
||||
return INVALID_OPTION;
|
||||
}
|
||||
p++;
|
||||
ws_optarg = p;
|
||||
hdr_data_chunk_ppid = (guint32)strtoul(ws_optarg, &p, 10);
|
||||
if (p == ws_optarg || *p != '\0') {
|
||||
fprintf(stderr, "Bad ppi for '-%c'\n", c);
|
||||
cmdarg_err("Bad ppi for '-%c'", c);
|
||||
print_usage(stderr);
|
||||
return EXIT_FAILURE;
|
||||
return INVALID_OPTION;
|
||||
}
|
||||
|
||||
hdr_ip_proto = 132;
|
||||
|
@ -498,22 +500,22 @@ parse_options(int argc, char *argv[], text_import_info_t * const info, wtap_dump
|
|||
hdr_data_chunk = FALSE;
|
||||
hdr_src_port = (guint32)strtol(ws_optarg, &p, 10);
|
||||
if (p == ws_optarg || (*p != ',' && *p != '\0')) {
|
||||
fprintf(stderr, "Bad src port for '-u'\n");
|
||||
cmdarg_err("Bad src port for '-u'");
|
||||
print_usage(stderr);
|
||||
return EXIT_FAILURE;
|
||||
return INVALID_OPTION;
|
||||
}
|
||||
if (*p == '\0') {
|
||||
fprintf(stderr, "No dest port specified for '-u'\n");
|
||||
cmdarg_err("No dest port specified for '-u'");
|
||||
print_usage(stderr);
|
||||
return EXIT_FAILURE;
|
||||
return INVALID_OPTION;
|
||||
}
|
||||
p++;
|
||||
ws_optarg = p;
|
||||
hdr_dest_port = (guint32)strtol(ws_optarg, &p, 10);
|
||||
if (p == ws_optarg || *p != '\0') {
|
||||
fprintf(stderr, "Bad dest port for '-u'\n");
|
||||
cmdarg_err("Bad dest port for '-u'");
|
||||
print_usage(stderr);
|
||||
return EXIT_FAILURE;
|
||||
return INVALID_OPTION;
|
||||
}
|
||||
hdr_ip_proto = 17;
|
||||
hdr_ethernet = TRUE;
|
||||
|
@ -526,22 +528,22 @@ parse_options(int argc, char *argv[], text_import_info_t * const info, wtap_dump
|
|||
hdr_data_chunk = FALSE;
|
||||
hdr_src_port = (guint32)strtol(ws_optarg, &p, 10);
|
||||
if (p == ws_optarg || (*p != ',' && *p != '\0')) {
|
||||
fprintf(stderr, "Bad src port for '-T'\n");
|
||||
cmdarg_err("Bad src port for '-T'");
|
||||
print_usage(stderr);
|
||||
return EXIT_FAILURE;
|
||||
return INVALID_OPTION;
|
||||
}
|
||||
if (*p == '\0') {
|
||||
fprintf(stderr, "No dest port specified for '-u'\n");
|
||||
cmdarg_err("No dest port specified for '-u'");
|
||||
print_usage(stderr);
|
||||
return EXIT_FAILURE;
|
||||
return INVALID_OPTION;
|
||||
}
|
||||
p++;
|
||||
ws_optarg = p;
|
||||
hdr_dest_port = (guint32)strtol(ws_optarg, &p, 10);
|
||||
if (p == ws_optarg || *p != '\0') {
|
||||
fprintf(stderr, "Bad dest port for '-T'\n");
|
||||
cmdarg_err("Bad dest port for '-T'");
|
||||
print_usage(stderr);
|
||||
return EXIT_FAILURE;
|
||||
return INVALID_OPTION;
|
||||
}
|
||||
hdr_ip_proto = 6;
|
||||
hdr_ethernet = TRUE;
|
||||
|
@ -561,9 +563,9 @@ parse_options(int argc, char *argv[], text_import_info_t * const info, wtap_dump
|
|||
p = strchr(ws_optarg, ',');
|
||||
|
||||
if (!p) {
|
||||
fprintf(stderr, "Bad source param addr for '-%c'\n", c);
|
||||
cmdarg_err("Bad source param addr for '-%c'", c);
|
||||
print_usage(stderr);
|
||||
return EXIT_FAILURE;
|
||||
return INVALID_OPTION;
|
||||
}
|
||||
|
||||
*p = '\0';
|
||||
|
@ -581,36 +583,36 @@ parse_options(int argc, char *argv[], text_import_info_t * const info, wtap_dump
|
|||
|
||||
if (hdr_ipv6 == TRUE) {
|
||||
if (!ws_inet_pton6(ws_optarg, &hdr_ipv6_src_addr)) {
|
||||
fprintf(stderr, "Bad src addr -%c '%s'\n", c, p);
|
||||
cmdarg_err("Bad src addr -%c '%s'", c, p);
|
||||
print_usage(stderr);
|
||||
return EXIT_FAILURE;
|
||||
return INVALID_OPTION;
|
||||
}
|
||||
} else {
|
||||
if (!ws_inet_pton4(ws_optarg, &hdr_ip_src_addr)) {
|
||||
fprintf(stderr, "Bad src addr -%c '%s'\n", c, p);
|
||||
cmdarg_err("Bad src addr -%c '%s'", c, p);
|
||||
print_usage(stderr);
|
||||
return EXIT_FAILURE;
|
||||
return INVALID_OPTION;
|
||||
}
|
||||
}
|
||||
|
||||
p++;
|
||||
if (*p == '\0') {
|
||||
fprintf(stderr, "No dest addr specified for '-%c'\n", c);
|
||||
cmdarg_err("No dest addr specified for '-%c'", c);
|
||||
print_usage(stderr);
|
||||
return EXIT_FAILURE;
|
||||
return INVALID_OPTION;
|
||||
}
|
||||
|
||||
if (hdr_ipv6 == TRUE) {
|
||||
if (!ws_inet_pton6(p, &hdr_ipv6_dest_addr)) {
|
||||
fprintf(stderr, "Bad dest addr for -%c '%s'\n", c, p);
|
||||
cmdarg_err("Bad dest addr for -%c '%s'", c, p);
|
||||
print_usage(stderr);
|
||||
return EXIT_FAILURE;
|
||||
return INVALID_OPTION;
|
||||
}
|
||||
} else {
|
||||
if (!ws_inet_pton4(p, &hdr_ip_dest_addr)) {
|
||||
fprintf(stderr, "Bad dest addr for -%c '%s'\n", c, p);
|
||||
cmdarg_err("Bad dest addr for -%c '%s'", c, p);
|
||||
print_usage(stderr);
|
||||
return EXIT_FAILURE;
|
||||
return INVALID_OPTION;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -619,26 +621,26 @@ parse_options(int argc, char *argv[], text_import_info_t * const info, wtap_dump
|
|||
case '?':
|
||||
default:
|
||||
print_usage(stderr);
|
||||
return EXIT_FAILURE;
|
||||
return INVALID_OPTION;
|
||||
}
|
||||
}
|
||||
|
||||
if (ws_optind >= argc || argc-ws_optind < 2) {
|
||||
fprintf(stderr, "Must specify input and output filename\n");
|
||||
cmdarg_err("Must specify input and output filename");
|
||||
print_usage(stderr);
|
||||
return EXIT_FAILURE;
|
||||
return INVALID_OPTION;
|
||||
}
|
||||
|
||||
if (max_offset > WTAP_MAX_PACKET_SIZE_STANDARD) {
|
||||
fprintf(stderr, "Maximum packet length cannot be more than %d bytes\n",
|
||||
cmdarg_err("Maximum packet length cannot be more than %d bytes",
|
||||
WTAP_MAX_PACKET_SIZE_STANDARD);
|
||||
return EXIT_FAILURE;
|
||||
return INVALID_OPTION;
|
||||
}
|
||||
|
||||
/* Some validation */
|
||||
if (pcap_link_type != 1 && hdr_ethernet) {
|
||||
fprintf(stderr, "Dummy headers (-e, -i, -u, -s, -S -T) cannot be specified with link type override (-l)\n");
|
||||
return EXIT_FAILURE;
|
||||
cmdarg_err("Dummy headers (-e, -i, -u, -s, -S -T) cannot be specified with link type override (-l)");
|
||||
return INVALID_OPTION;
|
||||
}
|
||||
|
||||
if (hdr_ip_proto != -1 && !(hdr_ip || hdr_ipv6)) {
|
||||
|
@ -648,8 +650,8 @@ parse_options(int argc, char *argv[], text_import_info_t * const info, wtap_dump
|
|||
|
||||
if (hdr_ip_proto == -1 && (hdr_ip || hdr_ipv6)) {
|
||||
/* if -4 or -6 option is specified without an IP protocol then fail */
|
||||
fprintf(stderr, "IP protocol requires a next layer protocol number\n");
|
||||
return EXIT_FAILURE;
|
||||
cmdarg_err("IP protocol requires a next layer protocol number");
|
||||
return INVALID_OPTION;
|
||||
}
|
||||
|
||||
if ((hdr_tcp || hdr_udp || hdr_sctp) && !(hdr_ip || hdr_ipv6)) {
|
||||
|
@ -672,9 +674,8 @@ parse_options(int argc, char *argv[], text_import_info_t * const info, wtap_dump
|
|||
input_filename = argv[ws_optind];
|
||||
input_file = ws_fopen(input_filename, "rb");
|
||||
if (!input_file) {
|
||||
fprintf(stderr, "Cannot open file [%s] for reading: %s\n",
|
||||
input_filename, g_strerror(errno));
|
||||
return EXIT_FAILURE;
|
||||
open_failure_message(input_filename, errno, FALSE);
|
||||
return OPEN_ERROR;
|
||||
}
|
||||
} else {
|
||||
input_filename = "Standard input";
|
||||
|
@ -693,8 +694,10 @@ parse_options(int argc, char *argv[], text_import_info_t * const info, wtap_dump
|
|||
params->tsprec = WTAP_TSPREC_USEC;
|
||||
file_type_subtype = wtap_pcap_file_type_subtype();
|
||||
}
|
||||
if (write_file_header(params, file_type_subtype, interface_name) != EXIT_SUCCESS) {
|
||||
return EXIT_FAILURE;
|
||||
if ((ret = write_file_header(params, file_type_subtype, interface_name)) != EXIT_SUCCESS) {
|
||||
g_free(params->idb_inf);
|
||||
wtap_dump_params_cleanup(params);
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (strcmp(argv[ws_optind+1], "-") != 0) {
|
||||
|
@ -712,7 +715,7 @@ parse_options(int argc, char *argv[], text_import_info_t * const info, wtap_dump
|
|||
file_type_subtype);
|
||||
g_free(params->idb_inf);
|
||||
wtap_dump_params_cleanup(params);
|
||||
return EXIT_FAILURE;
|
||||
return OPEN_ERROR;
|
||||
}
|
||||
|
||||
info->mode = TEXT_IMPORT_HEXDUMP;
|
||||
|
@ -848,7 +851,7 @@ main(int argc, char *argv[])
|
|||
ws_log_init("text2pcap", vcmdarg_err);
|
||||
|
||||
/* Early logging command-line initialization. */
|
||||
ws_log_parse_args(&argc, argv, vcmdarg_err, 1);
|
||||
ws_log_parse_args(&argc, argv, vcmdarg_err, INVALID_OPTION);
|
||||
|
||||
#ifdef _WIN32
|
||||
create_app_running_mutex();
|
||||
|
@ -859,17 +862,14 @@ main(int argc, char *argv[])
|
|||
wtap_init(TRUE);
|
||||
|
||||
memset(&info, 0, sizeof(info));
|
||||
if (parse_options(argc, argv, &info, ¶ms) != EXIT_SUCCESS) {
|
||||
ret = EXIT_FAILURE;
|
||||
if ((ret = parse_options(argc, argv, &info, ¶ms)) != EXIT_SUCCESS) {
|
||||
goto clean_exit;
|
||||
}
|
||||
|
||||
assert(input_file != NULL);
|
||||
assert(input_file != NULL);
|
||||
assert(wdh != NULL);
|
||||
|
||||
if (text_import(&info) != EXIT_SUCCESS) {
|
||||
ret = EXIT_FAILURE;
|
||||
}
|
||||
ret = text_import(&info);
|
||||
|
||||
if (debug)
|
||||
fprintf(stderr, "\n-------------------------\n");
|
||||
|
@ -889,7 +889,7 @@ clean_exit:
|
|||
char *err_info;
|
||||
if (!wtap_dump_close(wdh, &err, &err_info)) {
|
||||
cfile_close_failure_message(output_filename, err, err_info);
|
||||
ret = EXIT_FAILURE;
|
||||
ret = 2;
|
||||
}
|
||||
g_free(params.idb_inf);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue