integer arithmetic types: make get_uint32, get_uint16 return the correct type
[secnet] / conffile_internal.h
CommitLineData
2fe58dfd
SE
1#ifndef conffile_internal_h
2#define conffile_internal_h
3
4#include <stdio.h>
5#include "secnet.h"
6
fe5e9cc4 7typedef 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
26struct p_node {
27 uint32_t type;
28 struct cloc loc;
29 union {
30 atom_t key;
31 string_t string;
32 uint32_t number;
33 } data;
34 struct p_node *l;
35 struct p_node *r;
36};
37
fe5e9cc4 38extern cstring_t config_file;
2fe58dfd 39extern uint32_t config_lineno;
fe5e9cc4 40extern int yynerrs;
2fe58dfd
SE
41
42/* Keys in dictionaries are 'atoms', which are constructed from strings
43 using this call. Atoms may be compared using '=='. */
fe5e9cc4 44extern atom_t intern(cstring_t string);
2fe58dfd
SE
45
46extern struct p_node *parse_conffile(FILE *conffile);
47
48#endif /* conffile_internal_h */