Commit | Line | Data |
---|---|---|
2fe58dfd SE |
1 | #ifndef conffile_internal_h |
2 | #define conffile_internal_h | |
3 | ||
4 | #include <stdio.h> | |
5 | #include "secnet.h" | |
6 | ||
fe5e9cc4 | 7 | typedef cstring_t atom_t; |
2fe58dfd SE |
8 | |
9 | /* Parse tree for configuration file */ | |
10 | ||
11 | #define YYSTYPE struct p_node * | |
12 | ||
13 | #define T_STRING 1 | |
14 | #define T_NUMBER 2 | |
15 | #define T_KEY 3 | |
16 | #define T_ASSIGNMENT 10 | |
17 | #define T_LISTITEM 11 | |
18 | #define T_EXEC 12 | |
19 | #define T_PATHELEM 13 | |
20 | #define T_ABSPATH 14 | |
21 | #define T_RELPATH 15 | |
22 | #define T_DICT 16 | |
23 | #define T_ALIST 17 | |
24 | #define T_ERROR 20 | |
25 | ||
3f36eb5f RK |
26 | #define T_IS_PRIMITIVE(NTYPE) ((NTYPE) < T_ASSIGNMENT) |
27 | ||
2fe58dfd SE |
28 | struct p_node { |
29 | uint32_t type; | |
30 | struct cloc loc; | |
31 | union { | |
32 | atom_t key; | |
33 | string_t string; | |
34 | uint32_t number; | |
35 | } data; | |
36 | struct p_node *l; | |
37 | struct p_node *r; | |
38 | }; | |
39 | ||
fe5e9cc4 | 40 | extern cstring_t config_file; |
1caa23ff | 41 | extern int config_lineno; |
fe5e9cc4 | 42 | extern int yynerrs; |
2fe58dfd SE |
43 | |
44 | /* Keys in dictionaries are 'atoms', which are constructed from strings | |
45 | using this call. Atoms may be compared using '=='. */ | |
fe5e9cc4 | 46 | extern atom_t intern(cstring_t string); |
2fe58dfd SE |
47 | |
48 | extern struct p_node *parse_conffile(FILE *conffile); | |
49 | ||
50 | #endif /* conffile_internal_h */ |