/* exported */ bool process_config_files(bool warn_on_error) { bool ok = true; const char *env = getenv("BOGOTEST"); if (!suppress_config_file) { if (!read_config_file(system_config_file, false, warn_on_error, PR_CFG_SITE)) ok = false; if (!read_config_file(user_config_file, true, warn_on_error, PR_CFG_USER)) ok = false; } if (env) set_bogotest(env); return ok; }
int process_arg(int option, const char *name, const char *val, priority_t precedence, arg_pass_t pass) { int count = 0; (void) precedence; /* suppress compiler warning */ (void) pass; /* suppress compiler warning */ switch (option) { case '?': fprintf(stderr, "Unknown option '%s'.\n", name); break; case 'd': flag = M_DUMP; count += 1; ds_file = val; break; case O_CONFIG_FILE: read_config_file(val, false, false, PR_COMMAND, longopts_bogoutil); /*@fallthrough@*/ /* fall through to suppress reading config files */ case 'C': suppress_config_file = true; break; case 'k': db_cachesize=(uint) atoi(val); break; case 'l': flag = M_LOAD; count += 1; ds_file = val; break; case 'm': flag = M_MAINTAIN; count += 1; ds_file = val; break; case 'p': prob = true; /*@fallthrough@*/ case 'w': flag = M_WORD; count += 1; ds_file = val; break; case O_DB_PRINT_LEAFPAGE_COUNT: flag = M_LEAFPAGES; count += 1; ds_file = val; break; case O_DB_PRINT_PAGESIZE: flag = M_PAGESIZE; count += 1; ds_file = val; break; case 'r': onlyprint = true; case 'R': flag = M_ROBX; count += 1; ds_file = val; break; case 'u': upgrade_wordlist_version = true; flag = M_MAINTAIN; count += 1; ds_file = val; break; case 'v': verbose++; break; case ':': fprintf(stderr, "Option %s requires an argument.\n", name); exit(EX_ERROR); case 'h': help(stdout); exit(EX_OK); case 'H': flag = M_HIST; count += 1; ds_file = val; break; case 'V': print_version(); exit(EX_OK); case 'x': set_debug_mask(val); break; case 'X': set_bogotest(val); break; case 'a': maintain = true; thresh_date = string_to_date(val); break; case 'c': maintain = true; thresh_count = (uint) atoi(val); break; case 's': { unsigned long mi, ma; maintain = true; if (2 == sscanf(val, "%lu,%lu", &mi, &ma)) { size_min = mi; size_max = ma; } else { fprintf(stderr, "syntax error in argument \"%s\" of -s\n.", val); exit(EX_ERROR); } } break; case 'n': maintain = true; replace_nonascii_characters ^= true; break; case 'y': /* date as YYYYMMDD */ { YYYYMMDD date = string_to_date(val); maintain = true; if (date != 0 && date < 19990000) { fprintf(stderr, "Date format for '-y' option is YYYYMMDD\n"); exit(EX_ERROR); } set_date( date ); break; } case 'I': fpin = fopen(val, "r"); if (fpin == NULL) { fprintf(stderr, "Can't read file '%s'\n", val); exit(EX_ERROR); } break; case 'O': fpo = fopen(val, "wt"); if (fpo == NULL) { fprintf(stderr, "Can't write file '%s'\n", val); exit(EX_ERROR); } break; case 'D': dbgout = stdout; break; case O_DB_VERIFY: flag = M_VERIFY; count += 1; ds_file = val; break; case O_UNICODE: encoding = str_to_bool(val) ? E_UNICODE : E_RAW; break; case O_MAX_TOKEN_LEN: max_token_len = atoi(val); break; case O_MIN_TOKEN_LEN: min_token_len = atoi(val); break; case O_MAX_MULTI_TOKEN_LEN: max_multi_token_len=atoi(val); break; case O_MULTI_TOKEN_COUNT: multi_token_count=atoi(val); break; default: if (!dsm_options_bogoutil(option, &flag, &count, &ds_file, name, val)) { fprintf(stderr, "Invalid option '%s'\n", name); exit(EX_ERROR); } } return count; }
int process_arg(int option, const char *name, const char *val, priority_t precedence, arg_pass_t pass) { //pass = 0; /* suppress compiler warning */ switch (option) { case ':': fprintf(stderr, "Option %s requires an argument.\n", name); exit(EX_ERROR); case '?': fprintf(stderr, "Unknown option '%s'.\n", name); break; case 'c': case O_CONFIG_FILE: read_config_file(val, false, false, precedence, longopts_bogolexer); /*@fallthrough@*/ /* fall through to suppress reading config files */ case 'C': suppress_config_file = true; break; case O_USER_CONFIG_FILE: user_config_file = get_string(name, val); break; case 'D': dbgout = stdout; break; case 'h': help(); exit(EX_OK); case 'H': header_line_markup = false; break; case 'I': bogoreader_name(val); break; case 'O': fpo = fopen(val, "wt"); if (fpo == NULL) { fprintf(stderr, "Can't write file '%s'\n", val); exit(EX_ERROR); } break; case 'n': replace_nonascii_characters = true; break; case O_CHARSET_DEFAULT: charset_default = get_string(name, val); break; case O_UNICODE: encoding = get_bool(name, val) ? E_UNICODE : E_RAW; break; case O_REPLACE_NONASCII_CHARACTERS: replace_nonascii_characters = get_bool(name, val); break; case 'p': passthrough = true; break; case 'q': quiet = true; break; case 'v': verbose += 1; break; case 'V': print_version(); exit(EX_OK); case 'x': set_debug_mask(val); break; case 'X': set_bogotest(val); break; case O_BLOCK_ON_SUBNETS: block_on_subnets = get_bool(name, val); break; case O_MAX_TOKEN_LEN: max_token_len = atoi(val); break; case O_MIN_TOKEN_LEN: min_token_len = atoi(val); break; case O_MAX_MULTI_TOKEN_LEN: max_multi_token_len=atoi(val); break; case O_MULTI_TOKEN_COUNT: multi_token_count=atoi(val); break; default: /* config file options: ** ok - if from config file ** error - if on command line */ if (pass == PASS_2_CFG) { fprintf(stderr, "Invalid option '%s'.\n", name); exit(EX_ERROR); } } return 0; }