| version 1.19, 2001/12/20 19:50:38 |
version 1.20, 2002/02/13 14:55:26 |
| Line 29 CFG_CONTEXT cfg_get_context(struct cfg_o |
|
| Line 29 CFG_CONTEXT cfg_get_context(struct cfg_o |
|
| if (con == NULL) |
if (con == NULL) |
| return NULL; |
return NULL; |
| |
|
| |
/* Setting all struct values to 0 or NULL. */ |
| memset(con, '\0', sizeof(*con)); |
memset(con, '\0', sizeof(*con)); |
| con->type = CFG_NO_CONTEXT; |
con->type = CFG_NO_CONTEXT; |
| |
|
| Line 110 void cfg_set_cmdline_context( |
|
| Line 111 void cfg_set_cmdline_context( |
|
| char **argv |
char **argv |
| ) |
) |
| { |
{ |
| |
cfg_reset_context(con); |
| |
|
| con->type = CFG_CMDLINE; |
con->type = CFG_CMDLINE; |
| |
|
| con->argc = argc; |
con->argc = argc; |
| Line 128 void cfg_set_cfgfile_context( |
|
| Line 131 void cfg_set_cfgfile_context( |
|
| char *filename |
char *filename |
| ) |
) |
| { |
{ |
| |
cfg_reset_context(con); |
| |
|
| con->type = CFG_CFGFILE; |
con->type = CFG_CFGFILE; |
| |
|
| con->begin_pos = begin_pos; |
con->begin_pos = begin_pos; |
| con->end_pos = end_pos; |
con->end_pos = end_pos; |
| |
|
| |
/* TODO: filename copying? (if yes than don't forget memory freeing) */ |
| con->filename = (char *) filename; |
con->filename = (char *) filename; |
| |
|
| con->fhandle = NULL; |
con->fhandle = NULL; |
| } |
} |
| |
|
| |
void cfg_reset_context(const CFG_CONTEXT con) |
| |
{ |
| |
con->cur_idx = 0; |
| |
con->cur_idx_tmp = 0; |
| |
|
| |
if (con->used_opt_idx != NULL) { |
| |
free(con->used_opt_idx); |
| |
con->used_opt_idx = NULL; |
| |
} |
| |
|
| |
__cfg_free_currents(con); |
| |
|
| |
if (con->fhandle != NULL) { |
| |
fclose(con->fhandle); |
| |
con->fhandle = NULL; |
| |
} |
| |
} |
| |
|
| void cfg_free_context(const CFG_CONTEXT con) |
void cfg_free_context(const CFG_CONTEXT con) |
| { |
{ |
| |
cfg_reset_context(con); |
| |
|
| cfg_clear_cmdline_stop_string(con); |
cfg_clear_cmdline_stop_string(con); |
| cfg_clear_cfgfile_stop_prefix(con); |
cfg_clear_cfgfile_stop_prefix(con); |
| Line 152 void cfg_free_context(const CFG_CONTEXT |
|
| Line 178 void cfg_free_context(const CFG_CONTEXT |
|
| cfg_clear_cfgfile_multi_line_postfix(con); |
cfg_clear_cfgfile_multi_line_postfix(con); |
| cfg_clear_quote_strings(con); |
cfg_clear_quote_strings(con); |
| |
|
| if (con->used_opt_idx != NULL) |
con->argc = 0; |
| free(con->used_opt_idx); |
con->argv = NULL; |
| |
|
| /* |
|
| * We can't call free_currents(con), because it is stacic method defined |
|
| * in cmdline.c; but no problem, we will do the free-job ourself. |
|
| |
|
| if (con->cur_opt != NULL) |
|
| free(con->cur_opt); |
|
| if (con->cur_arg != NULL) |
|
| free(con->cur_arg); |
|
| |
|
| con->cur_opt = con->cur_arg = NULL; |
|
| con->cur_opt_type = CFG_NONE_OPTION; |
|
| */ |
|
| |
|
| __cfg_free_currents(con); |
|
| |
|
| |
|
| if (con->fhandle != NULL) |
|
| fclose(con->fhandle); |
|
| |
|
| con->fhandle = NULL; |
|
| con->filename = NULL; |
con->filename = NULL; |
| |
con->begin_pos = 0; |
| |
con->end_pos = 0; |
| |
|
| con->type = CFG_NO_CONTEXT; |
con->type = CFG_NO_CONTEXT; |
| |
|
| Line 184 void cfg_free_context(const CFG_CONTEXT |
|
| Line 192 void cfg_free_context(const CFG_CONTEXT |
|
| |
|
| #if defined(SELF) || defined(SELFTEST) || defined(SELF_CFG) |
#if defined(SELF) || defined(SELFTEST) || defined(SELF_CFG) |
| |
|
| |
|
| |
void ar_print(char *name, char *format, void **vals) |
| |
{ |
| |
if (vals != NULL) { |
| |
if (strcmp(format, "%s")) { |
| |
register int i; |
| |
printf("%s: ", name); |
| |
|
| |
//fputs(format, stdout); |
| |
//fputs(": ", stdout); |
| |
|
| |
for (i = 0; vals[i] != NULL; i++) { |
| |
|
| |
printf(format, !strcmp(format, "%d") ? *(((int **) vals)[i]) |
| |
: !strcmp(format, "%u") ? *(((unsigned int **) vals)[i]) |
| |
: !strcmp(format, "%ld") ? *(((long **) vals)[i]) |
| |
: !strcmp(format, "%lu") ? *(((unsigned long**)vals)[i]) |
| |
: !strcmp(format, "%f") ? *(((float **) vals)[i]) |
| |
: !strcmp(format, "%e") ? *(((double **) vals)[i]) |
| |
: 0LU); |
| |
|
| |
printf(", "); |
| |
} |
| |
puts("NULL"); |
| |
} |
| |
else { |
| |
register char *s; |
| |
s = strdyn_implode_str((char **) vals, "]["); |
| |
printf("%s = [%s]\n", name, s); |
| |
if (s != NULL) |
| |
free(s); |
| |
} |
| |
|
| |
strdyn_free((char **) vals); |
| |
} |
| |
else |
| |
printf("%s uninitialized\n", name); |
| |
} |
| |
|
| int main(int argc, char **argv) |
int main(int argc, char **argv) |
| { |
{ |
| |
|
| Line 241 int main(int argc, char **argv) |
|
| Line 288 int main(int argc, char **argv) |
|
| printf("advanced leftovers: %d\n", cfg_get_context_flag(con, CFG_ADVANCED_LEFTOVERS)); |
printf("advanced leftovers: %d\n", cfg_get_context_flag(con, CFG_ADVANCED_LEFTOVERS)); |
| cfg_set_context_flag(con, CFG_ADVANCED_LEFTOVERS); |
cfg_set_context_flag(con, CFG_ADVANCED_LEFTOVERS); |
| printf("advanced leftovers: %d\n", cfg_get_context_flag(con, CFG_ADVANCED_LEFTOVERS)); |
printf("advanced leftovers: %d\n", cfg_get_context_flag(con, CFG_ADVANCED_LEFTOVERS)); |
| */ |
*/ |
| |
|
| cfg_set_context_flag(con, CFG_ADVANCED_LEFTOVERS); |
cfg_set_context_flag(con, CFG_ADVANCED_LEFTOVERS); |
| |
|
| Line 299 int main(int argc, char **argv) |
|
| Line 346 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); |
/* DELTHIS: cfg_free_context(con); */ |
| |
|
| if (o_cfgfile != NULL) { |
if (o_cfgfile != NULL) { |
| con = cfg_get_cfgfile_context(0, 0, o_cfgfile, options); |
/* DELTHIS: con = cfg_get_cfgfile_context(0, 0, o_cfgfile, options); */ |
| |
cfg_set_cfgfile_context(con, 0, 0, o_cfgfile); |
| cfg_remove_cfgfile_comment_prefix(con, "//"); |
cfg_remove_cfgfile_comment_prefix(con, "//"); |
| cfg_add_cfgfile_comment_prefix(con, "//"); |
cfg_add_cfgfile_comment_prefix(con, "//"); |
| |
|
| Line 315 int main(int argc, char **argv) |
|
| Line 363 int main(int argc, char **argv) |
|
| cfg_get_cur_arg(con), |
cfg_get_cur_arg(con), |
| cfg_get_cur_idx(con), |
cfg_get_cur_idx(con), |
| argv[cfg_get_cur_idx(con)]); |
argv[cfg_get_cur_idx(con)]); |
| */ |
*/ |
| } |
} |
| |
|
| if (ret != 0) |
if (ret != 0) |
| Line 332 int main(int argc, char **argv) |
|
| Line 380 int main(int argc, char **argv) |
|
| printf("o_float = %f, o_double = %e\n", o_float, o_double); |
printf("o_float = %f, o_double = %e\n", o_float, o_double); |
| printf("o_string = <%s>\n", o_string); |
printf("o_string = <%s>\n", o_string); |
| |
|
| { |
puts("Multi values printing:"); |
| char *s; |
|
| register int i; |
|
| |
|
| puts("Multi values printing:"); |
|
| |
|
| if (o_multi_int != NULL) { |
|
| printf("o_multi_int: "); |
|
| for (i = 0; o_multi_int[i] != NULL; i++) |
|
| printf("%d, ", *(o_multi_int[i])); |
|
| puts("NULL"); |
|
| strdyn_free((char**) o_multi_int); |
|
| } |
|
| else |
|
| puts("o_multi_int uninitialized"); |
|
| |
|
| if (o_multi_uint != NULL) { |
|
| printf("o_multi_uint: "); |
|
| for (i = 0; o_multi_uint[i] != NULL; i++) |
|
| printf("%u, ", *(o_multi_uint[i])); |
|
| puts("NULL"); |
|
| strdyn_free((char**) o_multi_uint); |
|
| } |
|
| else |
|
| puts("o_multi_uint uninitialized"); |
|
| |
|
| if (o_multi_long != NULL) { |
|
| printf("o_multi_long: "); |
|
| for (i = 0; o_multi_long[i] != NULL; i++) |
|
| printf("%ld, ", *(o_multi_long[i])); |
|
| puts("NULL"); |
|
| strdyn_free((char**) o_multi_long); |
|
| } |
|
| else |
|
| puts("o_multi_long uninitialized"); |
|
| |
|
| if (o_multi_ulong != NULL) { |
|
| printf("o_multi_ulong: "); |
|
| for (i = 0; o_multi_ulong[i] != NULL; i++) |
|
| printf("%lu, ", *(o_multi_ulong[i])); |
|
| puts("NULL"); |
|
| strdyn_free((char**) o_multi_ulong); |
|
| } |
|
| else |
|
| puts("o_multi_ulong uninitialized"); |
|
| |
|
| if (o_multi_float != NULL) { |
|
| printf("o_multi_float: "); |
|
| for (i = 0; o_multi_float[i] != NULL; i++) |
|
| printf("%f, ", *(o_multi_float[i])); |
|
| puts("NULL"); |
|
| strdyn_free((char**) o_multi_float); |
|
| } |
|
| else |
|
| puts("o_multi_float uninitialized"); |
|
| |
|
| if (o_multi_double != NULL) { |
|
| printf("o_multi_double: "); |
|
| for (i = 0; o_multi_double[i] != NULL; i++) |
|
| printf("%e, ", *(o_multi_double[i])); |
|
| puts("NULL"); |
|
| strdyn_free((char**) o_multi_double); |
|
| } |
|
| else |
|
| puts("o_multi_double uninitialized"); |
|
| |
|
| if (o_name != NULL) { |
|
| s = strdyn_implode_str(o_name, "]["); |
|
| printf("o_name = [%s]\n", s); |
|
| if (s != NULL) |
|
| free(s); |
|
| strdyn_free(o_name); |
|
| } |
|
| else |
|
| puts("o_name uninitialized"); |
|
| |
|
| if (o_leftover != NULL) { |
|
| s = strdyn_implode_str(o_leftover, "]["); |
|
| printf("o_leftover = [%s]\n", s); |
|
| if (s != NULL) |
|
| free(s); |
|
| strdyn_free(o_leftover); |
|
| } |
|
| else |
|
| puts("o_leftover uninitialized"); |
|
| } |
|
| |
|
| |
ar_print("o_multi_int", "%d", (void **) o_multi_int); |
| |
ar_print("o_multi_uint", "%u", (void **) o_multi_uint); |
| |
ar_print("o_multi_long", "%ld", (void **) o_multi_long); |
| |
ar_print("o_multi_ulong", "%lu", (void **) o_multi_ulong); |
| |
ar_print("o_multi_float", "%f", (void **) o_multi_float); |
| |
ar_print("o_multi_double", "%e", (void **) o_multi_double); |
| |
ar_print("o_name", "%s", (void **) o_name); |
| |
ar_print("o_leftover", "%s", (void **) o_leftover); |
| |
|
| return 0; |
return 0; |
| } |
} |