• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**********************************************************************
2  * File:        errcode.c  (Formerly error.c)
3  * Description: Generic error handler function
4  * Author:      Ray Smith
5  * Created:     Tue May  1 16:28:39 BST 1990
6  *
7  * (C) Copyright 1989, Hewlett-Packard Ltd.
8  ** Licensed under the Apache License, Version 2.0 (the "License");
9  ** you may not use this file except in compliance with the License.
10  ** You may obtain a copy of the License at
11  ** http://www.apache.org/licenses/LICENSE-2.0
12  ** Unless required by applicable law or agreed to in writing, software
13  ** distributed under the License is distributed on an "AS IS" BASIS,
14  ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  ** See the License for the specific language governing permissions and
16  ** limitations under the License.
17  *
18  **********************************************************************/
19 
20 #include          "mfcpch.h"
21 #include          <signal.h>
22 #include          "errcode.h"
23 #include          "tprintf.h"
24 
25 /*inT16 global_loc_code = LOC_INIT;//location code
26 inT16 global_subloc_code = SUBLOC_NORM;
27                                  //pass2 subloc code
28 inT16 global_subsubloc_code = SUBSUBLOC_OTHER;
29                                  //location code
30 inT16 global_abort_code = NO_ABORT_CODE;
31                                  //Prog abort code
32 */
signal_exit(int signal_code)33 void signal_exit(                 //
34                  int signal_code  //Signal which
35                 ) {
36   /*int exit_status;
37 
38   if ((global_loc_code == LOC_PASS2) || (global_loc_code == LOC_FUZZY_SPACE))
39     global_loc_code += global_subloc_code + global_subsubloc_code;
40 
41   if (signal_code < 0) {
42     exit_status = global_loc_code * 8 + global_abort_code * 2 + 1;
43     tprintf ("Signal_exit %d ABORT. LocCode: %d  AbortCode: %d\n",
44       exit_status, global_loc_code, global_abort_code);
45   }
46   else {
47     exit_status = global_loc_code * 8 + signal_code * 2;
48     tprintf ("Signal_exit %d SIGNAL ABORT. LocCode: %d  SignalCode: %d\n",
49       exit_status, global_loc_code, signal_code);
50   }
51 
52   exit(exit_status);*/
53   exit(signal_code);
54 }
55 
56 
57 /*************************************************************************
58  * err_exit()
59  * All program exits should go through this point. It allows a meaningful status
60  * code to be generated for the real exit() call. The status code is made up
61  * as follows:
62  *  Bit  0    : 1 = Program Abort   0 = System Abort
63  *	Bits 1,2  : IF bit 0 = 1 THEN ERRCODE::abort_code
64  *				ELSE    0 = Bus Err or Seg Vi
65  *								1 = Floating point exception
66  *							2 = TimeOut (Signal 15 from command timer)
67  *							3 = Any other signal
68  *  Bits 3..7 : Location code NEVER 0 !
69  *************************************************************************/
70 
71 //extern "C" {
72 
err_exit()73 void err_exit() {
74   signal_exit (-1);
75 }
76 
77 
signal_termination_handler(int sig)78 void signal_termination_handler(  //The real signal
79                                 int sig) {
80   tprintf ("Signal_termination_handler called with signal %d\n", sig);
81   switch (sig) {
82     case SIGABRT:
83       signal_exit (-1);          //use abort code
84       //         case SIGBUS:
85     case SIGSEGV:
86       signal_exit (0);
87     case SIGFPE:
88       signal_exit (1);           //floating point
89     case SIGTERM:
90       signal_exit (2);           //timeout by cmdtimer
91     default:
92       signal_exit (3);           //Anything else
93   }
94 }
95 
96 
97 //};                                                                                                            //end extern "C"
98 
99 
set_global_loc_code(int loc_code)100 void set_global_loc_code(int loc_code) {
101   // global_loc_code = loc_code;
102 
103 }
104 
105 
set_global_subloc_code(int loc_code)106 void set_global_subloc_code(int loc_code) {
107   // global_subloc_code = loc_code;
108 
109 }
110 
111 
set_global_subsubloc_code(int loc_code)112 void set_global_subsubloc_code(int loc_code) {
113   // global_subsubloc_code = loc_code;
114 
115 }
116