|
|
1.1 ! root 1: /* STARTUP PROCEDURE FOR UNIX FORTRAN PROGRAMS */ ! 2: ! 3: #include <stdio.h> ! 4: #include <signal.h> ! 5: ! 6: int xargc; ! 7: char **xargv; ! 8: ! 9: main(argc, argv, arge) ! 10: int argc; ! 11: char **argv; ! 12: char **arge; ! 13: { ! 14: int sigfdie(), sigidie(), sigqdie(), sigindie(), sigtdie(); ! 15: ! 16: xargc = argc; ! 17: xargv = argv; ! 18: signal(SIGFPE, sigfdie); /* ignore underflow, enable overflow */ ! 19: signal(SIGIOT, sigidie); ! 20: signal(SIGQUIT,sigqdie); ! 21: signal(SIGINT, sigindie); ! 22: signal(SIGTERM,sigtdie); ! 23: ! 24: #ifdef pdp11 ! 25: ldfps(01200); /* detect overflow as an exception */ ! 26: #endif ! 27: ! 28: f_init(); ! 29: MAIN__(); ! 30: f_exit(); ! 31: } ! 32: ! 33: ! 34: static sigfdie() ! 35: { ! 36: sigdie("Floating Exception", 1); ! 37: } ! 38: ! 39: ! 40: ! 41: static sigidie() ! 42: { ! 43: sigdie("IOT Trap", 1); ! 44: } ! 45: ! 46: ! 47: static sigqdie() ! 48: { ! 49: sigdie("Quit signal", 1); ! 50: } ! 51: ! 52: ! 53: ! 54: static sigindie() ! 55: { ! 56: sigdie("Interrupt", 0); ! 57: } ! 58: ! 59: ! 60: ! 61: static sigtdie() ! 62: { ! 63: sigdie("Killed", 0); ! 64: } ! 65: ! 66: ! 67: ! 68: static sigdie(s, kill) ! 69: register char *s; ! 70: int kill; ! 71: { ! 72: /* print error message, then clear buffers */ ! 73: fflush(stderr); ! 74: fprintf(stderr, "%s\n", s); ! 75: f_exit(); ! 76: fflush(stderr); ! 77: ! 78: if(kill) ! 79: { ! 80: /* now get a core */ ! 81: signal(SIGIOT, 0); ! 82: abort(); ! 83: } ! 84: else ! 85: exit(1); ! 86: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.