"Fossies" - the Fresh Open Source Software Archive 
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style:
standard) with prefixed line numbers and
code folding option.
Alternatively you can here
view or
download the uninterpreted source code file.
1 /* $Id: mod_log_sql.h 142 2004-07-16 01:33:59Z urkle@drip.ws $ */
2
3 #ifndef MOD_LOG_SQL_H
4 #define MOD_LOG_SQL_H
5
6 /* Create a set of LOGSQL_DECLARE(type), LOGSQL_DECLARE_NONSTD(type) and
7 * LOGSQL_DECLARE_DATA with appropriate export and import tags for the platform
8 */
9 #if !defined(WIN32)
10 #define LOGSQL_DECLARE(type) type
11 #define LOGSQL_DECLARE_NONSTD(type) type
12 #define LOGSQL_DECLARE_DATA
13 #elif defined(LOGSQL_DECLARE_STATIC)
14 #define LOGSQL_DECLARE(type) type __stdcall
15 #define LOGSQL_DECLARE_NONSTD(type) type
16 #define LOGSQL_DECLARE_DATA
17 #elif defined(LOGSQL_DECLARE_EXPORT)
18 #define LOGSQL_DECLARE(type) __declspec(dllexport) type __stdcall
19 #define LOGSQL_DECLARE_NONSTD(type) __declspec(dllexport) type
20 #define LOGSQL_DECLARE_DATA __declspec(dllexport)
21 #else
22 #define LOGSQL_DECLARE(type) __declspec(dllimport) type __stdcall
23 #define LOGSQL_DECLARE_NONSTD(type) __declspec(dllimport) type
24 #define LOGSQL_DECLARE_DATA __declspec(dllimport)
25 #endif
26
27 /* Registration function for extract functions */
28
29 typedef const char *logsql_item_func(request_rec *r, char *a);
30
31 LOGSQL_DECLARE(void) log_sql_register_item(server_rec *s, apr_pool_t *p,
32 char key, logsql_item_func *func, const char *sql_field_name,
33 int want_orig_default, int string_contents);
34
35 /* DB Connection structure holds connection handle */
36 typedef struct {
37 int connected; /* Are we connected to the DB */
38 void *handle; /* DB specific connection pointer */
39 apr_pool_t *p; /* Pool to allocate handle off of */
40 apr_table_t *parms; /* DB connection parameters */
41 } logsql_dbconnection;
42
43 /* open db handle return values*/
44 typedef enum {
45 LOGSQL_OPENDB_FAIL = 0,
46 LOGSQL_OPENDB_SUCCESS,
47 LOGSQL_OPENDB_ALREADY,
48 LOGSQL_OPENDB_PRESERVE
49 } logsql_opendb_ret;
50
51 typedef enum {
52 LOGSQL_QUERY_SUCCESS = 0,
53 LOGSQL_QUERY_FAIL,
54 LOGSQL_QUERY_NOLINK,
55 LOGSQL_QUERY_NOTABLE,
56 LOGSQL_QUERY_PRESERVED
57 } logsql_query_ret;
58
59 typedef enum {
60 LOGSQL_TABLE_SUCCESS = 0,
61 LOGSQL_TABLE_FAIL
62 } logsql_table_ret;
63
64 /* Table type to create/log to */
65 typedef enum {
66 LOGSQL_TABLE_ACCESS = 0,
67 LOGSQL_TABLE_NOTES,
68 LOGSQL_TABLE_HEADERSOUT,
69 LOGSQL_TABLE_HEADERSIN,
70 LOGSQL_TABLE_COOKIES
71 } logsql_tabletype;
72
73 /* All Tables */
74 #define LOGSQL_TABLE_ALL LOGSQL_TABLE_ACCESS | LOGSQL_TABLE_NOTES | \
75 LOGSQL_TABLE_HEADERSIN | LOGSQL_TABLE_HEADERSOUT | LOGSQL_TABLE_COOKIES
76
77 /* MySQL module calls */
78
79 /* Registration function for database drivers */
80
81 typedef struct {
82 /* name of the provider */
83 const char *providername;
84 /* NULL terminated list of drivers strings */
85 const char **provided_drivers;
86 /* create a connection to the underlying database layer */
87 logsql_opendb_ret (*connect)(server_rec *s, logsql_dbconnection *db);
88 /* disconnect from the underlying database layer */
89 void (*disconnect)(logsql_dbconnection *db);
90 /* escape the SQL statement according to database rules */
91 const char *(*escape)(const char *from_str, apr_pool_t *p,
92 logsql_dbconnection *db);
93 /* insert a SQL query statement */
94 logsql_query_ret (*insert)(request_rec *r,logsql_dbconnection *db,
95 const char *query);
96 /* create a SQL table named table_name of table_type */
97 logsql_table_ret (*create_table)(request_rec *r, logsql_dbconnection *db,
98 logsql_tabletype table_type, const char *table_name);
99 } logsql_dbdriver;
100
101 LOGSQL_DECLARE(void) log_sql_register_driver(apr_pool_t *p,
102 logsql_dbdriver *driver);
103
104 /* Module initialization Macros */
105 #if defined(WITH_APACHE20)
106 # define LOGSQL_REGISTER(driver) \
107 static int post_config(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s); \
108 static void register_hooks(apr_pool_t *p) { \
109 ap_hook_post_config(post_config, NULL, NULL, APR_HOOK_REALLY_FIRST); \
110 } \
111 \
112 module AP_MODULE_DECLARE_DATA log_sql_##driver##_module = { \
113 STANDARD20_MODULE_STUFF, \
114 NULL, NULL, NULL, NULL, NULL, register_hooks }; \
115 static int post_config(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s)
116 #elif defined(WITH_APACHE13)
117 # define LOGSQL_REGISTER(driver) \
118 static void module_init(server_rec *s, apr_pool_t *p); \
119 module MODULE_VAR_EXPORT log_sql_##driver##_module = { \
120 STANDARD_MODULE_STUFF, module_init }; \
121 static void module_init(server_rec *s, apr_pool_t *p)
122 #endif
123
124 #if defined(WITH_APACHE20)
125 # define LOGSQL_SHUTDOWN \
126 static
127 #endif
128
129
130 #if defined(WITH_APACHE20)
131 #define LOGSQL_REGISTER_RETURN return OK;
132 #elif defined(WITH_APACHE13)
133 #define LOGSQL_REGISTER_RETURN
134 #endif
135
136 #endif /* MOD_LOG_SQL_H */