diff -r a9bbd82d2dce -r d2a97bbeb57d src/server/config/conf.h --- a/src/server/config/conf.h Sun Jan 15 17:00:16 2012 +0100 +++ b/src/server/config/conf.h Sun Jan 15 20:30:45 2012 +0100 @@ -26,8 +26,8 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#ifndef ACONF_H -#define ACONF_H +#ifndef CFG_CONF_H +#define CFG_CONF_H #include #include @@ -55,6 +55,13 @@ #define LINE_NOCONTENT 5 // only comment or space #define LINE_ERROR 6 // parse error on this line +// tag types +#define TAG_OBJECT 0 +#define TAG_IF 1 +#define TAG_ELSEIF 2 +#define TAG_ELSE 3 +#define TAG_CLIENT 4 + typedef struct _cfg_line { sstr_t line; // raw line string void *object; // pointer to data struct @@ -75,24 +82,56 @@ } ConfigParser; +typedef struct _conf_tag ConfigTag; +struct _conf_tag { + ConfigLine *begin; + ConfigLine *end; + + sstr_t name; + UcxList *param; + ConfigTag *parent; + ConfigTag *iftag; // only used by and + int type_num; +}; + +typedef struct _conf_directive { + ConfigLine *begin; + ConfigLine *end; + + sstr_t directive_type; + UcxList *param; + ConfigTag *condition; + int type_num; +} ConfigDirective; + + int cfg_parse_basic_file(ConfigParser *parser, FILE *in); sstr_t cfg_readln(FILE *file); -int cfg_get_basic_type(sstr_t line); - sstr_t cfg_trim_comment(sstr_t line); sstr_t cfg_param(sstr_t params, sstr_t *name, sstr_t *value); sstr_t cfg_param_get(UcxList *list, sstr_t name); +ConfigDirective* cfg_parse_directive(sstr_t line, UcxMempool *mp); + int cfg_get_directive_type_num(sstr_t type); +int cfg_get_basic_type(sstr_t line); + +int cfg_get_line_type(sstr_t line); + +int cfg_get_tag_type(sstr_t tag); + +sstr_t cfg_get_end_tag_name(sstr_t line); + +ConfigTag* cfg_parse_begin_tag(sstr_t line, UcxMempool *mp); #ifdef __cplusplus } #endif -#endif /* ACONF_H */ +#endif /* CFG_CONF_H */