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:  *	@(#)main.c	5.2	6/26/85
   7:  */
   8: #include <stdio.h>
   9: #include <signal.h>
  10: #include "../libI77/fiodefs.h"
  11: 
  12: int xargc;
  13: char **xargv;
  14: 
  15: main(argc, argv, arge)
  16: int argc;
  17: char **argv;
  18: char **arge;
  19: {
  20: int sigdie();
  21: long int (*sigf)();
  22: int signum;
  23: 
  24: xargc = argc;
  25: xargv = argv;
  26: 
  27: for (signum=1; signum<=16; signum++)
  28: {
  29:     if((sigf=signal(signum, sigdie)) != SIG_DFL) signal(signum, sigf);
  30: }
  31: 
  32: #ifdef pdp11
  33:     ldfps(01200); /* detect overflow as an exception */
  34: #endif
  35: 
  36: f_init();
  37: MAIN_();
  38: f_exit();
  39: return 0;
  40: }
  41: 
  42: struct action {
  43:     char *mesg;
  44:     int   core;
  45: } sig_act[16] = {
  46:     {"Hangup", 0},          /* SIGHUP  */
  47:     {"Interrupt!", 0},      /* SIGINT  */
  48:     {"Quit!", 1},           /* SIGQUIT */
  49:     {"Illegal ", 1},        /* SIGILL  */
  50:     {"Trace Trap", 1},      /* SIGTRAP */
  51:     {"IOT Trap", 1},        /* SIGIOT  */
  52:     {"EMT Trap", 1},        /* SIGEMT  */
  53:     {"Arithmetic Exception", 1},    /* SIGFPE  */
  54:     { 0, 0},            /* SIGKILL */
  55:     {"Bus error", 1},       /* SIGBUS  */
  56:     {"Segmentation violation", 1},  /* SIGSEGV */
  57:     {"Sys arg", 1},         /* SIGSYS  */
  58:     {"Open pipe", 0},       /* SIGPIPE */
  59:     {"Alarm", 0},           /* SIGALRM */
  60:     {"Terminated", 0},      /* SIGTERM */
  61:     {"Sig 16", 0},          /* unassigned */
  62: };
  63: 
  64: struct action act_fpe[] = {
  65:     {"Integer overflow", 1},
  66:     {"Integer divide by 0", 1},
  67:     {"Floating point overflow trap", 1},
  68:     {"Floating divide by zero trap", 1},
  69:     {"Floating point underflow trap", 1},
  70:     {"Decimal overflow", 1},
  71:     {"Subscript range", 1},
  72:     {"Floating point overflow", 0},
  73:     {"Floating divide by zero", 0},
  74:     {"Floating point underflow", 0},
  75: };
  76: 
  77: struct action act_ill[] = {
  78:     {"addr mode", 1},
  79:     {"instruction", 1},
  80:     {"operand", 0},
  81: };
  82: 
  83: #if vax
  84: sigdie(s, t, sc)
  85: int s; int t; struct sigcontext *sc;
  86: 
  87: #else   pdp11
  88: sigdie(s, t, pc)
  89: int s; int t; long pc;
  90: 
  91: #endif
  92: {
  93: extern unit units[];
  94: register struct action *act = &sig_act[s-1];
  95: /* print error message, then flush buffers */
  96: 
  97: if (s == SIGHUP || s == SIGINT || s == SIGQUIT)
  98:     signal(s, SIG_IGN); /* don't allow it again */
  99: else
 100:     signal(s, SIG_DFL); /* shouldn't happen again, but ... */
 101: 
 102: if (act->mesg)
 103:     {
 104:     fprintf(units[STDERR].ufd, "*** %s", act->mesg);
 105:     if (s == SIGFPE)
 106:         {
 107:         if (t >= 1 && t <= 10)
 108:             fprintf(units[STDERR].ufd, ": %s", act_fpe[t-1].mesg);
 109:         else
 110:             fprintf(units[STDERR].ufd, ": Type=%d?", t);
 111:         }
 112:     else if (s == SIGILL)
 113:         {
 114:         if (t == 4) t = 2;  /* 4.0bsd botch */
 115:         if (t >= 0 && t <= 2)
 116:             fprintf(units[STDERR].ufd, "%s", act_ill[t].mesg);
 117:         else
 118:             fprintf(units[STDERR].ufd, "compat mode: Code=%d", t);
 119:         }
 120:     putc('\n', units[STDERR].ufd);
 121:     }
 122: f77_abort( s, act->core );
 123: }

Defined functions

main defined in line 15; never used
sigdie defined in line 88; used 6 times

Defined variables

act_fpe defined in line 64; used 3 times
act_ill defined in line 77; used 1 times
sig_act defined in line 45; used 1 times
  • in line 94
xargc defined in line 12; used 2 times
xargv defined in line 13; used 1 times
  • in line 25

Defined struct's

action defined in line 42; used 6 times
Last modified: 1985-06-27
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 580
Valid CSS Valid XHTML 1.0 Strict