1 /*--------------------------------------------------------------------
2 nxeditor
3 FILE NAME:hearderr.c
4 Programed by : I.Neva
5 R & D ADVANCED SYSTEMS. IMAGING PRODUCTS.
6 1992.06.01
7
8 Copyright (c) 1998,1999,2000 SASAKI Shunsuke.
9 All rights reserved.
10 --------------------------------------------------------------------*/
11 #include "ed.h"
12 #include <sys/types.h>
13 #include <sys/stat.h>
14 #include <signal.h>
15
16 bool failed=FALSE;
17
18 #if !defined(SIGIOT) && defined(SIGABRT)
19 #define SIGIOT SIGABRT
20 #endif
21
HearderrEnd(char * message)22 int HearderrEnd(char *message)
23 {
24 static char buf[LN_path+1];
25
26 if (failed)
27 exit(2);
28 failed=TRUE;
29
30 profile_write();
31
32 sysinfo_path(buf, "ne_lock");
33 unlink(buf);
34
35 // fprintf(stderr,"%s\n",message);
36 if (message==NULL)
37 perror(""); else
38 fprintf(stderr,"%s\n",message);
39
40 exit(1);
41 }
42
43
signalALRM()44 RETSIGTYPE signalALRM() {profile_write();}
signalHUP()45 RETSIGTYPE signalHUP() {HearderrEnd("signal.. (SIGHUP) hangup");}
signalILL()46 RETSIGTYPE signalILL() {HearderrEnd("sagnal.. (SIGILL)");}
signalPIPE()47 RETSIGTYPE signalPIPE(){HearderrEnd("signal.. (SIGPIPE)");}
signalTERM()48 RETSIGTYPE signalTERM(){HearderrEnd("signal.. (SIGTERM) software termination signal");}
signalBUS()49 RETSIGTYPE signalBUS() {HearderrEnd("signal.. (SIGBUS) bus error");}
signalSEGV()50 RETSIGTYPE signalSEGV(){HearderrEnd("signal.. (SIGSEGV) segmentation violation");}
signalIOT()51 RETSIGTYPE signalIOT() {HearderrEnd("signal.. (SIGIOT)");}
signalEMT()52 RETSIGTYPE signalEMT() {HearderrEnd("signal.. (SIGEMT)");}
signalSYS()53 RETSIGTYPE signalSYS() {HearderrEnd("signal.. (SIGSYS)");}
signalURG()54 RETSIGTYPE signalURG() {HearderrEnd("signal.. (SIGURG) urgent condition present on soket");}
signalXCPU()55 RETSIGTYPE signalXCPU(){HearderrEnd("signal.. (SIGXCPU) cpu time limit exceeded (see getrlimit(2))");}
56
57
SetSignal()58 void SetSignal()
59 {
60 signal(SIGALRM, signalALRM);
61
62 signal(SIGHUP, signalHUP);
63 signal(SIGILL, signalILL);
64 #ifdef SIGIOT
65 signal(SIGIOT, signalIOT);
66 #endif
67 #ifdef SIGEMT
68 signal(SIGEMT, signalEMT);
69 #endif
70 signal(SIGBUS, signalBUS);
71 signal(SIGSEGV,signalSEGV);
72 #ifdef SIGSYS
73 signal(SIGSYS, signalSYS);
74 #endif
75
76 signal(SIGPIPE,signalPIPE);
77 signal(SIGTERM,signalTERM);
78 #ifdef SIGURG
79 signal(SIGURG, signalURG);
80 #endif
81 #ifdef SIGXCPU
82 signal(SIGXCPU,signalXCPU);
83 #endif
84 }
85