From: jwalz Date: Sat, 5 Jan 2002 21:06:00 +0000 (+0000) Subject: *** empty log message *** X-Git-Tag: MOVE2GIT~3626 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8fea94b8a12dc4dceb4367426cd396b408fe91d3;p=nethack *** empty log message *** --- diff --git a/util/panic.c b/util/panic.c new file mode 100644 index 000000000..930311c32 --- /dev/null +++ b/util/panic.c @@ -0,0 +1,61 @@ +/* SCCS Id: @(#)panic.c 3.3 94/03/02 */ +/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ +/* NetHack may be freely redistributed. See license for details. */ + +/* + * This code was adapted from the code in end.c to run in a standalone + * mode for the makedefs / drg code. + */ + +#define NEED_VARARGS +#include "config.h" + +#ifdef AZTEC +#define abort() exit() +#endif +#ifdef VMS +extern void NDECL(vms_abort); +#endif + +/*VARARGS1*/ +boolean panicking; +void VDECL(panic, (char *,...)); + +void +panic VA_DECL(char *,str) + VA_START(str); + VA_INIT(str, char *); + if(panicking++) +#ifdef SYSV + (void) +#endif + abort(); /* avoid loops - this should never happen*/ + + (void) fputs(" ERROR: ", stderr); + Vfprintf(stderr, str, VA_ARGS); + (void) fflush(stderr); +#if defined(UNIX) || defined(VMS) +# ifdef SYSV + (void) +# endif + abort(); /* generate core dump */ +#endif + VA_END(); + exit(EXIT_FAILURE); /* redundant */ + return; +} + +#ifdef ALLOCA_HACK +/* + * In case bison-generated foo_yacc.c tries to use alloca(); if we don't + * have it then just use malloc() instead. This may not work on some + * systems, but they should either use yacc or get a real alloca routine. + */ +long *alloca(cnt) +unsigned cnt; +{ + return cnt ? alloc(cnt) : (long *)0; +} +#endif + +/*panic.c*/