summaryrefslogtreecommitdiffstatsabout
path: root/utility/config.h
diff options
context:
space:
mode:
Diffstat (limited to 'utility/config.h')
-rw-r--r--utility/config.h59
1 files changed, 49 insertions, 10 deletions
diff --git a/utility/config.h b/utility/config.h
index e1827fe..67f8ea5 100644
--- a/utility/config.h
+++ b/utility/config.h
@@ -5,6 +5,8 @@
5#include "apr_hash.h" 5#include "apr_hash.h"
6#include "apr_file_io.h" 6#include "apr_file_io.h"
7 7
8#include "ap_pcre.h"
9
8typedef enum { 10typedef enum {
9 LOGLEVEL_QUIET = 0, 11 LOGLEVEL_QUIET = 0,
10 LOGLEVEL_ERROR = 1, 12 LOGLEVEL_ERROR = 1,
@@ -12,7 +14,8 @@ typedef enum {
12 LOGLEVEL_DEBUG = 3, 14 LOGLEVEL_DEBUG = 3,
13} loglevel_e; 15} loglevel_e;
14 16
15typedef struct { 17typedef struct config_t config_t;
18struct config_t {
16 /** the structures pool (to ease function arguments) */ 19 /** the structures pool (to ease function arguments) */
17 apr_pool_t *pool; 20 apr_pool_t *pool;
18 21
@@ -46,29 +49,33 @@ typedef struct {
46 apr_array_header_t *output_fields; 49 apr_array_header_t *output_fields;
47 50
48 /** filter configuration */ 51 /** filter configuration */
49 apr_array_header_t *filters; 52 apr_array_header_t *linefilters;
53 apr_array_header_t *prefilters;
54 apr_array_header_t *postfilters;
50 55
51 /** Dry Run */ 56 /** Dry Run */
52 int dryrun; 57 int dryrun;
53 58
54 /* Show the summary */ 59 /* Show the summary */
55 int summary; 60 int summary;
56} config_t; 61};
62
57 63
58typedef struct { 64typedef struct config_logformat_t config_logformat_t;
65struct config_logformat_t {
59 const char *name; 66 const char *name;
60 apr_array_header_t *fields; 67 apr_array_header_t *fields;
61} config_logformat_t; 68};
62 69
63typedef struct { 70typedef struct config_logformat_field_t config_logformat_field_t;
71struct config_logformat_field_t {
64 const char *name; 72 const char *name;
65 const char *datatype; 73 const char *datatype;
66} config_logformat_field_t; 74};
67 75
68typedef struct config_opt_t config_opt_t; 76typedef struct config_opt_t config_opt_t;
69typedef apr_status_t (*config_func_t)(config_t *cfg, config_opt_t *opt, 77typedef apr_status_t (*config_func_t)(config_t *cfg, config_opt_t *opt,
70 int argc, const char **argv); 78 int argc, const char **argv);
71
72struct config_opt_t { 79struct config_opt_t {
73 const char *name; 80 const char *name;
74 const char *help; 81 const char *help;
@@ -76,6 +83,40 @@ struct config_opt_t {
76 void *data; 83 void *data;
77}; 84};
78 85
86typedef struct config_filter_t config_filter_t;
87struct config_filter_t {
88 const char *field;
89 const char *filter;
90 int negative;
91 ap_regex_t *regex;
92};
93
94typedef enum {
95 LOGSQL_DATATYPE_INT = 0,
96 LOGSQL_DATATYPE_SMALLINT,
97 LOGSQL_DATATYPE_VARCHAR,
98 LOGSQL_DATATYPE_CHAR,
99 LOGSQL_DATATYPE_BIGINT
100} logsql_field_datatype;
101#define logsql_field_datatyeName(x) \
102 (x == LOGSQL_DATATYPE_INT ? "INT" \
103 : (x == LOGSQL_DATATYPE_SMALLINT ? "SMALLINT" \
104 : (x == LOGSQL_DATATYPE_VARCHAR ? "VARCHAR" \
105 : (x == LOGSQL_DATATYPE_CHAR ? "CHAR" \
106 : (x == LOGSQL_DATATYPE_BIGINT ? "BIGINT" : "ERR")))))
107
108typedef struct config_output_field_t config_output_field_t;
109
110struct config_output_field_t {
111 const char *field;
112 logsql_field_datatype datatype;
113 apr_size_t size;
114 const char *source;
115 const char *fname;
116 void *func;
117 const char **args;
118};
119
79#define CHECK_YESNO(c) ((!strcasecmp(c,"on") || !strcasecmp(c,"yes")) ? 1 : 0) 120#define CHECK_YESNO(c) ((!strcasecmp(c,"on") || !strcasecmp(c,"yes")) ? 1 : 0)
80 121
81/** 122/**
@@ -99,6 +140,4 @@ config_t *config_create(apr_pool_t *p);
99apr_status_t config_read(config_t *cfg, const char *filename, 140apr_status_t config_read(config_t *cfg, const char *filename,
100 apr_table_t *merge); 141 apr_table_t *merge);
101 142
102void config_generate(const char *filename);
103
104#endif /*CONFIG_H_*/ 143#endif /*CONFIG_H_*/