Tor obeys --quiet, --hush, etc without regard for argument order

When you run

$ src/or/tor contactinfo "--quiet"

it is not supposed to set your contactinfo to "--quiet" while at the same time telling Tor to change its default log setting.

The problem comes from

  /* We search for the "quiet" option first, since it decides whether we
   * will log anything at all to the command line. */
  for (i=1;i<argc;++i) {
    if (!strcmp(argv[i], "--hush"))
      quiet = 1;
    if (!strcmp(argv[i], "--quiet"))
      quiet = 2;
    /* --version implies --quiet */
    if (!strcmp(argv[i], "--version"))
      quiet = 2;
  }

We just paw through the arg list without paying attention to syntax of other arguments.

Surely there's a better way. :)

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information