diff --git a/src/swanctl/command.c b/src/swanctl/command.c index 35a226a74..dd662eef0 100644 --- a/src/swanctl/command.c +++ b/src/swanctl/command.c @@ -185,6 +185,8 @@ static bool process_common_opts(bool init) int prevoptind = optind; bool success = TRUE; + /* don't report any errors during this pre-processing */ + opterr = 0; while (TRUE) { switch (getopt_long(argc, argv, command_optstring, command_opts, NULL)) @@ -243,6 +245,16 @@ void command_register(command_t command) return; } } + for (i = 0; i < countof(shared_options); i++) + { + if (shared_options[i].op == command.op) + { + fprintf(stderr, "unable to register command --%s, short option " + "-%c conflicts with --%s\n", command.cmd, command.op, + shared_options[i].name); + return; + } + } cmds[registered] = command; /* append default options, but not to --help */