From 1415cc4f58be08f90e646096cbf7e229a92faea5 Mon Sep 17 00:00:00 2001 From: Edward Rudd Date: Sat, 20 Oct 2007 13:18:20 +0000 Subject: updated with new code to allow better dynamic configuration of logged fields --- (limited to 'mod_log_sql.h') diff --git a/mod_log_sql.h b/mod_log_sql.h index 6bcd6cb..2d20374 100644 --- a/mod_log_sql.h +++ b/mod_log_sql.h @@ -24,13 +24,40 @@ #define LOGSQL_DECLARE_DATA __declspec(dllimport) #endif +#define LOG_SQL_PLUGIN_VERSION 20070704 + /* Registration function for extract functions */ typedef const char *logsql_item_func(request_rec *r, char *a); -LOGSQL_DECLARE(void) log_sql_register_item(server_rec *s, apr_pool_t *p, - char key, logsql_item_func *func, const char *sql_field_name, - int want_orig_default, int string_contents); + +typedef enum { + LOGSQL_FUNCTION_REQ_FINAL = 0, + LOGSQL_FUNCTION_REQ_ORIG +} logsql_function_req; + +LOGSQL_DECLARE(void) log_sql_register_function(apr_pool_t *p, + const char *alias, logsql_item_func *func, + logsql_function_req want_orig_default); + +LOGSQL_DECLARE(void) log_sql_register_alias(server_rec *s, apr_pool_t *p, + char key, const char *alias); + +typedef enum { + LOGSQL_DATATYPE_INT = 0, + LOGSQL_DATATYPE_SMALLINT, + LOGSQL_DATATYPE_VARCHAR, + LOGSQL_DATATYPE_CHAR, + LOGSQL_DATATYPE_BIGINT +} logsql_field_datatype; + +LOGSQL_DECLARE(void) log_sql_register_field(apr_pool_t *p, + const char *alias, + const char *funcalias, const char *param, + const char *sql_field_name, + logsql_field_datatype datatype, apr_size_t size); + +LOGSQL_DECLARE(void) log_sql_register_finish(server_rec *s); /* DB Connection structure holds connection handle */ typedef struct { @@ -88,7 +115,7 @@ typedef struct { /* disconnect from the underlying database layer */ void (*disconnect)(logsql_dbconnection *db); /* escape the SQL statement according to database rules */ - const char *(*escape)(const char *from_str, apr_pool_t *p, + const char *(*escape)(const char *from_str, apr_pool_t *p, logsql_dbconnection *db); /* insert a SQL query statement */ logsql_query_ret (*insert)(request_rec *r,logsql_dbconnection *db, @@ -102,35 +129,38 @@ LOGSQL_DECLARE(void) log_sql_register_driver(apr_pool_t *p, logsql_dbdriver *driver); /* Module initialization Macros */ +#define LOGSQL_MODULE(driver) log_sql_##driver##_module #if defined(WITH_APACHE20) +# define LOGSQL_MODULE_FORWARD(driver) module AP_MODULE_DECLARE_DATA LOGSQL_MODULE(driver) # define LOGSQL_REGISTER(driver) \ static int post_config(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s); \ static void register_hooks(apr_pool_t *p) { \ ap_hook_post_config(post_config, NULL, NULL, APR_HOOK_REALLY_FIRST); \ } \ \ - module AP_MODULE_DECLARE_DATA log_sql_##driver##_module = { \ + LOGSQL_MODULE_FORWARD(driver) = { \ STANDARD20_MODULE_STUFF, \ NULL, NULL, NULL, NULL, NULL, register_hooks }; \ static int post_config(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s) #elif defined(WITH_APACHE13) +# define LOGSQL_MODULE_FORWARD(driver) module MODULE_VAR_EXPORT LOGSQL_MODULE(driver) # define LOGSQL_REGISTER(driver) \ static void module_init(server_rec *s, apr_pool_t *p); \ - module MODULE_VAR_EXPORT log_sql_##driver##_module = { \ + LOGSQL_MODULE_FORWARD(driver) = { \ STANDARD_MODULE_STUFF, module_init }; \ static void module_init(server_rec *s, apr_pool_t *p) #endif #if defined(WITH_APACHE20) # define LOGSQL_SHUTDOWN \ - static + static #endif #if defined(WITH_APACHE20) -#define LOGSQL_REGISTER_RETURN return OK; +#define LOGSQL_REGISTER_RETURN log_sql_register_finish(s); return OK; #elif defined(WITH_APACHE13) -#define LOGSQL_REGISTER_RETURN +#define LOGSQL_REGISTER_RETURN log_sql_register_finish(s); #endif #endif /* MOD_LOG_SQL_H */ -- cgit v0.9.2