Annotation of 40BSD/lib/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: 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: if( (int)signal(SIGQUIT,sigqdie) & 01) signal(SIGQUIT, SIG_IGN);
                     21: if( (int)signal(SIGINT, sigindie) & 01) signal(SIGINT, SIG_IGN);
                     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: }

unix.superglobalmegacorp.com

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