|
|
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.