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