Annotation of researchv10no/libF77/main.c, revision 1.1.1.1

1.1       root        1: /* STARTUP PROCEDURE FOR UNIX FORTRAN PROGRAMS */
                      2: 
                      3: #include "stdio.h"
                      4: #include "signal.h"
                      5: 
                      6: #ifndef SIGIOT
                      7: #define SIGIOT SIGABRT
                      8: #endif
                      9: 
                     10: #ifndef KR_headers
                     11: #include "stdlib.h"
                     12: #endif
                     13: #ifdef __cplusplus
                     14: extern "C" {
                     15: #endif
                     16: 
                     17: #ifdef NO__STDC
                     18: #define ONEXIT onexit
                     19: extern void f_exit();
                     20: #else
                     21: #ifndef KR_headers
                     22: extern void f_exit(void);
                     23: #ifndef NO_ONEXIT
                     24: #define ONEXIT atexit
                     25: extern int atexit(void (*)(void));
                     26: #endif
                     27: #else
                     28: #ifndef NO_ONEXIT
                     29: #define ONEXIT onexit
                     30: extern void f_exit();
                     31: #endif
                     32: #endif
                     33: #endif
                     34: 
                     35: #ifdef KR_headers
                     36: extern void f_init(), sig_die();
                     37: extern int MAIN__();
                     38: #define Int /* int */
                     39: #else
                     40: extern void f_init(void), sig_die(char*, int);
                     41: extern int MAIN__(void);
                     42: #define Int int
                     43: #endif
                     44: 
                     45: static void sigfdie(Int n)
                     46: {
                     47: sig_die("Floating Exception", 1);
                     48: }
                     49: 
                     50: 
                     51: static void sigidie(Int n)
                     52: {
                     53: sig_die("IOT Trap", 1);
                     54: }
                     55: 
                     56: #ifdef SIGQUIT
                     57: static void sigqdie(Int n)
                     58: {
                     59: sig_die("Quit signal", 1);
                     60: }
                     61: #endif
                     62: 
                     63: 
                     64: static void sigindie(Int n)
                     65: {
                     66: sig_die("Interrupt", 0);
                     67: }
                     68: 
                     69: static void sigtdie(Int n)
                     70: {
                     71: sig_die("Killed", 0);
                     72: }
                     73: 
                     74: #ifdef SIGTRAP
                     75: static void sigtrdie(Int n)
                     76: {
                     77: sig_die("Trace trap", 1);
                     78: }
                     79: #endif
                     80: 
                     81: 
                     82: int xargc;
                     83: char **xargv;
                     84: 
                     85: #ifdef KR_headers
                     86: main(argc, argv) int argc; char **argv;
                     87: #else
                     88: main(int argc, char **argv)
                     89: #endif
                     90: {
                     91: xargc = argc;
                     92: xargv = argv;
                     93: signal(SIGFPE, sigfdie);       /* ignore underflow, enable overflow */
                     94: signal(SIGIOT, sigidie);
                     95: #ifdef SIGTRAP
                     96: signal(SIGTRAP, sigtrdie);
                     97: #endif
                     98: #ifdef SIGQUIT
                     99: if(signal(SIGQUIT,sigqdie) == SIG_IGN)
                    100:        signal(SIGQUIT, SIG_IGN);
                    101: #endif
                    102: if(signal(SIGINT, sigindie) == SIG_IGN)
                    103:        signal(SIGINT, SIG_IGN);
                    104: signal(SIGTERM,sigtdie);
                    105: 
                    106: #ifdef pdp11
                    107:        ldfps(01200); /* detect overflow as an exception */
                    108: #endif
                    109: 
                    110: f_init();
                    111: #ifndef NO_ONEXIT
                    112: ONEXIT(f_exit);
                    113: #endif
                    114: MAIN__();
                    115: #ifdef NO_ONEXIT
                    116: f_exit();
                    117: #endif
                    118: exit(0);       /* exit(0) rather than return(0) to bypass Cray bug */
                    119: return 0;      /* For compilers that complain of missing return values; */
                    120:                /* others will complain that this is unreachable code. */
                    121: }
                    122: #ifdef __cplusplus
                    123:        }
                    124: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.