/* See the comment in recovery.h on how the "save" parameter is used */ void rec_done(int save) { if (!rec_file) return; /* * If we're the main process for a --fork'ed group of children, leave our .rec * file around until the children terminate (at which time we may be called * again with save < 0, meaning forced non-saving). */ if (!save && options.fork && john_main_process) { rec_save(); return; } if (save > 0) rec_save(); else log_flush(); if (fclose(rec_file)) pexit("fclose"); rec_file = NULL; if ((!save || save == -1) && unlink(path_expand(rec_name))) pexit("unlink: %s", path_expand(rec_name)); }
/* See the comment in recovery.h on how the "save" parameter is used */ void rec_done(int save) { if (!rec_file) return; /* * If we're the main process for a --fork'ed group of children, leave our .rec * file around until the children terminate (at which time we may be called * again with save < 0, meaning forced non-saving). */ #ifndef HAVE_MPI if (!save && options.fork && john_main_process) { #else if (!save && (options.fork || mpi_p > 1) && john_main_process) { #endif rec_save(); return; } if (save > 0) rec_save(); else log_flush(); if (fclose(rec_file)) pexit("fclose"); rec_file = NULL; if ((!save || save == -1) && unlink(path_expand(rec_name))) pexit("unlink: %s", path_expand(rec_name)); } static void rec_format_error(char *fn) { path_done(); cleanup_tiny_memory(); /* * MEMDBG_PROGRAM_EXIT_CHECKS() would cause the output * At Program Exit * MemDbg_Validate level 0 checking Passed * to be writen prior to the * Incorrect crash recovery file: ... * output. * Not sure if we want this. */ // MEMDBG_PROGRAM_EXIT_CHECKS(stderr); // FIXME if (fn && errno && ferror(rec_file)) pexit("%s", fn); else { fprintf(stderr, "Incorrect crash recovery file: %s\n", path_expand(rec_name)); error(); } }