123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- /* 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 __cplusplus
- extern "C" {
- #endif
- #endif
- #ifndef VOID
- #define VOID void
- #endif
- #ifdef __cplusplus
- extern "C" {
- #endif
- #ifdef NO__STDC
- #define ONEXIT onexit
- extern VOID f_exit();
- #else
- #ifndef KR_headers
- extern void f_exit(void);
- #ifndef NO_ONEXIT
- #define ONEXIT atexit
- extern int atexit(void (*)(void));
- #endif
- #else
- #ifndef NO_ONEXIT
- #define ONEXIT onexit
- extern VOID f_exit();
- #endif
- #endif
- #endif
- #ifdef KR_headers
- extern VOID f_init(), sig_die();
- extern int MAIN__();
- #define Int /* int */
- #else
- extern void f_init(void), sig_die(const char*, int);
- extern int MAIN__(void);
- #define Int int
- #endif
- static VOID sigfdie(Sigarg)
- {
- Use_Sigarg;
- sig_die("Floating Exception", 1);
- }
- static VOID sigidie(Sigarg)
- {
- Use_Sigarg;
- sig_die("IOT Trap", 1);
- }
- #ifdef SIGQUIT
- static VOID sigqdie(Sigarg)
- {
- Use_Sigarg;
- sig_die("Quit signal", 1);
- }
- #endif
- static VOID sigindie(Sigarg)
- {
- Use_Sigarg;
- sig_die("Interrupt", 0);
- }
- static VOID sigtdie(Sigarg)
- {
- Use_Sigarg;
- sig_die("Killed", 0);
- }
- #ifdef SIGTRAP
- static VOID sigtrdie(Sigarg)
- {
- Use_Sigarg;
- sig_die("Trace trap", 1);
- }
- #endif
- int xargc;
- char **xargv;
- #ifdef __cplusplus
- }
- #endif
- int
- #ifdef KR_headers
- main(argc, argv) int argc; char **argv;
- #else
- main(int argc, char **argv)
- #endif
- {
- xargc = argc;
- xargv = argv;
- signal1(SIGFPE, sigfdie); /* ignore underflow, enable overflow */
- #ifdef SIGIOT
- signal1(SIGIOT, sigidie);
- #endif
- #ifdef SIGTRAP
- signal1(SIGTRAP, sigtrdie);
- #endif
- #ifdef SIGQUIT
- if(signal1(SIGQUIT,sigqdie) == SIG_IGN)
- signal1(SIGQUIT, SIG_IGN);
- #endif
- if(signal1(SIGINT, sigindie) == SIG_IGN)
- signal1(SIGINT, SIG_IGN);
- signal1(SIGTERM,sigtdie);
- #ifdef pdp11
- ldfps(01200); /* detect overflow as an exception */
- #endif
- f_init();
- #ifndef NO_ONEXIT
- ONEXIT(f_exit);
- #endif
- MAIN__();
- #ifdef NO_ONEXIT
- f_exit();
- #endif
- exit(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
|