logging: Persistent children include pid in their log messages
[secnet] / conffile_internal.h
1 #ifndef conffile_internal_h
2 #define conffile_internal_h
3
4 #include <stdio.h>
5 #include "secnet.h"
6
7 typedef cstring_t atom_t;
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
26 #define T_IS_PRIMITIVE(NTYPE) ((NTYPE) < T_ASSIGNMENT)
27
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
40 extern cstring_t config_file;
41 extern int config_lineno;
42 extern int yynerrs;
43
44 /* Keys in dictionaries are 'atoms', which are constructed from strings
45 using this call. Atoms may be compared using '=='. */
46 extern atom_t intern(cstring_t string);
47
48 extern struct p_node *parse_conffile(FILE *conffile);
49
50 #endif /* conffile_internal_h */