options_init_from_torrc(): move code that loads torrc into its own function

move code that loads torrc from disk and sets torrc_fname into its own function


svn:r13944
This commit is contained in:
Peter Palfrader
2008-03-10 12:41:36 +00:00
parent ded55fa296
commit 00d64fd213
+44 -28
View File
@@ -3574,6 +3574,46 @@ find_torrc_filename(int argc, char **argv,
return fname;
}
/** Load torrc from disk, setting torrc_fname if successful */
char *
load_torrc_from_disk(int argc, char **argv)
{
char *fname=NULL;
char *cf = NULL;
int using_default_torrc = 1;
int ignore_missing_torrc = 0;
fname = find_torrc_filename(argc, argv,
&using_default_torrc, &ignore_missing_torrc);
tor_assert(fname);
log(LOG_DEBUG, LD_CONFIG, "Opening config file \"%s\"", fname);
tor_free(torrc_fname);
torrc_fname = fname;
/* Open config file */
if (file_status(fname) != FN_FILE ||
!(cf = read_file_to_str(fname,0,NULL))) {
if (using_default_torrc == 1 || ignore_missing_torrc ) {
log(LOG_NOTICE, LD_CONFIG, "Configuration file \"%s\" not present, "
"using reasonable defaults.", fname);
tor_free(fname); /* sets fname to NULL */
torrc_fname = NULL;
cf = tor_strdup("");
} else {
log(LOG_WARN, LD_CONFIG,
"Unable to open configuration file \"%s\".", fname);
goto err;
}
}
return cf;
err:
tor_free(fname);
torrc_fname = NULL;
return NULL;
}
/** Read a configuration file into <b>options</b>, finding the configuration
* file location based on the command line. After loading the options,
* validate them for consistency, then take actions based on them.
@@ -3583,10 +3623,8 @@ options_init_from_torrc(int argc, char **argv)
{
or_options_t *oldoptions, *newoptions;
config_line_t *cl;
char *cf=NULL, *fname=NULL, *errmsg=NULL;
char *cf=NULL, *errmsg=NULL;
int i, retval;
int using_default_torrc = 1;
int ignore_missing_torrc = 0;
static char **backup_argv;
static int backup_argc;
@@ -3634,29 +3672,9 @@ options_init_from_torrc(int argc, char **argv)
}
}
fname = find_torrc_filename(argc, argv,
&using_default_torrc, &ignore_missing_torrc);
tor_assert(fname);
log(LOG_DEBUG, LD_CONFIG, "Opening config file \"%s\"", fname);
tor_free(torrc_fname);
torrc_fname = fname;
/* Open config file */
if (file_status(fname) != FN_FILE ||
!(cf = read_file_to_str(fname,0,NULL))) {
if (using_default_torrc == 1 || ignore_missing_torrc ) {
log(LOG_NOTICE, LD_CONFIG, "Configuration file \"%s\" not present, "
"using reasonable defaults.", fname);
tor_free(fname); /* sets fname to NULL */
torrc_fname = NULL;
cf = tor_strdup("");
} else {
log(LOG_WARN, LD_CONFIG,
"Unable to open configuration file \"%s\".", fname);
goto err;
}
}
cf = load_torrc_from_disk(argc, argv);
if (!cf)
goto err;
/* get config lines, assign them */
retval = config_get_lines(cf, &cl);
@@ -3688,8 +3706,6 @@ options_init_from_torrc(int argc, char **argv)
return 0;
err:
tor_free(fname);
torrc_fname = NULL;
config_free(&options_format, newoptions);
if (errmsg) {
log(LOG_WARN,LD_CONFIG,"Failed to parse/validate config: %s", errmsg);