|
|
|
@ -838,6 +838,7 @@ typedef struct {
|
|
|
|
|
int in_key; |
|
|
|
|
int in_brace; |
|
|
|
|
int in_cond; |
|
|
|
|
int simulate_eol; |
|
|
|
|
} tokenizer_t; |
|
|
|
|
|
|
|
|
|
#if 0 |
|
|
|
@ -902,7 +903,14 @@ static int config_tokenizer(server *srv, tokenizer_t *t, int *token_id, buffer *
|
|
|
|
|
int tid = 0; |
|
|
|
|
size_t i; |
|
|
|
|
|
|
|
|
|
for (tid = 0; tid == 0 && t->offset < t->size && t->input[t->offset] ; ) { |
|
|
|
|
if (t->simulate_eol) { |
|
|
|
|
t->simulate_eol = 0; |
|
|
|
|
t->in_key = 1; |
|
|
|
|
tid = TK_EOL; |
|
|
|
|
buffer_copy_string_len(token, CONST_STR_LEN("(EOL)")); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
while (tid == 0 && t->offset < t->size && t->input[t->offset]) { |
|
|
|
|
char c = t->input[t->offset]; |
|
|
|
|
const char *start = NULL; |
|
|
|
|
|
|
|
|
@ -1149,6 +1157,21 @@ static int config_tokenizer(server *srv, tokenizer_t *t, int *token_id, buffer *
|
|
|
|
|
|
|
|
|
|
buffer_copy_string_len(token, CONST_STR_LEN("}")); |
|
|
|
|
|
|
|
|
|
for (; t->offset < t->size; ++t->offset,++t->line_pos) { |
|
|
|
|
c = t->input[t->offset]; |
|
|
|
|
if (c == '\r' || c == '\n') { |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
else if (c == '#') { |
|
|
|
|
t->line_pos += config_skip_comment(t); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
else if (c != ' ' && c != '\t') { |
|
|
|
|
t->simulate_eol = 1; |
|
|
|
|
break; |
|
|
|
|
} /* else (c == ' ' || c == '\t') */ |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
case '[': |
|
|
|
@ -1314,6 +1337,7 @@ static int tokenizer_init(tokenizer_t *t, const buffer *source, const char *inpu
|
|
|
|
|
t->in_key = 1; |
|
|
|
|
t->in_brace = 0; |
|
|
|
|
t->in_cond = 0; |
|
|
|
|
t->simulate_eol = 0; |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|