src/server/config/conf.h

changeset 17
d2a97bbeb57d
parent 16
a9bbd82d2dce
child 21
627b09ee74e4
equal deleted inserted replaced
16:a9bbd82d2dce 17:d2a97bbeb57d
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26 * POSSIBILITY OF SUCH DAMAGE. 26 * POSSIBILITY OF SUCH DAMAGE.
27 */ 27 */
28 28
29 #ifndef ACONF_H 29 #ifndef CFG_CONF_H
30 #define ACONF_H 30 #define CFG_CONF_H
31 31
32 #include <stdio.h> 32 #include <stdio.h>
33 #include <stdlib.h> 33 #include <stdlib.h>
34 34
35 #include "../ucx/list.h" 35 #include "../ucx/list.h"
53 #define LINE_END_TAG 3 53 #define LINE_END_TAG 3
54 #define LINE_MULTI 4 54 #define LINE_MULTI 4
55 #define LINE_NOCONTENT 5 // only comment or space 55 #define LINE_NOCONTENT 5 // only comment or space
56 #define LINE_ERROR 6 // parse error on this line 56 #define LINE_ERROR 6 // parse error on this line
57 57
58 // tag types
59 #define TAG_OBJECT 0
60 #define TAG_IF 1
61 #define TAG_ELSEIF 2
62 #define TAG_ELSE 3
63 #define TAG_CLIENT 4
64
58 typedef struct _cfg_line { 65 typedef struct _cfg_line {
59 sstr_t line; // raw line string 66 sstr_t line; // raw line string
60 void *object; // pointer to data struct 67 void *object; // pointer to data struct
61 int type; // type, see line types 68 int type; // type, see line types
62 } ConfigLine; 69 } ConfigLine;
73 UcxDlist *lines; 80 UcxDlist *lines;
74 cfg_parse_f parse; 81 cfg_parse_f parse;
75 } ConfigParser; 82 } ConfigParser;
76 83
77 84
85 typedef struct _conf_tag ConfigTag;
86 struct _conf_tag {
87 ConfigLine *begin;
88 ConfigLine *end;
89
90 sstr_t name;
91 UcxList *param;
92 ConfigTag *parent;
93 ConfigTag *iftag; // only used by <ElseIf> and <Else>
94 int type_num;
95 };
96
97 typedef struct _conf_directive {
98 ConfigLine *begin;
99 ConfigLine *end;
100
101 sstr_t directive_type;
102 UcxList *param;
103 ConfigTag *condition;
104 int type_num;
105 } ConfigDirective;
106
107
78 int cfg_parse_basic_file(ConfigParser *parser, FILE *in); 108 int cfg_parse_basic_file(ConfigParser *parser, FILE *in);
79 109
80 sstr_t cfg_readln(FILE *file); 110 sstr_t cfg_readln(FILE *file);
81
82 int cfg_get_basic_type(sstr_t line);
83 111
84 sstr_t cfg_trim_comment(sstr_t line); 112 sstr_t cfg_trim_comment(sstr_t line);
85 113
86 sstr_t cfg_param(sstr_t params, sstr_t *name, sstr_t *value); 114 sstr_t cfg_param(sstr_t params, sstr_t *name, sstr_t *value);
87 115
88 sstr_t cfg_param_get(UcxList *list, sstr_t name); 116 sstr_t cfg_param_get(UcxList *list, sstr_t name);
89 117
118 ConfigDirective* cfg_parse_directive(sstr_t line, UcxMempool *mp);
119
90 int cfg_get_directive_type_num(sstr_t type); 120 int cfg_get_directive_type_num(sstr_t type);
91 121
122 int cfg_get_basic_type(sstr_t line);
123
124 int cfg_get_line_type(sstr_t line);
125
126 int cfg_get_tag_type(sstr_t tag);
127
128 sstr_t cfg_get_end_tag_name(sstr_t line);
129
130 ConfigTag* cfg_parse_begin_tag(sstr_t line, UcxMempool *mp);
92 131
93 #ifdef __cplusplus 132 #ifdef __cplusplus
94 } 133 }
95 #endif 134 #endif
96 135
97 #endif /* ACONF_H */ 136 #endif /* CFG_CONF_H */
98 137

mercurial