| version 1.18, 2002/06/23 10:48:46 |
version 1.19, 2002/06/23 16:43:47 |
| Line 32 char *cfg_default_properties[CFG_N_PROPS |
|
| Line 32 char *cfg_default_properties[CFG_N_PROPS |
|
| /* CFG_LINE_SHORT_OPTION_PREFIX */ { "-", NULL, NULL, NULL }, |
/* CFG_LINE_SHORT_OPTION_PREFIX */ { "-", NULL, NULL, NULL }, |
| /* CFG_LINE_LONG_OPTION_PREFIX */ { "--", NULL, NULL, NULL }, |
/* CFG_LINE_LONG_OPTION_PREFIX */ { "--", NULL, NULL, NULL }, |
| /* CFG_LINE_OPTION_ARG_SEPARATOR */ { "=", NULL, NULL, NULL }, |
/* CFG_LINE_OPTION_ARG_SEPARATOR */ { "=", NULL, NULL, NULL }, |
| /* CFG_LINE_MULTI_VALS_SEPARATOR */ { ",", ";", NULL, NULL }, |
/* CFG_LINE_NORMAL_MULTI_VALS_SEPARATOR */ { ",", ";", NULL, NULL }, |
| /* CFG_LINE_MULTI_VALS_LEFTOVER_SEPARATOR */ { NULL, NULL, NULL, NULL }, |
/* CFG_LINE_LEFTOVER_MULTI_VALS_SEPARATOR */ { NULL, NULL, NULL, NULL }, |
| /* CFG_LINE_QUOTE_PREFIX */ { NULL, NULL, NULL, NULL }, |
/* CFG_LINE_QUOTE_PREFIX */ { NULL, NULL, NULL, NULL }, |
| /* CFG_LINE_QUOTE_POSTFIX */ { NULL, NULL, NULL, NULL }, |
/* CFG_LINE_QUOTE_POSTFIX */ { NULL, NULL, NULL, NULL }, |
| /* CFG_FILE_STOP_PREFIX */ { NULL, NULL, NULL, NULL }, |
/* CFG_FILE_STOP_PREFIX */ { NULL, NULL, NULL, NULL }, |
| /* CFG_FILE_COMMENT_PREFIX */ { "#", ";", NULL, NULL }, |
/* CFG_FILE_COMMENT_PREFIX */ { "#", ";", NULL, NULL }, |
| /* CFG_FILE_MULTI_LINE_POSTFIX */ { "\\", NULL, NULL, NULL }, |
/* CFG_FILE_MULTI_LINE_POSTFIX */ { "\\", NULL, NULL, NULL }, |
| /* CFG_FILE_OPTION_ARG_SEPARATOR */ { "=", NULL, NULL, NULL }, |
/* CFG_FILE_OPTION_ARG_SEPARATOR */ { "=", NULL, NULL, NULL }, |
| /* CFG_FILE_MULTI_VALS_SEPARATOR */ { ",", ";", " ", NULL }, |
/* CFG_FILE_NORMAL_MULTI_VALS_SEPARATOR */ { ",", ";", " ", NULL }, |
| /* CFG_FILE_MULTI_VALS_LEFTOVER_SEPARATOR */ { " ", NULL, NULL, NULL }, |
/* CFG_FILE_LEFTOVER_MULTI_VALS_SEPARATOR */ { " ", NULL, NULL, NULL }, |
| /* CFG_FILE_QUOTE_PREFIX */ { "\"", "'", NULL, NULL }, |
/* CFG_FILE_QUOTE_PREFIX */ { "\"", "'", NULL, NULL }, |
| /* CFG_FILE_QUOTE_POSTFIX */ { "\"", "'", NULL, NULL }, |
/* CFG_FILE_QUOTE_POSTFIX */ { "\"", "'", NULL, NULL }, |
| }; /* }}} */ |
}; /* }}} */ |
| Line 50 char *cfg_default_properties[CFG_N_PROPS |
|
| Line 50 char *cfg_default_properties[CFG_N_PROPS |
|
| * Static functions for strdyn manipulation |
* Static functions for strdyn manipulation |
| */ |
*/ |
| |
|
| static void |
static int |
| strdyn_array_clear(where) |
strdyn_array_clear(where) |
| char ***where; |
char ***where; |
| { /* {{{ */ |
{ /* {{{ */ |
| |
#if 0 |
| if (*where != NULL) |
if (*where != NULL) |
| strdyn_free(*where); |
#endif |
| |
*where = strdyn_remove_all(*where); |
| |
|
| *where = NULL; |
return *where != NULL; |
| } /* }}} */ |
} /* }}} */ |
| |
|
| static int |
static int |
| Line 65 strdyn_array_add(where, str) |
|
| Line 67 strdyn_array_add(where, str) |
|
| char ***where; |
char ***where; |
| char *str; |
char *str; |
| { /* {{{ */ |
{ /* {{{ */ |
| |
#if 0 |
| if (*where == NULL) |
if (*where == NULL) |
| *where = strdyn_create(); |
*where = strdyn_create(); |
| |
#endif |
| |
|
| *where = strdyn_add(*where, str); |
*where = strdyn_add(*where, str); |
| |
|
| Line 78 strdyn_array_remove(where, str) |
|
| Line 82 strdyn_array_remove(where, str) |
|
| char ***where; |
char ***where; |
| char *str; |
char *str; |
| { /* {{{ */ |
{ /* {{{ */ |
| |
#if 0 |
| if (*where != NULL) |
if (*where != NULL) |
| |
#endif |
| *where = strdyn_remove_str_all(*where, str); |
*where = strdyn_remove_str_all(*where, str); |
| |
|
| return *where != NULL; |
return *where != NULL; |
| Line 137 cfg_get_context_flags(con) |
|
| Line 143 cfg_get_context_flags(con) |
|
| #define cfg_normal_property_type(type) ((type) >= 0 && (type) < CFG_N_PROPS) |
#define cfg_normal_property_type(type) ((type) >= 0 && (type) < CFG_N_PROPS) |
| #define cfg_virtual_property_type(type) ((type) > CFG_N_PROPS) |
#define cfg_virtual_property_type(type) ((type) > CFG_N_PROPS) |
| |
|
| void |
int |
| cfg_clear_property(con, type) |
cfg_clear_property(con, type) |
| const CFG_CONTEXT con; |
const CFG_CONTEXT con; |
| enum cfg_property_type type; |
enum cfg_property_type type; |
| { /* {{{ */ |
{ /* {{{ */ |
| if (cfg_normal_property_type(type)) { |
if (cfg_normal_property_type(type)) { |
| strdyn_array_clear(&(con->prop[type])); |
return strdyn_array_clear(&(con->prop[type])); |
| } |
} |
| else if (cfg_virtual_property_type(type)) { |
else if (cfg_virtual_property_type(type)) { |
| |
register int ret = 1; |
| switch (type) { |
switch (type) { |
| default: /* unknown special property; do nothing */ |
default: /* unknown special property; do nothing */ |
| |
ret = 0; |
| break; |
break; |
| case CFG_QUOTE: |
case CFG_QUOTE: |
| cfg_clear_property(con, CFG_LINE_QUOTE); |
ret &= cfg_clear_property(con, CFG_LINE_QUOTE); |
| cfg_clear_property(con, CFG_FILE_QUOTE); |
ret &= cfg_clear_property(con, CFG_FILE_QUOTE); |
| break; |
break; |
| case CFG_LINE_QUOTE: |
case CFG_LINE_QUOTE: |
| cfg_clear_property(con, CFG_LINE_QUOTE_PREFIX); |
ret &= cfg_clear_property(con, CFG_LINE_QUOTE_PREFIX); |
| cfg_clear_property(con, CFG_LINE_QUOTE_POSTFIX); |
ret &= cfg_clear_property(con, CFG_LINE_QUOTE_POSTFIX); |
| break; |
break; |
| case CFG_FILE_QUOTE: |
case CFG_FILE_QUOTE: |
| cfg_clear_property(con, CFG_FILE_QUOTE_PREFIX); |
ret &= cfg_clear_property(con, CFG_FILE_QUOTE_PREFIX); |
| cfg_clear_property(con, CFG_FILE_QUOTE_POSTFIX); |
ret &= cfg_clear_property(con, CFG_FILE_QUOTE_POSTFIX); |
| break; |
break; |
| case CFG_QUOTE_PREFIX: |
case CFG_QUOTE_PREFIX: |
| cfg_clear_property(con, CFG_LINE_QUOTE_PREFIX); |
ret &= cfg_clear_property(con, CFG_LINE_QUOTE_PREFIX); |
| cfg_clear_property(con, CFG_FILE_QUOTE_PREFIX); |
ret &= cfg_clear_property(con, CFG_FILE_QUOTE_PREFIX); |
| break; |
break; |
| case CFG_QUOTE_POSTFIX: |
case CFG_QUOTE_POSTFIX: |
| cfg_clear_property(con, CFG_LINE_QUOTE_POSTFIX); |
ret &= cfg_clear_property(con, CFG_LINE_QUOTE_POSTFIX); |
| cfg_clear_property(con, CFG_FILE_QUOTE_POSTFIX); |
ret &= cfg_clear_property(con, CFG_FILE_QUOTE_POSTFIX); |
| break; |
break; |
| case CFG_MULTI_VALS_SEPARATOR: |
case CFG_MULTI_VALS_SEPARATOR: |
| cfg_clear_property(con, CFG_LINE_MULTI_VALS_SEPARATOR); |
ret &= cfg_clear_property(con, CFG_LINE_MULTI_VALS_SEPARATOR); |
| cfg_clear_property(con, CFG_FILE_MULTI_VALS_SEPARATOR); |
ret &= cfg_clear_property(con, CFG_FILE_MULTI_VALS_SEPARATOR); |
| break; |
break; |
| case CFG_LINE_MULTI_VALS_SEPARATOR: |
case CFG_LINE_MULTI_VALS_SEPARATOR: |
| cfg_clear_property(con, CFG_LINE_NORMAL_MULTI_VALS_SEPARATOR); |
ret &= cfg_clear_property(con, |
| cfg_clear_property(con, CFG_LINE_LEFTOVER_MULTI_VALS_SEPARATOR); |
CFG_LINE_NORMAL_MULTI_VALS_SEPARATOR); |
| |
ret &= cfg_clear_property(con, |
| |
CFG_LINE_LEFTOVER_MULTI_VALS_SEPARATOR); |
| break; |
break; |
| case CFG_FILE_MULTI_VALS_SEPARATOR: |
case CFG_FILE_MULTI_VALS_SEPARATOR: |
| cfg_clear_property(con, CFG_FILE_NORMAL_MULTI_VALS_SEPARATOR); |
ret &= cfg_clear_property(con, |
| cfg_clear_property(con, CFG_FILE_LEFTOVER_MULTI_VALS_SEPARATOR); |
CFG_FILE_NORMAL_MULTI_VALS_SEPARATOR); |
| |
ret &= cfg_clear_property(con, |
| |
CFG_FILE_LEFTOVER_MULTI_VALS_SEPARATOR); |
| break; |
break; |
| case CFG_NORMAL_MULTI_VALS_SEPARATOR: |
case CFG_NORMAL_MULTI_VALS_SEPARATOR: |
| cfg_clear_property(con, CFG_LINE_NORMAL_MULTI_VALS_SEPARATOR); |
ret &= cfg_clear_property(con, |
| cfg_clear_property(con, CFG_FILE_NORMAL_MULTI_VALS_SEPARATOR); |
CFG_LINE_NORMAL_MULTI_VALS_SEPARATOR); |
| |
ret &= cfg_clear_property(con, |
| |
CFG_FILE_NORMAL_MULTI_VALS_SEPARATOR); |
| break; |
break; |
| case CFG_LEFTOVER_MULTI_VALS_SEPARATOR: |
case CFG_LEFTOVER_MULTI_VALS_SEPARATOR: |
| cfg_clear_property(con, CFG_LINE_LEFTOVER_MULTI_VALS_SEPARATOR); |
ret &= cfg_clear_property(con, |
| cfg_clear_property(con, CFG_FILE_LEFTOVER_MULTI_VALS_SEPARATOR); |
CFG_LINE_LEFTOVER_MULTI_VALS_SEPARATOR); |
| |
ret &= cfg_clear_property(con, |
| |
CFG_FILE_LEFTOVER_MULTI_VALS_SEPARATOR); |
| break; |
break; |
| case CFG_OPTION_ARG_SEPARATOR: |
case CFG_OPTION_ARG_SEPARATOR: |
| cfg_clear_property(con, CFG_LINE_OPTION_ARG_SEPARATOR); |
ret &= cfg_clear_property(con, CFG_LINE_OPTION_ARG_SEPARATOR); |
| cfg_clear_property(con, CFG_FILE_OPTION_ARG_SEPARATOR); |
ret &= cfg_clear_property(con, CFG_FILE_OPTION_ARG_SEPARATOR); |
| break; |
break; |
| } |
} |
| |
|
| |
return ret; |
| } |
} |
| |
|
| |
return 0; /* failure */ |
| } /* }}} */ |
} /* }}} */ |
| |
|
| int |
int |