]> jfr.im git - irc/quakenet/newserv.git/blame - dbapi2/dbapi2.h
Fix off by one bug in dbvsnprintf, convert noperserv to use safe queries.
[irc/quakenet/newserv.git] / dbapi2 / dbapi2.h
CommitLineData
404d307c
CP
1#ifndef __DBAPI2_H
2#define __DBAPI2_H
3
4#define DBNAME_LEN 100
5
39c33a3d
CP
6#include "../config.h"
7
404d307c 8#define DBAPI2_DEFAULT NULL
404d307c
CP
9
10#include <stdlib.h>
adf9e9ea 11#include <stdarg.h>
404d307c
CP
12
13struct DBAPIConn;
14
15#ifndef DBAPI2_HANDLE
16#define DBAPI2_HANDLE void
17#endif
18
adf9e9ea
CP
19#ifndef DBAPI2_RESULT_HANDLE
20#define DBAPI2_RESULT_HANDLE void
21#endif
22
404d307c
CP
23typedef void *DBAPIUserData;
24
25struct DBAPIResult;
26
4a532778 27typedef DBAPI2_HANDLE *(*DBAPINew)(const struct DBAPIConn *);
404d307c
CP
28typedef void (*DBAPIClose)(struct DBAPIConn *);
29
4a532778 30typedef void (*DBAPIQueryCallback)(const struct DBAPIResult *, void *);
404d307c 31
4a532778
CP
32typedef void (*DBAPIQuery)(const struct DBAPIConn *, DBAPIQueryCallback, DBAPIUserData, const char *, ...) __attribute__ ((format (printf, 4, 5)));
33typedef void (*DBAPISimpleQuery)(const struct DBAPIConn *, const char *, ...) __attribute__ ((format (printf, 2, 3)));
24e1aba8 34typedef void (*DBAPIQueryV)(const struct DBAPIConn *, DBAPIQueryCallback, DBAPIUserData, const char *);
4a532778 35typedef void (*DBAPICreateTable)(const struct DBAPIConn *, DBAPIQueryCallback, DBAPIUserData, const char *, ...) __attribute__ ((format (printf, 4, 5)));
24e1aba8 36typedef void (*DBAPICreateTableV)(const struct DBAPIConn *, DBAPIQueryCallback, DBAPIUserData, const char *);
4a532778 37typedef void (*DBAPILoadTable)(const struct DBAPIConn *, DBAPIQueryCallback, DBAPIQueryCallback, DBAPIQueryCallback, DBAPIUserData, const char *);
404d307c 38
4a532778 39typedef void (*DBAPISafeQuery)(const struct DBAPIConn *, DBAPIQueryCallback, DBAPIUserData, const char *, const char *, ...);
4a532778 40typedef void (*DBAPISafeSimpleQuery)(const struct DBAPIConn *, const char *, const char *, ...);
24e1aba8 41typedef void (*DBAPISafeCreateTable)(const struct DBAPIConn *, DBAPIQueryCallback, DBAPIUserData, const char *, const char *, ...);
404d307c 42
4a532778
CP
43typedef void (*DBAPIEscapeString)(const struct DBAPIConn *, char *, const char *, size_t);
44typedef int (*DBAPIQuoteString)(const struct DBAPIConn *, char *, size_t, const char *, size_t);
404d307c 45
4a532778 46typedef char *(*DBAPITableName)(const struct DBAPIConn *, const char *);
4277aef7 47
404d307c
CP
48struct DBAPIProviderData;
49
50typedef struct DBAPIProvider {
51 DBAPINew new;
52 DBAPIClose close;
53
adf9e9ea 54 DBAPIQueryV query;
24e1aba8 55 DBAPICreateTableV createtable;
404d307c 56 DBAPILoadTable loadtable;
4277aef7
CP
57
58 DBAPITableName tablename;
59
404d307c
CP
60 DBAPIEscapeString escapestring;
61 DBAPIQuoteString quotestring;
62
63/* private members */
64 struct DBAPIProviderData *__providerdata;
65} DBAPIProvider;
66
67typedef struct DBAPIConn {
68 DBAPIClose close;
69
70 DBAPIQuery query;
adf9e9ea 71 DBAPISimpleQuery squery;
404d307c
CP
72 DBAPICreateTable createtable;
73 DBAPILoadTable loadtable;
74 DBAPIEscapeString escapestring; /* deprecated */
4277aef7 75 DBAPITableName tablename;
404d307c 76
24e1aba8
CP
77 DBAPISafeQuery safequery;
78 DBAPISafeSimpleQuery safesquery;
79 DBAPISafeCreateTable safecreatetable;
80
404d307c
CP
81 char name[DBNAME_LEN+1];
82
83 void *handle;
84
85/* private members */
86 DBAPIClose __close;
87 DBAPIQuoteString __quotestring;
adf9e9ea 88 DBAPIQueryV __query;
24e1aba8 89 DBAPICreateTableV __createtable;
404d307c
CP
90} DBAPIConn;
91
4a532778
CP
92typedef char *(*DBAPIResultGet)(const struct DBAPIResult *, unsigned int);
93typedef int (*DBAPIResultNext)(const struct DBAPIResult *);
94typedef void (*DBAPIResultClear)(const struct DBAPIResult *);
adf9e9ea
CP
95
96typedef struct DBAPIResult {
97 DBAPI2_RESULT_HANDLE *handle;
98
99 unsigned short success, fields;
100
101 DBAPIResultGet get;
102 DBAPIResultNext next;
103 DBAPIResultClear clear;
104} DBAPIResult;
105
404d307c
CP
106int registerdbprovider(const char *, DBAPIProvider *);
107void deregisterdbprovider(int);
39c33a3d 108DBAPIConn *dbapi2open(const char *, const char *);
404d307c 109
404d307c 110#endif