-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathconf.h
84 lines (65 loc) · 2.63 KB
/
conf.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/*
* Copyright (C) 2009 Inter7 Internet Technologies, Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*/
#ifndef __CONFIG_H_
#define __CONFIG_H_
/*
Maximum length of a configuration line
*/
#define CONFIG_MAX_LINE 255
/*
Atom flags
*/
#define CAF_NONE 0
#define CAF_IGNORE 1 /* Dont look at this again (internal) */
/*
Config flags
*/
#define CF_NONE 0
#define CF_COMMENT 1 /* Inside a comment */
typedef struct __config_atom_ {
char *name, /* Atom name (if any) */
*data; /* Atom data */
int flags; /* Atom flags */
unsigned long line; /* Atom exists on line */
struct __config_atom_ *next; /* Next atom */
} config_atom_t;
typedef struct __config_label_ {
char *name, /* Label name */
*filename; /* From file */
unsigned long line; /* Begins on line */
struct __config_atom_ *atoms, /* Label's atoms */
*atail; /* Last atom */
struct __config_label_ *next; /* Next label */
} config_label_t;
typedef struct __config_ {
char *filename, /* Current filename */
*dir; /* Directory of configs */
int flags; /* Config flags */
unsigned long line; /* Current line */
struct __config_label_ *labels, /* Configuration labels */
*ltail; /* Last label */
} config_t;
config_t *config_begin(const char *);
config_t *config_read(char *);
void config_kill(config_t *);
char *config_fetch_by_name(config_t *, char *, char *);
char *config_fetch_by_num(config_t *, char *, int);
int config_reference(config_t *, char *);
char *config_fetch(config_t *, char *);
int config_next_reference(config_t *);
#endif /* __CONFIG_H_ */