Annotation of 43BSDReno/lib/libI77/f77_abort.c, revision 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.