summaryrefslogtreecommitdiffstatsabout
path: root/utility/config.c
diff options
context:
space:
mode:
Diffstat (limited to 'utility/config.c')
-rw-r--r--utility/config.c67
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
27static 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
27static apr_status_t config_set_int(config_t *cfg, config_opt_t *opt, int argc, 39static 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
300void config_init(apr_pool_t *p) 321void 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,