| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 | /* STARTUP PROCEDURE FOR UNIX FORTRAN PROGRAMS */#include "stdio.h"#include "signal1.h"#ifndef SIGIOT#ifdef SIGABRT#define SIGIOT SIGABRT#endif#endif#ifndef KR_headers#undef VOID#include "stdlib.h"#ifdef __cplusplusextern "C" {#endif#endif#ifndef VOID#define VOID void#endif#ifdef __cplusplusextern "C" {#endif#ifdef NO__STDC#define ONEXIT onexitextern VOID f_exit();#else#ifndef KR_headersextern void f_exit(void);#ifndef NO_ONEXIT#define ONEXIT atexitextern int atexit(void (*)(void));#endif#else#ifndef NO_ONEXIT#define ONEXIT onexitextern VOID f_exit();#endif#endif#endif#ifdef KR_headersextern VOID f_init(), sig_die();extern int MAIN__();#define Int /* int */#elseextern void f_init(void), sig_die(const char*, int);extern int MAIN__(void);#define Int int#endifstatic VOID sigfdie(Sigarg){Use_Sigarg;sig_die("Floating Exception", 1);}static VOID sigidie(Sigarg){Use_Sigarg;sig_die("IOT Trap", 1);}#ifdef SIGQUITstatic VOID sigqdie(Sigarg){Use_Sigarg;sig_die("Quit signal", 1);}#endifstatic VOID sigindie(Sigarg){Use_Sigarg;sig_die("Interrupt", 0);}static VOID sigtdie(Sigarg){Use_Sigarg;sig_die("Killed", 0);}#ifdef SIGTRAPstatic VOID sigtrdie(Sigarg){Use_Sigarg;sig_die("Trace trap", 1);}#endifint xargc;char **xargv;#ifdef __cplusplus	}#endif int#ifdef KR_headersmain(argc, argv) int argc; char **argv;#elsemain(int argc, char **argv)#endif{xargc = argc;xargv = argv;signal1(SIGFPE, sigfdie);	/* ignore underflow, enable overflow */#ifdef SIGIOTsignal1(SIGIOT, sigidie);#endif#ifdef SIGTRAPsignal1(SIGTRAP, sigtrdie);#endif#ifdef SIGQUITif(signal1(SIGQUIT,sigqdie) == SIG_IGN)	signal1(SIGQUIT, SIG_IGN);#endifif(signal1(SIGINT, sigindie) == SIG_IGN)	signal1(SIGINT, SIG_IGN);signal1(SIGTERM,sigtdie);#ifdef pdp11	ldfps(01200); /* detect overflow as an exception */#endiff_init();#ifndef NO_ONEXITONEXIT(f_exit);#endifMAIN__();#ifdef NO_ONEXITf_exit();#endifexit(0);	/* exit(0) rather than return(0) to bypass Cray bug */return 0;	/* For compilers that complain of missing return values; */		/* others will complain that this is unreachable code. */}#ifdef __cplusplus}#endif
 |