src/server/config/serverconfig.c

changeset 423
bb7cff720dd0
parent 422
76f2f5d532d0
child 424
3df9258cd3cc
equal deleted inserted replaced
422:76f2f5d532d0 423:bb7cff720dd0
94 ConfigNode *root = serverconfig_parse(parser, cx_strn(buf.space, buf.size)); 94 ConfigNode *root = serverconfig_parse(parser, cx_strn(buf.space, buf.size));
95 cxBufferDestroy(&buf); 95 cxBufferDestroy(&buf);
96 return root; 96 return root;
97 } 97 }
98 98
99 static int scfg_char_is_delim(char c) {
100 static const char *scfg_tokenizer_delim = "()+-/*%";
101 for(int i=0;i<sizeof(scfg_tokenizer_delim)-1;i++) {
102 if(c == scfg_tokenizer_delim[i]) {
103 return 1;
104 }
105 }
106 return 0;
107 }
99 108
100 static CFGToken get_next_token(cxstring content, int *pos) { 109 static CFGToken get_next_token(cxstring content, int *pos) {
101 CFGToken token = { {NULL, 0}, CFG_NO_TOKEN }; 110 CFGToken token = { {NULL, 0}, CFG_NO_TOKEN };
102 CFGTokenType type = CFG_TOKEN; 111 CFGTokenType type = CFG_TOKEN;
103 112
153 } else if(c == '"') { 162 } else if(c == '"') {
154 quote = 1; 163 quote = 1;
155 if(token_begin < 0) { 164 if(token_begin < 0) {
156 token_begin = i; 165 token_begin = i;
157 } 166 }
158 } else if(c == '(' || c == ')') { 167 } else if(scfg_char_is_delim(c)) {
159 if(token_begin >= 0) { 168 if(token_begin >= 0) {
160 token_end = i; 169 token_end = i;
161 i--; 170 i--;
162 break; 171 break;
163 } else { 172 } else {

mercurial