summaryrefslogtreecommitdiff
path: root/src/or/config.c
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2013-08-25 12:59:38 -0400
committerNick Mathewson <nickm@torproject.org>2013-09-13 12:36:39 -0400
commita1096fe1802ee3585dd6296b50085017e1928edf (patch)
tree0944be1e8668c421e861ce5da1a5dbaf2a308973 /src/or/config.c
parent34ec954f8ef8201fd16942acca55ac19db8ff7b7 (diff)
downloadtor-a1096fe1802ee3585dd6296b50085017e1928edf.tar.gz
tor-a1096fe1802ee3585dd6296b50085017e1928edf.zip
Use commandline parser for other options
These were previously allowed only in the initial position: --help, -h , --version, --digests, --list-torrc-options
Diffstat (limited to 'src/or/config.c')
-rw-r--r--src/or/config.c36
1 files changed, 21 insertions, 15 deletions
diff --git a/src/or/config.c b/src/or/config.c
index c1bbf7896f..e6adcc4944 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -1826,7 +1826,11 @@ config_parse_commandline(int argc, char **argv, int ignore_errors,
!strcmp(argv[i],"--ignore-missing-torrc") ||
!strcmp(argv[i],"--quiet") ||
!strcmp(argv[i],"--hush") ||
- !strcmp(argv[1],"--version")) {
+ !strcmp(argv[i],"--version") ||
+ !strcmp(argv[i],"-h") ||
+ !strcmp(argv[i],"--help") ||
+ !strcmp(argv[i],"--list-torrc-options") ||
+ !strcmp(argv[i],"--digests")) {
is_cmdline = 1;
want_arg = 0;
} else if (!strcmp(argv[i],"--nt-service") ||
@@ -3830,37 +3834,39 @@ options_init_from_torrc(int argc, char **argv)
argv = backup_argv;
argc = backup_argc;
}
- if (argc > 1 && (!strcmp(argv[1], "-h") || !strcmp(argv[1],"--help"))) {
+
+ /* Go through command-line variables */
+ if (!global_cmdline_options) {
+ /* Or we could redo the list every time we pass this place.
+ * It does not really matter */
+ if (config_parse_commandline(argc, argv, 0, &global_cmdline_options,
+ &cmdline_only_options) < 0) {
+ goto err;
+ }
+ }
+
+ if (config_line_find(cmdline_only_options, "-h") ||
+ config_line_find(cmdline_only_options, "--help")) {
print_usage();
exit(0);
}
- if (argc > 1 && !strcmp(argv[1], "--list-torrc-options")) {
+ if (config_line_find(cmdline_only_options, "--list-torrc-options")) {
/* For documenting validating whether we've documented everything. */
list_torrc_options();
exit(0);
}
- if (argc > 1 && (!strcmp(argv[1],"--version"))) {
+ if (config_line_find(cmdline_only_options, "--version")) {
printf("Tor version %s.\n",get_version());
exit(0);
}
- if (argc > 1 && (!strcmp(argv[1],"--digests"))) {
+ if (config_line_find(cmdline_only_options, "--digests")) {
printf("Tor version %s.\n",get_version());
printf("%s", libor_get_digests());
printf("%s", tor_get_digests());
exit(0);
}
- /* Go through command-line variables */
- if (!global_cmdline_options) {
- /* Or we could redo the list every time we pass this place.
- * It does not really matter */
- if (config_parse_commandline(argc, argv, 0, &global_cmdline_options,
- &cmdline_only_options) < 0) {
- goto err;
- }
- }
-
command = CMD_RUN_TOR;
for (p_index = cmdline_only_options; p_index; p_index = p_index->next) {
if (!strcmp(p_index->key,"--list-fingerprint")) {