src/server/config/conf.h

changeset 17
d2a97bbeb57d
parent 16
a9bbd82d2dce
child 21
627b09ee74e4
--- 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 <stdio.h>
 #include <stdlib.h>
@@ -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 <ElseIf> and <Else>
+    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 */
 

mercurial