static void john_init(char *name, int argc, char **argv) { int make_check = (argc == 2 && !strcmp(argv[1], "--make_check")); if (make_check) argv[1] = "--test=0"; #if CPU_DETECT if (!CPU_detect()) { #if CPU_REQ #if CPU_FALLBACK #if defined(__DJGPP__) || defined(__CYGWIN32__) #error CPU_FALLBACK is incompatible with the current DOS and Win32 code #endif if (!make_check) { #define CPU_FALLBACK_PATHNAME JOHN_SYSTEMWIDE_EXEC "/" CPU_FALLBACK_BINARY execv(CPU_FALLBACK_PATHNAME, argv); perror("execv: " CPU_FALLBACK_PATHNAME); } #endif fprintf(stderr, "Sorry, %s is required\n", CPU_NAME); if (make_check) exit(0); error(); #endif } #endif if (!make_check) { path_init(argv); status_init(NULL, 1); opt_init(name, argc, argv); if (options.flags & FLG_CONFIG_CLI) { cfg_init(options.config, 1); cfg_init(CFG_ALT_NAME, 0); } else { #if JOHN_SYSTEMWIDE cfg_init(CFG_PRIVATE_FULL_NAME, 1); cfg_init(CFG_PRIVATE_ALT_NAME, 1); #endif cfg_init(CFG_FULL_NAME, 1); cfg_init(CFG_ALT_NAME, 0); } } john_register_all(); common_init(); sig_init(); john_load(); }
static void CPU_detect_or_fallback(char **argv, int make_check) { if (!CPU_detect()) { #if CPU_REQ #if CPU_FALLBACK #if defined(__DJGPP__) || defined(__CYGWIN32__) #error CPU_FALLBACK is incompatible with the current DOS and Win32 code #endif if (!make_check) { #define CPU_FALLBACK_PATHNAME JOHN_SYSTEMWIDE_EXEC "/" CPU_FALLBACK_BINARY execv(CPU_FALLBACK_PATHNAME, argv); perror("execv: " CPU_FALLBACK_PATHNAME); } #endif fprintf(stderr, "Sorry, %s is required\n", CPU_NAME); if (make_check) exit(0); error(); #endif } }