/*
Copyright 2008 Nathan Phillip Brink, Ethan Zonca
This file is a part of DistRen.
DistRen is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
DistRen is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with DistRen. If not, see <http://www.gnu.org/licenses/>.
*/
#include "options.h"
#include <confuse.h>
#include <string.h>
#include <stdio.h>
int options_init(int argc, char *argv[], cfg_t **mycfg, cfg_opt_t *myopts, char *myname, struct options_common **allopts)
{
char *configfile;
configfile = strdup(SYSCONFDIR "/distren.conf");
if(!configfile)
{
perror("strdup");
return 1;
}
/* Conf File Parser */
cfg_opt_t common_opts[] =
{
CFG_END()
};
cfg_opt_t server_opts[] =
{
CFG_STR("username", NULL, CFGF_NONE),
CFG_STR("hostname", NULL, CFGF_NONE),
CFG_STR("method", "ssh", CFGF_NONE),
CFG_END()
};
cfg_opt_t opts[] =
{
CFG_SEC("common",
common_opts,
CFGF_NONE),
CFG_SEC("server",
server_opts,
CFGF_MULTI | CFGF_TITLE),
CFG_SEC(myname,
myopts,
0),
CFG_END()
};
cfg_t *cfg;
cfg = cfg_init(opts, 0);
switch(cfg_parse(cfg, configfile))
{
default:
fprintf(stderr, "cfg_parse returned an unknown error code\n");
case CFG_FILE_ERROR:
cfg_error(cfg, "Couldn't open file ``%s''\n", configfile);
/* no break; on purpose */
case CFG_PARSE_ERROR:
return 1;
case CFG_SUCCESS:
break;
}
/* End Conf File Parser */
printf("Client Username: %s\n", cfg_getstr(cfg_getsec(cfg, "client"), "username"));
cfg_free(cfg);
return 0;
}