/* 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 . */ #include "options.h" #include #include #include 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; }