Commit 558aaf1c authored by Nick Mathewson's avatar Nick Mathewson 🦀 Committed by George Kadianakis
Browse files

Command-line arguments: be better at detecting absent optional args.

Previously, "--list-fingerprint --quiet" was an error.  Now, the
handler for optional arguments to "--list-fingerprint" can tell that
"--quiet" is a flag, not an argument.

This only affects flags that take an _optional_ argument, so you can
still put your torrc file in a location starting with "-".

Closes #40223.
parent b50fcdc2
Loading
Loading
Loading
Loading

changes/argument_parse

0 → 100644
+5 −0
Original line number Diff line number Diff line
  o Minor features (command-line interface):
    - When parsing command-line flags that take an optional argument,
      treat the argument as absent if it would start with a '-' character.
      Arguments in that form are not intelligible for any of our
      optional-argument flags.  Closes ticket 40223.
+4 −1
Original line number Diff line number Diff line
@@ -2601,8 +2601,11 @@ config_parse_commandline(int argc, char **argv, int ignore_errors)
        parsed_cmdline_free(result);
        return NULL;
      }
    } else if (want_arg == ARGUMENT_OPTIONAL && is_last) {
    } else if (want_arg == ARGUMENT_OPTIONAL &&
               /* optional arguments may never start with '-'. */
               (is_last || argv[i+1][0] == '-')) {
      arg = tor_strdup("");
      want_arg = ARGUMENT_NONE; // prevent skipping the next flag.
    } else {
      arg = (want_arg != ARGUMENT_NONE) ? tor_strdup(argv[i+1]) :
                                              tor_strdup("");