diff options
Diffstat (limited to 'utility/config.c')
-rw-r--r-- | utility/config.c | 67 |
1 files changed, 55 insertions, 12 deletions
diff --git a/utility/config.c b/utility/config.c index 6d3f61e..b1ba4fa 100644 --- a/utility/config.c +++ b/utility/config.c | |||
@@ -24,6 +24,18 @@ static apr_status_t config_set_string(config_t *cfg, config_opt_t *opt, | |||
24 | return APR_SUCCESS; | 24 | return APR_SUCCESS; |
25 | } | 25 | } |
26 | 26 | ||
27 | static apr_status_t config_set_file(config_t *cfg, config_opt_t *opt, | ||
28 | int argc, const char **argv) | ||
29 | { | ||
30 | int offset = (int)(long)opt->data; | ||
31 | char **data = (char **)((void *)cfg + offset); | ||
32 | if (argc != 2) | ||
33 | return APR_EINVAL; | ||
34 | apr_filepath_merge(data, NULL, argv[1], | ||
35 | APR_FILEPATH_TRUENAME, cfg->pool); | ||
36 | return APR_SUCCESS; | ||
37 | } | ||
38 | |||
27 | static apr_status_t config_set_int(config_t *cfg, config_opt_t *opt, int argc, | 39 | static apr_status_t config_set_int(config_t *cfg, config_opt_t *opt, int argc, |
28 | const char **argv) | 40 | const char **argv) |
29 | { | 41 | { |
@@ -70,7 +82,10 @@ static apr_status_t config_set_inputfile(config_t *cfg, config_opt_t *opt, | |||
70 | if (argc != 2) | 82 | if (argc != 2) |
71 | return APR_EINVAL; | 83 | return APR_EINVAL; |
72 | newp = (config_filestat_t *)apr_array_push(cfg->input_files); | 84 | newp = (config_filestat_t *)apr_array_push(cfg->input_files); |
73 | newp->fname = apr_pstrdup(cfg->pool, argv[1]); | 85 | char *temp; |
86 | apr_filepath_merge(&temp, NULL, argv[1], | ||
87 | APR_FILEPATH_TRUENAME, cfg->pool); | ||
88 | newp->fname = temp; | ||
74 | newp->result = "Not Parsed"; | 89 | newp->result = "Not Parsed"; |
75 | return APR_SUCCESS; | 90 | return APR_SUCCESS; |
76 | } | 91 | } |
@@ -213,6 +228,12 @@ void config_dump(config_t *cfg) | |||
213 | 228 | ||
214 | printf("InputDir: %s\n", cfg->input_dir); | 229 | printf("InputDir: %s\n", cfg->input_dir); |
215 | 230 | ||
231 | printf("Split input files: %d\n", cfg->split_enabled); | ||
232 | printf("Split output directory: %s\n", cfg->split_dir); | ||
233 | printf("Split file count: %d\n", cfg->split_count); | ||
234 | printf("Split min lines: %'d\n", cfg->split_minimum); | ||
235 | printf("Split max lines: %'d\n", cfg->split_maximum); | ||
236 | |||
216 | printf("DB Driver: %s\n", cfg->dbdriver); | 237 | printf("DB Driver: %s\n", cfg->dbdriver); |
217 | printf("DB Params: %s\n", cfg->dbparams); | 238 | printf("DB Params: %s\n", cfg->dbparams); |
218 | 239 | ||
@@ -299,24 +320,42 @@ static void config_add_option(apr_pool_t *p, const char *const name, | |||
299 | 320 | ||
300 | void config_init(apr_pool_t *p) | 321 | void config_init(apr_pool_t *p) |
301 | { | 322 | { |
302 | config_add_option(p, "ErrorLog", "File to log errors", config_set_string, | 323 | config_add_option(p, "ErrorLog", "File to log errors", config_set_file, |
303 | (void *)APR_OFFSETOF(config_t, errorlog)); | 324 | (void *)APR_OFFSETOF(config_t, errorlog)); |
304 | config_add_option(p, "LogLevel", | 325 | config_add_option(p, "LogLevel", "Set Log Level (error, warn, debug, quiet)", |
305 | "Set Log Level (error, warn, debug, quiet)", config_set_loglevel, | 326 | config_set_loglevel, NULL); |
306 | NULL); | ||
307 | 327 | ||
308 | config_add_option(p, "BadLineFile", "File to log bad log lines", config_set_string, | 328 | config_add_option(p, "BadLineFile", "File to log bad log lines", config_set_file, |
309 | (void *)APR_OFFSETOF(config_t, badlinefile)); | 329 | (void *)APR_OFFSETOF(config_t, badlinefile)); |
310 | config_add_option(p, "BadLineMax", | 330 | config_add_option(p, "BadLineMax", "Max number of bad lines before aborting", |
311 | "Max number of bad lines before aborting", config_set_int, | 331 | config_set_int, (void *)APR_OFFSETOF(config_t, badlinemax)); |
312 | (void *)APR_OFFSETOF(config_t, badlinemax)); | ||
313 | 332 | ||
314 | 333 | ||
315 | config_add_option(p, "InputDirectory", "Directory to scan for log files", | 334 | config_add_option(p, "InputDirectory", "Directory to scan for log files", |
316 | config_set_string, (void *)APR_OFFSETOF(config_t, input_dir)); | 335 | config_set_file, (void *)APR_OFFSETOF(config_t, input_dir)); |
317 | config_add_option(p, "InputFile", "Parse only this file", | 336 | config_add_option(p, "InputFile", "Parse only this file", |
318 | config_set_inputfile, NULL); | 337 | config_set_inputfile, NULL); |
319 | 338 | ||
339 | config_add_option(p, "SplitInput", | ||
340 | "Split the file into pieces, then process", | ||
341 | config_set_flag, (void *)APR_OFFSETOF(config_t, split_enabled)); | ||
342 | config_add_option(p, "SplitCount", | ||
343 | "Split the file into N number of pieces", | ||
344 | config_set_int, (void *)APR_OFFSETOF(config_t, split_count)); | ||
345 | config_add_option(p, "SplitMinLines", | ||
346 | "Each split piece will have a minumum of N lines", | ||
347 | config_set_int, (void *)APR_OFFSETOF(config_t, split_minimum)); | ||
348 | config_add_option(p, "SplitMaxLines", | ||
349 | "Each split piece will have a maximum of N lines", | ||
350 | config_set_int, (void *)APR_OFFSETOF(config_t, split_maximum)); | ||
351 | config_add_option(p, "SplitDirectory", | ||
352 | "Output directory to put intermediate split files", | ||
353 | config_set_file, (void *)APR_OFFSETOF(config_t, split_dir)); | ||
354 | |||
355 | config_add_option(p, "ThreadCount", | ||
356 | "Numer of threads to use for processing the input files", | ||
357 | config_set_int, (void *)APR_OFFSETOF(config_t, thread_count)); | ||
358 | |||
320 | config_add_option(p, "DBDDriver", "DBD Driver to use", | 359 | config_add_option(p, "DBDDriver", "DBD Driver to use", |
321 | config_set_string, (void *)APR_OFFSETOF(config_t, dbdriver)); | 360 | config_set_string, (void *)APR_OFFSETOF(config_t, dbdriver)); |
322 | config_add_option(p, "DBDParams", "DBD Connection Parameters", | 361 | config_add_option(p, "DBDParams", "DBD Connection Parameters", |
@@ -325,8 +364,8 @@ void config_init(apr_pool_t *p) | |||
325 | config_set_string, (void *)APR_OFFSETOF(config_t, table)); | 364 | config_set_string, (void *)APR_OFFSETOF(config_t, table)); |
326 | config_add_option(p, "UseTransactions", "Enable Transactions?", | 365 | config_add_option(p, "UseTransactions", "Enable Transactions?", |
327 | config_set_flag, (void *)APR_OFFSETOF(config_t, transactions)); | 366 | config_set_flag, (void *)APR_OFFSETOF(config_t, transactions)); |
328 | config_add_option(p, "MachineID", "Machine ID to set", config_set_string, | 367 | config_add_option(p, "MachineID", "Machine ID to set", |
329 | (void *)APR_OFFSETOF(config_t, machineid)); | 368 | config_set_string, (void *)APR_OFFSETOF(config_t, machineid)); |
330 | 369 | ||
331 | config_add_option(p, "LogFormatConfig", "Define input log formats", | 370 | config_add_option(p, "LogFormatConfig", "Define input log formats", |
332 | config_set_logformat, NULL); | 371 | config_set_logformat, NULL); |
@@ -367,6 +406,10 @@ config_t *config_create(apr_pool_t *p) | |||
367 | cfg->loglevel = LOGLEVEL_ERROR; | 406 | cfg->loglevel = LOGLEVEL_ERROR; |
368 | cfg->summary = 1; | 407 | cfg->summary = 1; |
369 | cfg->transactions = 1; | 408 | cfg->transactions = 1; |
409 | cfg->thread_count = 1; // default one thread (aka non-threaded) | ||
410 | cfg->split_count = 4; | ||
411 | cfg->split_minimum = 10000; | ||
412 | cfg->split_maximum = 50000; | ||
370 | cfg->input_files = apr_array_make(cfg->pool, 2, sizeof(config_filestat_t)); | 413 | cfg->input_files = apr_array_make(cfg->pool, 2, sizeof(config_filestat_t)); |
371 | cfg->log_formats = apr_hash_make(cfg->pool); | 414 | cfg->log_formats = apr_hash_make(cfg->pool); |
372 | cfg->output_fields = apr_array_make(cfg->pool, 10, | 415 | cfg->output_fields = apr_array_make(cfg->pool, 10, |