diff --git a/src/common/options.c b/src/common/options.c --- a/src/common/options.c +++ b/src/common/options.c @@ -29,7 +29,7 @@ #include #include -struct options_common_data +struct options_common_data { cfg_t *cfg; }; @@ -41,7 +41,7 @@ int options_init(int argc, char *argv[], size_t i; - /* For those of you who don't know, the following is an example of concatenation of constant strings by the C compiler. Now, that doesn't mean you can do run-time string concatenation ;-) + /* For those of you who don't know, the following is an example of concatenation of constant strings by the C compiler. Now, that doesn't mean you can do run-time string concatenation ;-) strdup is because someday configfile will be customizable via argv[] */ @@ -55,7 +55,7 @@ int options_init(int argc, char *argv[], strncpy(configfile, SYSCONFDIR "/distren", strlen(SYSCONFDIR "/distren") + 1); strcat(configfile, myname); strcat(configfile, ".conf"); - + *allopts = malloc(sizeof(struct options_common)); if(!*allopts) { @@ -64,7 +64,7 @@ int options_init(int argc, char *argv[], return 1; } memset(*allopts, '\0', sizeof(struct options_common)); - + (*allopts)->data = malloc(sizeof(struct options_common_data)); if(!(*allopts)->data) { @@ -87,17 +87,18 @@ int options_init(int argc, char *argv[], memset((*allopts)->remoteio, '\0', sizeof(struct remoteio_opts)); (*allopts)->remoteio->ssh_command = strdup("ssh"); /** @TODO: check for NULL return above */ - + cfg_opt_t common_opts[] = { CFG_SIMPLE_STR("ssh-command", &(*allopts)->remoteio->ssh_command), + CF CFG_END() }; - + /* In these arrays, I should replace NULL with a pointer to a string in the struct which should hold the result of confuse processing an option. This is partially because confuse will not free the values it parses. */ - cfg_opt_t server_opts[] = + cfg_opt_t server_opts[] = { CFG_STR("username", NULL, CFGF_NONE), CFG_STR("hostname", NULL, CFGF_NONE), @@ -134,19 +135,19 @@ int options_init(int argc, char *argv[], /* no break; on purpose */ case CFG_PARSE_ERROR: - + free((*allopts)->data); free(*allopts); free(configfile); - + return 1; - + case CFG_SUCCESS: break; } - + free(configfile); - + *mycfg = cfg_getsec((*allopts)->data->cfg, myname); return 0; @@ -161,6 +162,6 @@ int options_free(struct options_common * free(opts->remoteio); free(opts->data); free(opts); - + return 0; }