ipaccess-proxy: more robust option parsing and checking
With this patch, ipaccess-proxy makes more robust option checking: $ ./ipaccess-proxy -l 1.1.1.1 -b 2.2.2.2 -e ERROR: missing mandatory argument for `-e' option And we return to shell to enforce the user to try again with the appropriate invocation. Before this patch, the default getopt_long() error handling was enabled which displayed this message: ./ipaccess-proxy: option requires an argument -- 'e' and ipaccess-proxy continued working. This is generic enough to cover other option that require mandatory arguments like `--bsc' and `--listen'.
This commit is contained in:
parent
23b1b808f1
commit
25ffe54118
|
@ -1133,6 +1133,9 @@ static void handle_options(int argc, char** argv)
|
|||
{
|
||||
int options_mask = 0;
|
||||
|
||||
/* disable explicit missing arguments error output from getopt_long */
|
||||
opterr = 0;
|
||||
|
||||
while (1) {
|
||||
int option_index = 0, c;
|
||||
static struct option long_options[] = {
|
||||
|
@ -1176,6 +1179,18 @@ static void handle_options(int argc, char** argv)
|
|||
case 'e':
|
||||
log_set_log_level(stderr_target, atoi(optarg));
|
||||
break;
|
||||
case '?':
|
||||
if (optopt) {
|
||||
printf("ERROR: missing mandatory argument "
|
||||
"for `%s' option\n", argv[optind-1]);
|
||||
} else {
|
||||
printf("ERROR: unknown option `%s'\n",
|
||||
argv[optind-1]);
|
||||
}
|
||||
print_usage();
|
||||
print_help();
|
||||
exit(EXIT_FAILURE);
|
||||
break;
|
||||
default:
|
||||
/* ignore */
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue