diff --git a/C/sysbits.c b/C/sysbits.c index 79d8c142a..6401ae225 100644 --- a/C/sysbits.c +++ b/C/sysbits.c @@ -1492,19 +1492,25 @@ ReceiveSignal (int s) case SIGKILL: Yap_Error(INTERRUPT_ERROR,MkIntTerm(s),NULL); #endif -#if defined(SIGUSR1) +#ifdef SIGUSR1 case SIGUSR1: /* force the system to creep */ Yap_signal (YAP_USR1_SIGNAL); break; #endif /* defined(SIGUSR1) */ -#if defined(SIGUSR2) +#ifdef SIGUSR2 case SIGUSR2: /* force the system to creep */ Yap_signal (YAP_USR2_SIGNAL); break; #endif /* defined(SIGUSR2) */ -#if defined(SIGHUP) +#ifdef SIGPIPE + case SIGPIPE: + /* force the system to creep */ + Yap_signal (YAP_PIPE_SIGNAL); + break; +#endif /* defined(SIGPIPE) */ +#ifdef SIGHUP case SIGHUP: /* force the system to creep */ Yap_signal (YAP_HUP_SIGNAL); @@ -1545,6 +1551,9 @@ InitSignals (void) my_signal (SIGHUP, ReceiveSignal); my_signal (SIGALRM, HandleALRM); #endif +#ifdef SIGPIPE + my_signal (SIGPIPE, ReceiveSignal); +#endif #if _MSC_VER || defined(__MINGW32__) signal (SIGINT, SIG_IGN); SetConsoleCtrlHandler(MSCHandleSignal,TRUE); @@ -2543,6 +2552,11 @@ p_first_signal(void) UNLOCK(SignalLock); return Yap_unify(ARG1, MkAtomTerm(Yap_LookupAtom("sig_usr1"))); } + if (ActiveSignals & YAP_PIPE_SIGNAL) { + ActiveSignals &= ~YAP_PIPE_SIGNAL; + UNLOCK(SignalLock); + return Yap_unify(ARG1, MkAtomTerm(Yap_LookupAtom("sig_pipe"))); + } if (ActiveSignals & YAP_HUP_SIGNAL) { ActiveSignals &= ~YAP_HUP_SIGNAL; UNLOCK(SignalLock); diff --git a/H/Yap.h b/H/Yap.h index 9b60fa6ae..2862dc458 100644 --- a/H/Yap.h +++ b/H/Yap.h @@ -10,7 +10,7 @@ * File: Yap.h.m4 * * mods: * * comments: main header file for YAP * -* version: $Id: Yap.h,v 1.36 2008-05-15 13:41:46 vsc Exp $ * +* version: $Id: Yap.h,v 1.37 2008-05-23 10:02:13 vsc Exp $ * *************************************************************************/ #include "config.h" @@ -573,7 +573,8 @@ typedef enum YAP_STACK_DUMP_SIGNAL = 0x4000, /* received stack dump signal */ YAP_STATISTICS_SIGNAL = 0x8000, /* received statistics */ YAP_DELAY_CREEP_SIGNAL = 0x10000, /* received a creep but should not do it */ - YAP_AGC_SIGNAL = 0x20000 /* call atom garbage collector asap */ + YAP_AGC_SIGNAL = 0x20000, /* call atom garbage collector asap */ + YAP_PIPE_SIGNAL = 0x40000 /* call atom garbage collector asap */ } yap_signals; #define NUMBER_OF_YAP_FLAGS LAST_FLAG diff --git a/changes-5.1.html b/changes-5.1.html index 2c9461765..7f5a1ad4c 100644 --- a/changes-5.1.html +++ b/changes-5.1.html @@ -17,6 +17,8 @@ xb

Yap-5.1.3: