Loading changes/bug4647 +2 −1 Original line number Diff line number Diff line Loading @@ -3,7 +3,8 @@ - Use a single command-line parser for parsing torrc options on the command line and for finding special command-line options to avoid inconsistent behavior for torrc option arguments that have the same names as command-line options. Fixes bugs 4647; bugfix on 0.0.9pre5. names as command-line options. Fixes bugs 4647 and 9578; bugfix on 0.0.9pre5. Loading src/or/config.c +13 −10 Original line number Diff line number Diff line Loading @@ -1792,11 +1792,13 @@ options_act(const or_options_t *old_options) } /** Helper: Read a list of configuration options from the command line. If * successful, put them in *<b>result</b>, put the commandline-only options in * *<b>cmdline_result</b>, and return 0; otherwise, return -1 and leave * *<b>result</b> and <b>cmdline_result</b> alone. */ static int config_get_commandlines(int argc, char **argv, config_line_t **result, * successful, or if ignore_errors is set, put them in *<b>result</b>, put the * commandline-only options in *<b>cmdline_result</b>, and return 0; * otherwise, return -1 and leave *<b>result</b> and <b>cmdline_result</b> * alone. */ int config_parse_commandline(int argc, char **argv, int ignore_errors, config_line_t **result, config_line_t **cmdline_result) { config_line_t *param = NULL; Loading @@ -1823,7 +1825,8 @@ config_get_commandlines(int argc, char **argv, config_line_t **result, !strcmp(argv[i],"--verify-config") || !strcmp(argv[i],"--ignore-missing-torrc") || !strcmp(argv[i],"--quiet") || !strcmp(argv[i],"--hush")) { !strcmp(argv[i],"--hush") || !strcmp(argv[1],"--version")) { is_cmdline = 1; want_arg = 0; } else if (!strcmp(argv[i],"--nt-service") || Loading Loading @@ -1851,7 +1854,7 @@ config_get_commandlines(int argc, char **argv, config_line_t **result, } if (want_arg && i == argc-1) { if (!strcmp(argv[i],"--hash-password")) { if (!strcmp(argv[i],"--hash-password") || ignore_errors) { arg = strdup(""); } else { log_warn(LD_CONFIG,"Command-line option '%s' with no value. Failing.", Loading Loading @@ -3852,7 +3855,7 @@ options_init_from_torrc(int argc, char **argv) if (!global_cmdline_options) { /* Or we could redo the list every time we pass this place. * It does not really matter */ if (config_get_commandlines(argc, argv, &global_cmdline_options, if (config_parse_commandline(argc, argv, 0, &global_cmdline_options, &cmdline_only_options) < 0) { goto err; } Loading src/or/config.h +4 −0 Original line number Diff line number Diff line Loading @@ -96,6 +96,10 @@ int init_cookie_authentication(const char *fname, const char *header, or_options_t *options_new(void); int config_parse_commandline(int argc, char **argv, int ignore_errors, config_line_t **result, config_line_t **cmdline_result); void config_register_addressmaps(const or_options_t *options); /* XXXX024 move to connection_edge.h */ int addressmap_register_auto(const char *from, const char *to, Loading src/or/main.c +18 −9 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ #include "circuituse.h" #include "command.h" #include "config.h" #include "confparse.h" #include "connection.h" #include "connection_edge.h" #include "connection_or.h" Loading Loading @@ -2320,7 +2321,7 @@ int tor_init(int argc, char *argv[]) { char buf[256]; int i, quiet = 0; int quiet = 0; time_of_process_start = time(NULL); init_connection_lists(); /* Have the log set up with our application name. */ Loading @@ -2333,17 +2334,25 @@ tor_init(int argc, char *argv[]) addressmap_init(); /* Init the client dns cache. Do it always, since it's * cheap. */ { /* 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")) config_line_t *opts = NULL, *cmdline_opts = NULL; const config_line_t *cl; (void) config_parse_commandline(argc, argv, 1, &opts, &cmdline_opts); for (cl = cmdline_opts; cl; cl = cl->next) { if (!strcmp(cl->key, "--hush")) quiet = 1; if (!strcmp(argv[i], "--quiet")) if (!strcmp(cl->key, "--quiet")) quiet = 2; /* --version implies --quiet */ if (!strcmp(argv[i], "--version")) if (!strcmp(cl->key, "--version")) quiet = 2; } config_free_lines(opts); config_free_lines(cmdline_opts); } /* give it somewhere to log to initially */ switch (quiet) { case 2: Loading Loading
changes/bug4647 +2 −1 Original line number Diff line number Diff line Loading @@ -3,7 +3,8 @@ - Use a single command-line parser for parsing torrc options on the command line and for finding special command-line options to avoid inconsistent behavior for torrc option arguments that have the same names as command-line options. Fixes bugs 4647; bugfix on 0.0.9pre5. names as command-line options. Fixes bugs 4647 and 9578; bugfix on 0.0.9pre5. Loading
src/or/config.c +13 −10 Original line number Diff line number Diff line Loading @@ -1792,11 +1792,13 @@ options_act(const or_options_t *old_options) } /** Helper: Read a list of configuration options from the command line. If * successful, put them in *<b>result</b>, put the commandline-only options in * *<b>cmdline_result</b>, and return 0; otherwise, return -1 and leave * *<b>result</b> and <b>cmdline_result</b> alone. */ static int config_get_commandlines(int argc, char **argv, config_line_t **result, * successful, or if ignore_errors is set, put them in *<b>result</b>, put the * commandline-only options in *<b>cmdline_result</b>, and return 0; * otherwise, return -1 and leave *<b>result</b> and <b>cmdline_result</b> * alone. */ int config_parse_commandline(int argc, char **argv, int ignore_errors, config_line_t **result, config_line_t **cmdline_result) { config_line_t *param = NULL; Loading @@ -1823,7 +1825,8 @@ config_get_commandlines(int argc, char **argv, config_line_t **result, !strcmp(argv[i],"--verify-config") || !strcmp(argv[i],"--ignore-missing-torrc") || !strcmp(argv[i],"--quiet") || !strcmp(argv[i],"--hush")) { !strcmp(argv[i],"--hush") || !strcmp(argv[1],"--version")) { is_cmdline = 1; want_arg = 0; } else if (!strcmp(argv[i],"--nt-service") || Loading Loading @@ -1851,7 +1854,7 @@ config_get_commandlines(int argc, char **argv, config_line_t **result, } if (want_arg && i == argc-1) { if (!strcmp(argv[i],"--hash-password")) { if (!strcmp(argv[i],"--hash-password") || ignore_errors) { arg = strdup(""); } else { log_warn(LD_CONFIG,"Command-line option '%s' with no value. Failing.", Loading Loading @@ -3852,7 +3855,7 @@ options_init_from_torrc(int argc, char **argv) if (!global_cmdline_options) { /* Or we could redo the list every time we pass this place. * It does not really matter */ if (config_get_commandlines(argc, argv, &global_cmdline_options, if (config_parse_commandline(argc, argv, 0, &global_cmdline_options, &cmdline_only_options) < 0) { goto err; } Loading
src/or/config.h +4 −0 Original line number Diff line number Diff line Loading @@ -96,6 +96,10 @@ int init_cookie_authentication(const char *fname, const char *header, or_options_t *options_new(void); int config_parse_commandline(int argc, char **argv, int ignore_errors, config_line_t **result, config_line_t **cmdline_result); void config_register_addressmaps(const or_options_t *options); /* XXXX024 move to connection_edge.h */ int addressmap_register_auto(const char *from, const char *to, Loading
src/or/main.c +18 −9 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ #include "circuituse.h" #include "command.h" #include "config.h" #include "confparse.h" #include "connection.h" #include "connection_edge.h" #include "connection_or.h" Loading Loading @@ -2320,7 +2321,7 @@ int tor_init(int argc, char *argv[]) { char buf[256]; int i, quiet = 0; int quiet = 0; time_of_process_start = time(NULL); init_connection_lists(); /* Have the log set up with our application name. */ Loading @@ -2333,17 +2334,25 @@ tor_init(int argc, char *argv[]) addressmap_init(); /* Init the client dns cache. Do it always, since it's * cheap. */ { /* 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")) config_line_t *opts = NULL, *cmdline_opts = NULL; const config_line_t *cl; (void) config_parse_commandline(argc, argv, 1, &opts, &cmdline_opts); for (cl = cmdline_opts; cl; cl = cl->next) { if (!strcmp(cl->key, "--hush")) quiet = 1; if (!strcmp(argv[i], "--quiet")) if (!strcmp(cl->key, "--quiet")) quiet = 2; /* --version implies --quiet */ if (!strcmp(argv[i], "--version")) if (!strcmp(cl->key, "--version")) quiet = 2; } config_free_lines(opts); config_free_lines(cmdline_opts); } /* give it somewhere to log to initially */ switch (quiet) { case 2: Loading