root / lab4 / .minix-src / include / configfile.h @ 13
History | View | Annotate | Download (1.6 KB)
1 | 13 | up20180614 | /* configfile.h - Generic configuration file format.
|
---|---|---|---|
2 | * Author: Kees J. Bot
|
||
3 | * 5 Jun 1999
|
||
4 | */
|
||
5 | #ifndef _CONFIGFILE_H
|
||
6 | #define _CONFIGFILE_H
|
||
7 | |||
8 | /* Data can only be modified inside the library. */
|
||
9 | #ifndef _c
|
||
10 | #define _c const |
||
11 | #endif
|
||
12 | |||
13 | typedef _c struct config { /* Contents of a generic configuration file. */ |
||
14 | _c struct config *next; /* Next configuration file thing. */ |
||
15 | _c struct config *list; /* For a { sublist }. */ |
||
16 | const char *file; /* File and line where this is found. */ |
||
17 | unsigned line;
|
||
18 | int flags; /* Special flags. */ |
||
19 | char word[1]; /* Payload. */ |
||
20 | } config_t; |
||
21 | |||
22 | #define CFG_CLONG 0x0001 /* strtol(word, &end, 0) is valid. */ |
||
23 | #define CFG_OLONG 0x0002 /* strtol(word, &end, 010). */ |
||
24 | #define CFG_DLONG 0x0004 /* strtol(word, &end, 10). */ |
||
25 | #define CFG_XLONG 0x0008 /* strtol(word, &end, 0x10). */ |
||
26 | #define CFG_CULONG 0x0010 /* strtoul(word, &end, 0). */ |
||
27 | #define CFG_OULONG 0x0020 /* strtoul(word, &end, 010). */ |
||
28 | #define CFG_DULONG 0x0040 /* strtoul(word, &end, 10). */ |
||
29 | #define CFG_XULONG 0x0080 /* strtoul(word, &end, 0x10). */ |
||
30 | #define CFG_STRING 0x0100 /* The word is enclosed in quotes. */ |
||
31 | #define CFG_SUBLIST 0x0200 /* This is a sublist, so no word. */ |
||
32 | #define CFG_ESCAPED 0x0400 /* Escapes are still marked with \. */ |
||
33 | |||
34 | config_t *config_read(const char *_file, int flags, config_t *_cfg); |
||
35 | void config_delete(config_t *_cfg);
|
||
36 | int config_renewed(config_t *_cfg);
|
||
37 | size_t config_length(config_t *_cfg); |
||
38 | #define config_issub(cfg) (!!((cfg)->flags & CFG_SUBLIST))
|
||
39 | #define config_isatom(cfg) (!config_issub(cfg))
|
||
40 | #define config_isstring(cfg) (!!((cfg)->flags & CFG_STRING))
|
||
41 | |||
42 | #undef _c
|
||
43 | |||
44 | #endif /* _CONFIGFILE_H */ |