void panic(const char *message) { char panicfile[2048]; FILE *f; log_status("PANIC: %s", message); fprintf(stderr, "PANIC: %s\n", message); /* shut down interface */ if (!forked_dump_process_flag) { emergency_shutdown(); } /* dump panic file */ snprintf(panicfile, sizeof(panicfile), "%s.PANIC", dumpfile); if ((f = fopen(panicfile, "wb")) == NULL) { perror("CANNOT OPEN PANIC FILE, YOU LOSE"); sync(); #ifdef NOCOREDUMP exit(135); #else /* !NOCOREDUMP */ # ifdef SIGIOT signal(SIGIOT, SIG_DFL); # endif abort(); #endif /* NOCOREDUMP */ } else { log_status("DUMPING: %s", panicfile); fprintf(stderr, "DUMPING: %s\n", panicfile); db_write(f); fclose(f); log_status("DUMPING: %s (done)", panicfile); fprintf(stderr, "DUMPING: %s (done)\n", panicfile); } /* Write out the macros */ snprintf(panicfile, sizeof(panicfile), "%s.PANIC", MACRO_FILE); if ((f = fopen(panicfile, "wb")) != NULL) { macrodump(macrotop, f); fclose(f); } else { perror("CANNOT OPEN MACRO PANIC FILE, YOU LOSE"); sync(); #ifdef NOCOREDUMP exit(135); #else /* !NOCOREDUMP */ #ifdef SIGIOT signal(SIGIOT, SIG_DFL); #endif abort(); #endif /* NOCOREDUMP */ } sync(); #ifdef NOCOREDUMP exit(136); #else /* !NOCOREDUMP */ #ifdef SIGIOT signal(SIGIOT, SIG_DFL); #endif abort(); #endif /* NOCOREDUMP */ }
void panic(const char *message) { char panicfile[2048]; FILE *f; log_status("PANIC: %s\n", message); fprintf(stderr, "PANIC: %s\n", message); /* shut down interface */ emergency_shutdown(); /* dump panic file */ sprintf(panicfile, "%s.PANIC", dumpfile); if ((f = fopen(panicfile, "w")) == NULL) { perror("CANNOT OPEN PANIC FILE, YOU LOSE"); #if defined(NOCOREDUMP) || defined(WINNT) _exit(135); #else /* !NOCOREDUMP */ # ifdef SIGIOT signal(SIGIOT, SIG_DFL); # endif abort(); #endif /* NOCOREDUMP */ } else { log_status("DUMP: %s\n", panicfile); fprintf(stderr, "DUMP: %s\n", panicfile); db_write(f); fclose(f); log_status("DUMP: %s (done)\n", panicfile); fprintf(stderr, "DUMP: %s (done)\n", panicfile); (void) unlink(DELTAFILE_NAME); } /* Write out the macros */ sprintf(panicfile, "%s.PANIC", MACRO_FILE); if ((f = fopen(panicfile, "w")) != NULL) { macrodump(macrotop, f); fclose(f); } else { perror("CANNOT OPEN MACRO PANIC FILE, YOU LOSE"); #if defined(NOCOREDUMP) || defined(WINNT) _exit(135); #else /* !NOCOREDUMP */ # ifdef SIGIOT signal(SIGIOT, SIG_DFL); # endif abort(); #endif /* NOCOREDUMP */ } #if defined(NOCOREDUMP) || defined(WINNT) _exit(136); #else /* !NOCOREDUMP */ # ifdef SIGIOT signal(SIGIOT, SIG_DFL); # endif abort(); #endif /* NOCOREDUMP */ }