Lines 375-380
parse_config_file(struct configuration *config,
Link Here
|
375 |
char *fields[128]; |
375 |
char *fields[128]; |
376 |
int field_count, line_num, value; |
376 |
int field_count, line_num, value; |
377 |
int res; |
377 |
int res; |
|
|
378 |
int invalid_value; |
378 |
|
379 |
|
379 |
TRACE_IN(parse_config_file); |
380 |
TRACE_IN(parse_config_file); |
380 |
assert(config != NULL); |
381 |
assert(config != NULL); |
Lines 388-393
parse_config_file(struct configuration *config,
Link Here
|
388 |
|
389 |
|
389 |
res = 0; |
390 |
res = 0; |
390 |
line_num = 0; |
391 |
line_num = 0; |
|
|
392 |
invalid_value = 0; |
391 |
memset(buffer, 0, sizeof(buffer)); |
393 |
memset(buffer, 0, sizeof(buffer)); |
392 |
while ((res == 0) && (fgets(buffer, sizeof(buffer) - 1, fin) != NULL)) { |
394 |
while ((res == 0) && (fgets(buffer, sizeof(buffer) - 1, fin) != NULL)) { |
393 |
field_count = strbreak(buffer, fields, sizeof(fields)); |
395 |
field_count = strbreak(buffer, fields, sizeof(fields)); |
Lines 421-432
parse_config_file(struct configuration *config,
Link Here
|
421 |
(strcmp(fields[0], "positive-time-to-live") == 0) && |
423 |
(strcmp(fields[0], "positive-time-to-live") == 0) && |
422 |
(check_cachename(fields[1]) == 0) && |
424 |
(check_cachename(fields[1]) == 0) && |
423 |
((value = get_number(fields[2], 0, -1)) != -1)) { |
425 |
((value = get_number(fields[2], 0, -1)) != -1)) { |
|
|
426 |
if (value <= 0) { |
427 |
invalid_value = 1; |
428 |
break; |
429 |
} |
424 |
set_positive_time_to_live(config, |
430 |
set_positive_time_to_live(config, |
425 |
fields[1], value); |
431 |
fields[1], value); |
426 |
continue; |
432 |
continue; |
427 |
} else if ((field_count == 3) && |
433 |
} else if ((field_count == 3) && |
428 |
(strcmp(fields[0], "positive-confidence-threshold") == 0) && |
434 |
(strcmp(fields[0], "positive-confidence-threshold") == 0) && |
429 |
((value = get_number(fields[2], 1, -1)) != -1)) { |
435 |
((value = get_number(fields[2], 1, -1)) != -1)) { |
|
|
436 |
if (value <= 0) { |
437 |
invalid_value = 1; |
438 |
break; |
439 |
} |
430 |
set_positive_confidence_threshold(config, |
440 |
set_positive_confidence_threshold(config, |
431 |
fields[1], value); |
441 |
fields[1], value); |
432 |
continue; |
442 |
continue; |
Lines 450-461
parse_config_file(struct configuration *config,
Link Here
|
450 |
(strcmp(fields[0], "negative-time-to-live") == 0) && |
460 |
(strcmp(fields[0], "negative-time-to-live") == 0) && |
451 |
(check_cachename(fields[1]) == 0) && |
461 |
(check_cachename(fields[1]) == 0) && |
452 |
((value = get_number(fields[2], 0, -1)) != -1)) { |
462 |
((value = get_number(fields[2], 0, -1)) != -1)) { |
|
|
463 |
if (value <= 0) { |
464 |
invalid_value = 1; |
465 |
break; |
466 |
} |
453 |
set_negative_time_to_live(config, |
467 |
set_negative_time_to_live(config, |
454 |
fields[1], value); |
468 |
fields[1], value); |
455 |
continue; |
469 |
continue; |
456 |
} else if ((field_count == 3) && |
470 |
} else if ((field_count == 3) && |
457 |
(strcmp(fields[0], "negative-confidence-threshold") == 0) && |
471 |
(strcmp(fields[0], "negative-confidence-threshold") == 0) && |
458 |
((value = get_number(fields[2], 1, -1)) != -1)) { |
472 |
((value = get_number(fields[2], 1, -1)) != -1)) { |
|
|
473 |
if (value <= 0) { |
474 |
invalid_value = 1; |
475 |
break; |
476 |
} |
459 |
set_negative_confidence_threshold(config, |
477 |
set_negative_confidence_threshold(config, |
460 |
fields[1], value); |
478 |
fields[1], value); |
461 |
continue; |
479 |
continue; |
Lines 473-478
parse_config_file(struct configuration *config,
Link Here
|
473 |
(strcmp(fields[0], "suggested-size") == 0) && |
491 |
(strcmp(fields[0], "suggested-size") == 0) && |
474 |
(check_cachename(fields[1]) == 0) && |
492 |
(check_cachename(fields[1]) == 0) && |
475 |
((value = get_number(fields[2], 1, -1)) != -1)) { |
493 |
((value = get_number(fields[2], 1, -1)) != -1)) { |
|
|
494 |
if (value <= 0) { |
495 |
invalid_value = 1; |
496 |
break; |
497 |
} |
476 |
set_suggested_size(config, fields[1], value); |
498 |
set_suggested_size(config, fields[1], value); |
477 |
continue; |
499 |
continue; |
478 |
} |
500 |
} |
Lines 490-495
parse_config_file(struct configuration *config,
Link Here
|
490 |
(strcmp(fields[0], "keep-hot-count") == 0) && |
512 |
(strcmp(fields[0], "keep-hot-count") == 0) && |
491 |
(check_cachename(fields[1]) == 0) && |
513 |
(check_cachename(fields[1]) == 0) && |
492 |
((value = get_number(fields[2], 0, -1)) != -1)) { |
514 |
((value = get_number(fields[2], 0, -1)) != -1)) { |
|
|
515 |
if (value < 0) { |
516 |
invalid_value = 1; |
517 |
break; |
518 |
} |
493 |
set_keep_hot_count(config, |
519 |
set_keep_hot_count(config, |
494 |
fields[1], value); |
520 |
fields[1], value); |
495 |
continue; |
521 |
continue; |
Lines 508-517
parse_config_file(struct configuration *config,
Link Here
|
508 |
default: |
534 |
default: |
509 |
break; |
535 |
break; |
510 |
} |
536 |
} |
511 |
|
537 |
if ( invalid_value == 1){ |
512 |
LOG_ERR_2("config file parser", "error in file " |
538 |
LOG_ERR_2("invalid value for configuration", |
513 |
"%s on line %d", fname, line_num); |
539 |
"error in file %s on line %d", |
514 |
*error_str = "syntax error"; |
540 |
fname, line_num); |
|
|
541 |
*error_str = "invalid value"; |
542 |
} |
543 |
else { |
544 |
LOG_ERR_2("config file parser", "error in " |
545 |
"file %s on line %d", fname, line_num); |
546 |
*error_str = "syntax error"; |
547 |
} |
515 |
*error_line = line_num; |
548 |
*error_line = line_num; |
516 |
res = -1; |
549 |
res = -1; |
517 |
} |
550 |
} |