1 /* configfile.h - Generic configuration file format.
8 /* Data can only be modified inside the library. */
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. */
18 int flags
; /* Special flags. */
19 char word
[1]; /* Payload. */
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 \. */
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))
44 #endif /* _CONFIGFILE_H */