File:  [Power 6/32 Unix Tahoe 4.2BSD] / cci / usr / src / usr.lib / libsF77 / main.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Sun Jul 28 12:24:19 2019 UTC (7 years ago) by root
Branches: bsd, MAIN
CVS tags: v12b, v121, HEAD
Power 6/32 Unix version 1.2b

/* STARTUP PROCEDURE FOR UNIX FORTRAN PROGRAMS */

#include <stdio.h>
#include <signal.h>

int	xargc;
char	**xargv;
int	_sigfdie(), _sigidie(), _sigqdie(), _sigindie(), _sigtdie();

main(argc, argv, arge)
	int argc;
	char **argv;
	char **arge;
{

	xargc = argc;
	xargv = argv;
	signal(SIGFPE, _sigfdie);	/* ignore underflow, enable overflow */
	signal(SIGIOT, _sigidie);
	if ((int)signal(SIGQUIT,_sigqdie) & 01)
		signal(SIGQUIT, SIG_IGN);
	if ((int)signal(SIGINT, _sigindie) & 01)
		signal(SIGINT, SIG_IGN);
	signal(SIGTERM,_sigtdie);

#ifdef pdp11
	ldfps(01200); /* detect overflow as an exception */
#endif
	f_init();
	MAIN__();
	f_exit();
}

#if vax || tahoe
static char *fpenames[] = {
	"unknown floating exception",
	"integer overflow",
	"integer divide by zero",
	"floating overflow",
	"floating/decimal divide by zero",
	"floating underflow",
	"decimal overflow",
	"subscript out of range",
	"floating overflow",
	"floating divide by zero",
	"floating underflow"
};

_sigfdie(sig, code)
	int sig, code;
{
	if (code < 0 || code >= sizeof fpenames/sizeof fpenames[0])
		code = 0;
	_sigdie(fpenames[code], 1);
}
#else
_sigfdie() { _sigdie("floating exception, 1); }
#endif

_sigidie() { _sigdie("IOT Trap", 1); }
_sigqdie() { _sigdie("Quit signal", 1); }
_sigindie() { _sigdie("Interrupt", 0); }
_sigtdie() { _sigdie("Killed", 0); }

_sigdie(s, kill)
	register char *s;
	int kill;
{

	/* print error message, then clear buffers */
	fflush(stderr);
	fprintf(stderr, "%s\n", s);
	f_exit();
	fflush(stderr);
	if (kill) {
		/* now get a core */
		signal(SIGIOT, 0);
		abort();
		/*NOTREACHED*/
	}
	exit(1);
}

unix.superglobalmegacorp.com

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