re-awesome config parsing sickness

This commit is contained in:
blastmaster 2013-11-22 00:02:23 +01:00
parent df5bafc035
commit 944205758c
2 changed files with 62 additions and 51 deletions

View File

@ -8,7 +8,7 @@ bin_PROGRAMS=siccc
siccc_SOURCES = src/options.c src/sicmain.cc mongoose/mongoose.c
siccc_CFLAGS =
siccc_CXXFLAGS = ${AM_CXXFLAGS} -ggdb -I./mongoose/ -Darschlecken
siccc_CXXFLAGS = ${AM_CXXFLAGS} -DDEBUG -ggdb -I./mongoose/ -Darschlecken
siccc_LDFLAGS = -ldl -pthread
options.c: options.ggo

View File

@ -91,42 +91,9 @@ class MongooseHandler{
};
int main(int argc, char **argv)
#ifdef DEBUG
void dump_args()
{
int result = 0;
/* MongooseHandler m; */
struct cmd_parser_params *params;
//initialize the parameters structure
params = cmd_parser_params_create();
//call the command line parser
if (cmd_parser(argc, argv, &args_info) != 0) {
result = 1;
cmd_parser_free(&args_info);
free(params);
}
//override command line options,
//but do not initialize args_info, check for required options.
//NOTICE: we must NOT skip the 0 assignment to initialize,
//since its default value is 1 and override defaults to 0
//while check_required is already set to its default value, 1
params->initialize = 1;
params->override = 0;
//call the config file parser
if (cmd_parser_config_file
(args_info.conffile_arg, &args_info, params) != 0) {
result = 1;
cmd_parser_free(&args_info);
free(params);
}
//debugcode:
cout << "value of port: " << args_info.port_arg << std::endl;
cout << "value of daemonize: " <<
static_cast<bool>(args_info.daemonize_flag) <<
@ -138,20 +105,64 @@ int main(int argc, char **argv)
cout << "value of listen: " <<
args_info.listen_arg[i] <<std::endl;
if (args_info.saveconf_given) {
if (cmd_parser_file_save(args_info.conffile_arg,
&args_info) == EXIT_FAILURE)
result = 1;
else
cout << "saved configuration file "<<
args_info.conffile_arg <<
", \n" << std::endl;
// if (args_info.saveconf_given) {
// if (cmd_parser_file_save(args_info.conffile_arg,
// &args_info) == EXIT_FAILURE)
//
// else
// cout << "saved configuration file "<<
// args_info.conffile_arg <<
// ", \n" << std::endl;
// }
return;
}
#endif
bool configfile_parsing_action(int& argc, char **argv)
{
struct cmd_parser_params *params;
//initialize the parameters structure
params = cmd_parser_params_create();
params->check_required = 0;
if (cmd_parser_config_file("./siccc.conf", &args_info, params) != 0) {
cmd_parser_free(&args_info);
free(params);
return false;
}
params->initialize = 0;
params->override = 1;
params->check_required = 1;
//call the command line parser
if (cmd_parser(argc, argv, &args_info) != 0) {
cmd_parser_free(&args_info);
free(params);
return false;
}
return true;
}
int main(int argc, char **argv)
{
if ( !configfile_parsing_action(argc, argv) ) {
std::cerr << "ERROR ERROR BEEP" << std::endl;
exit(1);
}
#ifdef DEBUG
dump_args();
#endif
MongooseHandler m(args_info.port_arg);
if (!args_info.daemonize_flag) {
while(1)
getchar();
}
return result;
return 0;
}