Annotation of 43BSDReno/lib/libI77/f77_abort.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1980 Regents of the University of California.
                      3:  * All rights reserved.  The Berkeley software License Agreement
                      4:  * specifies the terms and conditions for redistribution.
                      5:  *
                      6:  *     @(#)f77_abort.c 5.2     7/12/85
                      7:  *
                      8:  *     all f77 aborts eventually call f77_abort.
                      9:  *     f77_abort cleans up open files and terminates with a dump if needed,
                     10:  *     with a message otherwise.       
                     11:  *
                     12:  */
                     13: 
                     14: #include <signal.h>
                     15: #include "fio.h"
                     16: 
                     17: char *getenv();
                     18: extern int errno;
                     19: int _lg_flag;  /* _lg_flag is non-zero if -lg was specified to ld */
                     20: 
                     21: f77_abort( err_val, act_core )
                     22: {
                     23:        char first_char, *env_var;
                     24:        int core_dump;
                     25: 
                     26:        env_var = getenv("f77_dump_flag");
                     27:        first_char = (env_var == NULL) ? 0 : *env_var;
                     28: 
                     29:        signal(SIGILL, SIG_DFL);
                     30:        sigsetmask(0);                  /* don't block */
                     31: 
                     32:        /* see if we want a core dump:
                     33:                first line checks for signals like hangup - don't dump then.
                     34:                second line checks if -lg specified to ld (e.g. by saying
                     35:                        -g to f77) and checks the f77_dump_flag var. */
                     36:        core_dump = ((nargs() != 2) || act_core) &&
                     37:            ( (_lg_flag && (first_char != 'n')) || first_char == 'y');
                     38: 
                     39:        if( !core_dump )
                     40:                fprintf(units[STDERR].ufd,"*** Execution terminated\n");
                     41: 
                     42:        f_exit();
                     43:        _cleanup();
                     44:        if( nargs() ) errno = err_val;
                     45:        else errno = -2;   /* prior value will be meaningless,
                     46:                                so set it to undefined value */
                     47: 
                     48:        if( core_dump ) abort();
                     49:        else  exit( errno );
                     50: }

unix.superglobalmegacorp.com

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