/[svn]/vendor/ircservices-5.1.24/conffile.h
ViewVC logotype

Contents of /vendor/ircservices-5.1.24/conffile.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1171 - (show annotations)
Fri Aug 12 20:00:46 2011 UTC (10 years, 3 months ago) by michael
File MIME type: text/x-csrc
File size: 4476 byte(s)
- Import ircservices-5.1.24. Don't ever think about modifying anything in this
  folder!
  Since Andrew Church has discontinued his services project in April 2011, the
  ircd-hybrid team has been given permissions to officially continue and
  maintain the already mentioned project.
  The name of this project will be changed for the reason being that the current
  name "IRC Services" is way too generic these days.

  Remember: Don't ever modify anything in here. This folder is kept for reference.

1 /* Structures, constants, and external declarations for configuration file
2 * handling.
3 *
4 * IRC Services is copyright (c) 1996-2009 Andrew Church.
5 * E-mail: <achurch@achurch.org>
6 * Parts written by Andrew Kempe and others.
7 * This program is free but copyrighted software; see the file GPL.txt for
8 * details.
9 */
10
11 #ifndef CONFFILE_H
12 #define CONFFILE_H
13
14 /*************************************************************************/
15
16 /* Configuration directives. Note that all numeric parameter types except
17 * CD_TIME and CD_SET take an int32 value pointer (including CD_TIMEMSEC).
18 */
19
20 /* Information about a configuration parameter's value: */
21 typedef union {
22 void *ptrval;
23 int32 intval;
24 time_t timeval;
25 } CDValue;
26
27 /* Information about a configuration directive: */
28 typedef struct {
29 const char *name;
30 struct {
31 int type; /* Parameter type (CD_* below) */
32 int flags; /* Parameter flags (CF_* below) */
33 void *ptr; /* Pointer to where to store the value */
34 /* The following data is internal-use-only: */
35 CDValue prev; /* Previous value (to restore when deconfigured) */
36 CDValue new; /* New value (to set if conf-file successfully read) */
37 } params[CONFIG_MAXPARAMS];
38 /* Also internal use only: */
39 int was_seen; /* Non-zero if directive was seen this time around */
40 } ConfigDirective;
41
42 #define CD_NONE 0
43 #define CD_INT 1
44 #define CD_POSINT 2 /* Positive integer only */
45 #define CD_PORT 3 /* 1..65535 only */
46 #define CD_STRING 4
47 #define CD_TIME 5 /* Type of `ptr' is `time_t *' */
48 #define CD_TIMEMSEC 6 /* Variable is in milliseconds, parameter
49 * in seconds (decimal allowed) */
50 #define CD_FUNC 7 /* `ptr' is a function to call; see
51 * init.c for examples */
52 #define CD_SET -1 /* Not a real parameter; just set the
53 * given `int' variable to 1 */
54 #define CD_DEPRECATED -2 /* Set for deprecated directives; causes
55 * a warning to be printed */
56
57 /* Flags: */
58 #define CF_OPTIONAL 0x01 /* Parameter is optional (defaults to 0) */
59 #define CF_DIRREQ 0x02 /* Directive is required (set on first param)*/
60 /* Internal-use-only flags: */
61 #define CF_SAVED 0x80 /* Original value saved in `prev' */
62 #define CF_WASSET 0x40 /* Parameter set this time around */
63 #define CF_ALLOCED 0x20 /* Current value is alloc'd by parser */
64 #define CF_ALLOCED_NEW 0x10 /* Value of `new' is alloc'd by parser */
65
66 /* Values for `action' parameter to configure() (can be or'ed together): */
67 #define CONFIGURE_READ 1 /* Read settings from configuration file */
68 #define CONFIGURE_SET 2 /* Set configuration variables to new values */
69
70 /* Values passed in `linenum' parameter to configuration directive handlers
71 * (CD_FUNC parameters) when `filename' is NULL: */
72 #define CDFUNC_INIT 0 /* Prepare for reading data */
73 #define CDFUNC_SET 1 /* Copy new data to real config variables */
74 #define CDFUNC_DECONFIG 2 /* Delete any data in config variables */
75
76 /*************************************************************************/
77
78 /* Global functions: */
79
80 /* Set configuration options for the given module (if `modulename' is NULL,
81 * set core configuration options). Returns nonzero on success, 0 on error
82 * (an error message is logged, and printed to the terminal if applicable,
83 * in this case). Returns successfully without doing anything if
84 * `directives' is NULL. */
85 extern int configure(const char *modulename, ConfigDirective *directives,
86 int action);
87
88 /* Deconfigure given directive array (free any allocated storage and
89 * restore original values). A no-op if `directives' is NULL. */
90 extern void deconfigure(ConfigDirective *directives);
91
92 /* Print a warning or error message to the log (and the console, if open). */
93 extern void config_error(const char *filename, int linenum,
94 const char *message,...);
95
96 /*************************************************************************/
97
98 #endif /* CONFFILE_H */
99
100 /*
101 * Local variables:
102 * c-file-style: "stroustrup"
103 * c-file-offsets: ((case-label . *) (statement-case-intro . *))
104 * indent-tabs-mode: nil
105 * End:
106 *
107 * vim: expandtab shiftwidth=4:
108 */

svnadmin@ircd-hybrid.org
ViewVC Help
Powered by ViewVC 1.1.28