| version 1.14, 2001/12/05 23:58:48 |
version 1.15, 2001/12/08 18:23:52 |
|
|
| #include "cfg.h" |
#include "cfg.h" |
| |
|
| static char *default_line_stop_str[2] = { "--", NULL }; |
static char *default_line_stop_str[2] = { "--", NULL }; |
| static char *default_file_stop_str[2] = { "[", NULL }; |
static char *default_file_stop_prefix[2] = { "[", NULL }; |
| static char *default_file_comment_str[3] = { "#", ";", NULL }; |
static char *default_file_comment_prefix[4] = { "#", ";", "//", NULL }; |
| static char *default_short_option_prefix[2] = { "-", NULL }; |
static char *default_short_option_prefix[2] = { "-", NULL }; |
| static char *default_long_option_prefix[2] = { "--", NULL }; |
static char *default_long_option_prefix[2] = { "--", NULL }; |
| static char *default_multi_separator[3] = { ",", ";", NULL }; |
static char *default_multi_vals_separator[3] = { ",", ";", NULL }; |
| static char *default_line_option_arg_separator[2] = { "=", NULL }; |
static char *default_line_option_arg_separator[2] = { "=", NULL }; |
| static char *default_file_option_arg_separator[2] = { "=", NULL }; |
static char *default_file_option_arg_separator[2] = { "=", NULL }; |
| |
static char *default_multi_line_postfix[3] = { "\\", "multi\\", NULL }; |
| |
|
| |
|
| CFG_CONTEXT cfg_get_context(struct cfg_option *options) |
CFG_CONTEXT cfg_get_context(struct cfg_option *options) |
| Line 28 CFG_CONTEXT cfg_get_context(struct cfg_o |
|
| Line 29 CFG_CONTEXT cfg_get_context(struct cfg_o |
|
| con->type = CFG_NO_CONTEXT; |
con->type = CFG_NO_CONTEXT; |
| |
|
| con->line_stop_str = strdyn_create_ar(default_line_stop_str); |
con->line_stop_str = strdyn_create_ar(default_line_stop_str); |
| con->file_stop_str = strdyn_create_ar(default_file_stop_str); |
con->file_stop_prefix = strdyn_create_ar(default_file_stop_prefix); |
| con->comment_str = strdyn_create_ar(default_file_comment_str); |
con->comment_prefix = strdyn_create_ar(default_file_comment_prefix); |
| con->short_option_prefix = strdyn_create_ar(default_short_option_prefix); |
con->short_option_prefix = strdyn_create_ar(default_short_option_prefix); |
| con->long_option_prefix = strdyn_create_ar(default_long_option_prefix); |
con->long_option_prefix = strdyn_create_ar(default_long_option_prefix); |
| con->multi_separator = strdyn_create_ar(default_multi_separator); |
con->multi_vals_separator = strdyn_create_ar(default_multi_vals_separator); |
| |
con->multi_line_postfix = strdyn_create_ar(default_multi_line_postfix); |
| con->line_option_arg_separator = |
con->line_option_arg_separator = |
| strdyn_create_ar(default_line_option_arg_separator); |
strdyn_create_ar(default_line_option_arg_separator); |
| con->file_option_arg_separator = |
con->file_option_arg_separator = |
| strdyn_create_ar(default_file_option_arg_separator); |
strdyn_create_ar(default_file_option_arg_separator); |
| |
|
| if (con->line_stop_str == NULL |
if (con->line_stop_str == NULL |
| || con->file_stop_str == NULL |
|| con->file_stop_prefix == NULL |
| || con->comment_str == NULL |
|| con->comment_prefix == NULL |
| || con->short_option_prefix == NULL |
|| con->short_option_prefix == NULL |
| || con->long_option_prefix == NULL |
|| con->long_option_prefix == NULL |
| |
|| con->multi_vals_separator == NULL |
| |
|| con->multi_line_postfix == NULL |
| || con->line_option_arg_separator == NULL |
|| con->line_option_arg_separator == NULL |
| || con->file_option_arg_separator == NULL |
|| con->file_option_arg_separator == NULL |
| ) |
) |
| Line 125 void cfg_free_context(const CFG_CONTEXT |
|
| Line 129 void cfg_free_context(const CFG_CONTEXT |
|
| { |
{ |
| |
|
| cfg_clear_cmdline_stop_str(con); |
cfg_clear_cmdline_stop_str(con); |
| cfg_clear_cfgfile_stop_str(con); |
cfg_clear_cfgfile_stop_prefix(con); |
| cfg_clear_cfgfile_comment_str(con); |
cfg_clear_cfgfile_comment_prefix(con); |
| cfg_clear_cmdline_short_option_prefix(con); |
cfg_clear_cmdline_short_option_prefix(con); |
| cfg_clear_cmdline_long_option_prefix(con); |
cfg_clear_cmdline_long_option_prefix(con); |
| cfg_clear_cmdline_multi_separator(con); |
cfg_clear_cmdline_multi_vals_separator(con); |
| |
cfg_clear_cfgfile_multi_line_postfix(con); |
| cfg_clear_cmdline_option_arg_separator(con); |
cfg_clear_cmdline_option_arg_separator(con); |
| cfg_clear_cfgfile_option_arg_separator(con); |
cfg_clear_cfgfile_option_arg_separator(con); |
| |
|
| Line 201 int main(int argc, char **argv) |
|
| Line 206 int main(int argc, char **argv) |
|
| { "double", 'd', "double", CFG_DOUBLE, (void *) &o_double, 0 }, |
{ "double", 'd', "double", CFG_DOUBLE, (void *) &o_double, 0 }, |
| { "multi_double",'D',"mdouble",CFG_DOUBLE+CFG_MULTI_SEPARATED,(void*)&o_multi_double,0}, |
{ "multi_double",'D',"mdouble",CFG_DOUBLE+CFG_MULTI_SEPARATED,(void*)&o_multi_double,0}, |
| { "string", 's', "string", CFG_STRING + CFG_MULTI, (void *) &o_string, 0 }, |
{ "string", 's', "string", CFG_STRING + CFG_MULTI, (void *) &o_string, 0 }, |
| { NULL, '\0', NULL, CFG_STRING + CFG_MULTI + CFG_LEFTOVER_ARGS, (void *) &o_leftover, 0 }, |
{ NULL, '\0', "argv", CFG_STRING + CFG_MULTI + CFG_LEFTOVER_ARGS, (void*)&o_leftover,0}, |
| CFG_END_OF_LIST |
CFG_END_OF_LIST |
| }; |
}; |
| |
|
| con = cfg_get_cmdline_context(argc, argv, options); |
con = cfg_get_cmdline_context(argc, argv, options); |
| |
|
| |
cfg_set_context_flags(con, con->flags + CFG_ADVANCED_LEFTOVERS); |
| |
|
| while ((ret = cfg_get_next_opt(con)) > 0) { |
while ((ret = cfg_get_next_opt(con)) > 0) { |
| printf("ret = %d, opt = '%s', arg = '%s', idx = %d, argv[idx] = '%s'\n", |
printf("ret = %d, opt = '%s', arg = '%s', idx = %d, argv[idx] = '%s'\n", |
| ret, |
ret, |
| Line 261 int main(int argc, char **argv) |
|
| Line 268 int main(int argc, char **argv) |
|
| cfg_get_cur_idx(con), |
cfg_get_cur_idx(con), |
| argv[cfg_get_cur_idx(con)]); |
argv[cfg_get_cur_idx(con)]); |
| |
|
| |
|
| cfg_free_context(con); |
cfg_free_context(con); |
| |
|
| |
if (o_cfgfile != NULL) { |
| |
con = cfg_get_cfgfile_context(0, 0, o_cfgfile, options); |
| |
cfg_remove_cfgfile_comment_prefix(con, "//"); |
| |
cfg_add_cfgfile_comment_prefix(con, "//"); |
| |
|
| |
|
| |
while ((ret = cfg_get_next_opt(con)) > 0) { |
| |
/* |
| |
printf("ret = %d, opt = '%s', arg = '%s', idx = %d, argv[idx] = '%s'\n", |
| |
ret, |
| |
cfg_get_cur_opt(con), |
| |
cfg_get_cur_arg(con), |
| |
cfg_get_cur_idx(con), |
| |
argv[cfg_get_cur_idx(con)]); |
| |
*/ |
| |
} |
| |
|
| |
if (ret != 0) |
| |
printf("***** cfgfile error %d\n", ret); |
| |
|
| |
cfg_free_context(con); |
| |
} |
| |
|
| |
|
| printf("o_verbose = %d, o_nice = %d\n", o_verbose, o_nice); |
printf("o_verbose = %d, o_nice = %d\n", o_verbose, o_nice); |
| printf("o_boolean = %d\n", o_boolean); |
printf("o_boolean = %d\n", o_boolean); |
| printf("o_int = %d, o_uint = %u\n", o_int, o_uint); |
printf("o_int = %d, o_uint = %u\n", o_int, o_uint); |
| Line 367 int main(int argc, char **argv) |
|
| Line 397 int main(int argc, char **argv) |
|
| puts("o_leftover uninitialized"); |
puts("o_leftover uninitialized"); |
| } |
} |
| |
|
| if (o_cfgfile != NULL) { |
|
| con = cfg_get_cfgfile_context(0, 0, o_cfgfile, options); |
|
| |
|
| while ((ret = cfg_get_next_opt(con)) > 0) { |
|
| /* |
|
| printf("ret = %d, opt = '%s', arg = '%s', idx = %d, argv[idx] = '%s'\n", |
|
| ret, |
|
| cfg_get_cur_opt(con), |
|
| cfg_get_cur_arg(con), |
|
| cfg_get_cur_idx(con), |
|
| argv[cfg_get_cur_idx(con)]); |
|
| */ |
|
| } |
|
| |
|
| printf("error %d\n", ret); |
|
| |
|
| cfg_free_context(con); |
|
| } |
|
| |
|
| |
|
| return 0; |
return 0; |
| } |
} |