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:
+16
-13
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user