ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/vendor/ircservices-5.1.24/tools/convert-db.h
Revision: 3389
Committed: Fri Apr 25 14:12:15 2014 UTC (11 years, 4 months ago) by michael
Content type: text/x-chdr
File size: 7084 byte(s)
Log Message:
- Imported ircservices-5.1.24

File Contents

# Content
1 /* External declarations for convert-db.
2 *
3 * IRC Services is copyright (c) 1996-2009 Andrew Church.
4 * E-mail: <achurch@achurch.org>
5 * Parts written by Andrew Kempe and others.
6 * This program is free but copyrighted software; see the file GPL.txt for
7 * details.
8 */
9
10 #ifndef CONVERT_DB_H
11 #define CONVERT_DB_H
12
13 /*************************************************************************/
14
15 /* Common includes. */
16
17 #include "services.h"
18 #include "language.h"
19 #include "encrypt.h"
20 #include "modules/database/fileutil.h"
21 #include "modules/nickserv/nickserv.h"
22 #include "modules/chanserv/chanserv.h"
23 #include "modules/memoserv/memoserv.h"
24 #include "modules/operserv/operserv.h"
25 #include "modules/operserv/maskdata.h"
26 #include "modules/operserv/news.h"
27 #include "modules/statserv/statserv.h"
28
29 /*************************************************************************/
30 /*************************************************************************/
31
32 /* Structure with information about each supported database type. */
33
34 typedef struct {
35 /* Identifier (used with +xyz command-line option) */
36 const char *id;
37 /* Routine to check whether databases for this program are in the given
38 * directory; returns a program/database-type name for use in the
39 * "Found XYZ databases" message if databases are found, NULL if not */
40 const char *(*check)(const char *dir);
41 /* Routine to load databases from the given directory; prints an
42 * appropriate error message and calls exit(1) if an error occurs.
43 * ac/av are loaded with all option arguments passed to the program
44 * not parsed out by the main code; av[0] will contain the program
45 * name as usual */
46 void (*load)(const char *dir, int verbose, int ac, char **av);
47 } DBTypeInfo;
48
49 /* List of all available types. This macro is used twice in convert-db.c:
50 * once with an empty PREFIX to declare all of the structures extern, and
51 * once more with a PREFIX of & to define an array of pointers to the
52 * structures. */
53
54 #define ALL_DB_TYPES(PREFIX) \
55 PREFIX dbtype_anope, \
56 PREFIX dbtype_auspice, \
57 PREFIX dbtype_bolivia, \
58 PREFIX dbtype_cygnus, \
59 PREFIX dbtype_daylight, \
60 PREFIX dbtype_epona, \
61 PREFIX dbtype_hybserv, \
62 PREFIX dbtype_ircs_1_2, \
63 PREFIX dbtype_magick_14b2, \
64 PREFIX dbtype_ptlink, \
65 PREFIX dbtype_sirv, \
66 PREFIX dbtype_trircd_4_26, \
67 PREFIX dbtype_wrecked_1_2
68
69 /*************************************************************************/
70 /*************************************************************************/
71
72 /* Converted data. */
73 extern NickGroupInfo *ngi_list;
74 extern NickInfo *ni_list;
75 extern ChannelInfo *ci_list;
76 extern NewsItem *news_list;
77 extern MaskData *md_list[256];
78 extern ServerStats *ss_list;
79 extern int32 maxusercnt;
80 extern time_t maxusertime;
81 extern Password supass;
82 extern int no_supass;
83
84 /*************************************************************************/
85
86 /* Safe memory allocation and string duplication. */
87 extern void *smalloc(long size);
88 extern void *scalloc(long els, long elsize);
89 extern void *srealloc(void *ptr, long size);
90 extern char *sstrdup(const char *s);
91 /* Initialize or clear a Password structure. */
92 extern void init_password(Password *password);
93 extern void clear_password(Password *password);
94
95 /* Allocate a new, initialized NickInfo (and possibly NickGroupInfo)
96 * structure. */
97 extern NickInfo *makenick(const char *nick, NickGroupInfo **nickgroup_ret);
98 /* Allocate a new, initialized ChannelInfo structure. */
99 extern ChannelInfo *makechan(const char *name);
100
101 /* Open a (Services pre-5.0 style) data file and check the version number.
102 * Prints an error message and exits with 1 if either the file cannot be
103 * opened or the version number is wrong. If `version_ret' is non-NULL,
104 * the version number is stored there. */
105 extern dbFILE *open_db_ver(const char *dir, const char *name,
106 int32 min_version, int32 max_version,
107 int32 *version_ret);
108
109
110 /* Retrieve the NickGroupInfo structure for the given nick. Returns NULL
111 * if the nick does not exist or is forbidden (i.e. has no NickGroupInfo). */
112 extern NickGroupInfo *get_nickgroupinfo_by_nick(const char *nick);
113
114 /* Set the OperServ privilege level (os_priv) for the nickgroup associated
115 * with `nick' to `level', if it is not already greater than `level'. Does
116 * nothing if `nick' is NULL or does not have an associated nickgroup. */
117 extern void set_os_priv(const char *nick, int16 level);
118
119 /* Return the Services 5.0 channel access level that corresponds to the
120 * given pre-5.0 level. */
121 extern int16 convert_acclev(int16 old);
122
123 /* Add or remove various things to or from the appropriate lists. */
124 #define add_nickgroupinfo(ngi) LIST_INSERT((ngi), ngi_list)
125 #define add_nickinfo(ni) LIST_INSERT((ni), ni_list)
126 #define add_channelinfo(ci) LIST_INSERT((ci), ci_list)
127 #define add_news(news) LIST_INSERT((news), news_list)
128 #define add_maskdata(type,md) LIST_INSERT((md), md_list[(type)])
129 #define add_serverstats(ss) LIST_INSERT((ss), ss_list)
130 #define del_nickgroupinfo(ngi) LIST_REMOVE((ngi), ngi_list)
131 #define del_nickinfo(ni) LIST_REMOVE((ni), ni_list)
132 #define del_channelinfo(ci) LIST_REMOVE((ci), ci_list)
133 #define del_news(news) LIST_REMOVE((news), news_list)
134 #define del_maskdata(type,md) LIST_REMOVE((md), md_list[(type)])
135 #define del_serverstats(ss) LIST_REMOVE((ss), ss_list)
136
137 /*************************************************************************/
138
139 #ifdef CONVERT_DB_MAIN
140
141 /* Macro to handle write errors. */
142 #define SAFE(x) do { \
143 if ((x) < 0) { \
144 fprintf(stderr, "Write error on %s: %s\n", \
145 f->filename, strerror(errno)); \
146 exit(1); \
147 } \
148 } while (0)
149
150 #else /* !CONVERT_DB_MAIN */
151
152 /* Macro to handle read errors. */
153 #define SAFE(x) do { \
154 if ((x) < 0) { \
155 fprintf(stderr, "Read error on %s\n", f->filename); \
156 exit(1); \
157 } \
158 } while (0)
159
160 /* Macro to read in a variable in machine format. */
161 #define read_variable(var,f) (read_db((f),&(var),sizeof(var)) == sizeof(var))
162
163 #endif /* CONVERT_DB_MAIN */
164
165 /*************************************************************************/
166
167 /* Miscellaneous externs. */
168
169 extern void usage(const char *progname);
170
171 /*************************************************************************/
172
173 #endif /* CONVERT_DB_H */
174
175 /*
176 * Local variables:
177 * c-file-style: "stroustrup"
178 * c-file-offsets: ((case-label . *) (statement-case-intro . *))
179 * indent-tabs-mode: nil
180 * End:
181 *
182 * vim: expandtab shiftwidth=4:
183 */