blob: 8c70c34c2eb8f5cca21fd7af02fe9ee0dedca579 (
plain)
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
/*
* config.h
* Functions for the manipulation of configuration files.
*
* Matej Pfajfar <mp292@cam.ac.uk>
*/
/*
* Changes :
* $Log$
* Revision 1.3 2002/07/10 10:11:13 badbytes
* Bugfix - the list of valid characters in a filename didn't include an n .
*
* Revision 1.2 2002/07/03 16:31:22 montrose
* Added getoptions() and made minor adjustment to poptReadDefaultOptions()
*
* Revision 1.1.1.1 2002/06/26 22:45:50 arma
* initial commit: current code
*
* Revision 1.7 2002/04/02 14:27:11 badbytes
* Final finishes.
*
* Revision 1.6 2002/01/26 18:42:15 mp292
* Reviewed according to Secure-Programs-HOWTO.
*
* Revision 1.5 2002/01/21 21:07:56 mp292
* Parameter checking was missing in some functions.
*
* Revision 1.4 2001/12/18 10:37:47 badbytes
* Header files now only apply if they were not previously included from somewhere else.
*
* Revision 1.3 2001/12/07 09:38:03 badbytes
* Tested.
*
* Revision 1.2 2001/12/06 15:43:50 badbytes
* config.c compiles. Proceeding to test it.
*
* Revision 1.1 2001/11/22 01:20:27 mp292
* Functions for dealing with configuration files.
*
*
*/
#ifndef __CONFIG_H
# include <stdio.h>
#include <popt.h>
/* enumeration of types which option values can take */
#define CONFIG_TYPE_STRING 0
#define CONFIG_TYPE_CHAR 1
#define CONFIG_TYPE_INT 2
#define CONFIG_TYPE_LONG 3
#define CONFIG_TYPE_DOUBLE 4
/* max. length of an option keyword */
#define CONFIG_KEYWORD_MAXLEN 255
/* max. length (in characters) of an option value */
#define CONFIG_VALUE_MAXLEN 255
/* legal characters in a filename */
#define CONFIG_LEGAL_FILENAME_CHARACTERS "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-_/"
typedef struct
{
unsigned char *keyword; /* option keyword */
unsigned int r_type; /* return type as defined above */
union /* return value */
{
char *str;
char c;
int i;
long l;
double d;
} r;
int err; /* 1 OK
* 0 keyword not found
* -1 error while parsing */
} config_opt_t;
/* open configuration file for reading */
FILE *open_config(const unsigned char *filename);
/* close configuration file */
int close_config(FILE *f);
/* parse the config file and obtain required option values */
int parse_config(FILE *f, config_opt_t *option);
/* parse popt-style options in a config file */
int poptReadOptions(poptContext optCon, const unsigned char *fname);
/* parse popt-style options from /etc/<cmd>rc and ~/.<cmd>rc */
int poptReadDefaultOptions(const char *cmd, poptContext optCon);
#define __CONFIG_H
#endif
|