SAFERHANGUP followup

We've previously been supporting R4+ for X11, but signals weren't added
until R6.  This at least lets it compile under R5.
This commit is contained in:
jwalz
2003-09-19 16:32:41 +00:00
parent 018123c007
commit c3960b1d49
+16 -13
View File
@@ -92,8 +92,11 @@ int click_x, click_y, click_button; /* Click position on a map window */
/* (filled by set_button_values()). */ /* (filled by set_button_values()). */
int updated_inventory; int updated_inventory;
#ifndef NO_SIGNAL #if !defined(NO_SIGNAL) && defined(SAFERHANGUP)
# if XtSpecificationRelease >= 6
#define X11_HANGUP_SIGNAL
static XtSignalId X11_sig_id; static XtSignalId X11_sig_id;
# endif
#endif #endif
/* Interface definition, for windows.c */ /* Interface definition, for windows.c */
@@ -169,7 +172,7 @@ static void FDECL(X11_hangup, (Widget, XEvent*, String*, Cardinal*));
static int FDECL(input_event, (int)); static int FDECL(input_event, (int));
static void FDECL(win_visible, (Widget,XtPointer,XEvent *,Boolean *)); static void FDECL(win_visible, (Widget,XtPointer,XEvent *,Boolean *));
static void NDECL(init_standard_windows); static void NDECL(init_standard_windows);
#if !defined(NO_SIGNAL) && defined(SAFERHANGUP) #ifdef X11_HANGUP_SIGNAL
static void FDECL(X11_sig, (int)); static void FDECL(X11_sig, (int));
static void FDECL(X11_sig_cb, (XtPointer, XtSignalId*)); static void FDECL(X11_sig_cb, (XtPointer, XtSignalId*));
#endif #endif
@@ -614,29 +617,29 @@ X11_create_nhwindow(type)
if (!x_inited) if (!x_inited)
panic("create_nhwindow: windows not initialized"); panic("create_nhwindow: windows not initialized");
#if !defined(NO_SIGNAL) && defined(SAFERHANGUP) #ifdef X11_HANGUP_SIGNAL
/* set up our own signal handlers on the first call. Can't do this in /* set up our own signal handlers on the first call. Can't do this in
* X11_init_nhwindows because unixmain sets its handler after calling * X11_init_nhwindows because unixmain sets its handler after calling
* all the init routines. */ * all the init routines. */
if (X11_sig_id == 0) { if (X11_sig_id == 0) {
X11_sig_id = XtAppAddSignal(app_context, X11_sig_cb, (XtPointer)0); X11_sig_id = XtAppAddSignal(app_context, X11_sig_cb, (XtPointer)0);
#ifdef SA_RESTART # ifdef SA_RESTART
{ {
struct sigaction sact; struct sigaction sact;
(void) memset((char*) &sact, 0, sizeof(struct sigaction)); (void) memset((char*) &sact, 0, sizeof(struct sigaction));
sact.sa_handler = (SIG_RET_TYPE)X11_sig; sact.sa_handler = (SIG_RET_TYPE)X11_sig;
(void) sigaction(SIGHUP, &sact, (struct sigaction*)0); (void) sigaction(SIGHUP, &sact, (struct sigaction*)0);
#ifdef SIGXCPU # ifdef SIGXCPU
(void) sigaction(SIGXCPU, &sact, (struct sigaction*)0); (void) sigaction(SIGXCPU, &sact, (struct sigaction*)0);
#endif # endif
} }
#else # else
(void) signal(SIGHUP, (SIG_RET_TYPE) X11_sig); (void) signal(SIGHUP, (SIG_RET_TYPE) X11_sig);
#ifdef SIGXCPU # ifdef SIGXCPU
(void) signal(SIGXCPU, (SIG_RET_TYPE) X11_sig); (void) signal(SIGXCPU, (SIG_RET_TYPE) X11_sig);
#endif # endif
#endif # endif
} }
#endif #endif
@@ -1100,8 +1103,8 @@ void X11_exit_nhwindows(dummy)
X11_destroy_nhwindow(WIN_MESSAGE); X11_destroy_nhwindow(WIN_MESSAGE);
} }
#if !defined(NO_SIGNAL) && defined(SAFERHANGUP) #ifdef X11_HANGUP_SIGNAL
void static void
X11_sig(sig) /* Unix signal handler */ X11_sig(sig) /* Unix signal handler */
int sig; int sig;
{ {
@@ -1109,7 +1112,7 @@ int sig;
hangup(sig); hangup(sig);
} }
void static void
X11_sig_cb(not_used, id) X11_sig_cb(not_used, id)
XtPointer not_used; XtPointer not_used;
XtSignalId* id; XtSignalId* id;