mirror of
https://github.com/reactos/reactos.git
synced 2024-12-27 01:24:38 +00:00
86bda6b3d9
svn path=/trunk/; revision=2453
49 lines
852 B
C
49 lines
852 B
C
#define _sio_main_c_
|
|
#include "syshdrs.h"
|
|
|
|
int gLibSio_Uses_Me_To_Quiet_Variable_Unused_Warnings = 0;
|
|
|
|
#ifndef NO_SIGNALS
|
|
|
|
volatile Sjmp_buf gNetTimeoutJmp;
|
|
volatile Sjmp_buf gPipeJmp;
|
|
|
|
void
|
|
SIOHandler(int sigNum)
|
|
{
|
|
if (sigNum == SIGPIPE)
|
|
SLongjmp(gPipeJmp, 1);
|
|
SLongjmp(gNetTimeoutJmp, 1);
|
|
} /* SIOHandler */
|
|
|
|
|
|
|
|
|
|
void (*SSignal(int signum, void (*handler)(int)))(int)
|
|
{
|
|
#ifdef HAVE_SIGACTION
|
|
struct sigaction sa, osa;
|
|
|
|
(void) sigemptyset(&sa.sa_mask);
|
|
sa.sa_flags = 0;
|
|
sa.sa_handler = handler;
|
|
if (signum == SIGALRM) {
|
|
#ifdef SA_INTERRUPT
|
|
sa.sa_flags |= SA_INTERRUPT;
|
|
#endif
|
|
} else {
|
|
#ifdef SA_RESTART
|
|
sa.sa_flags |= SA_RESTART;
|
|
#endif
|
|
}
|
|
if (sigaction(signum, &sa, &osa) < 0)
|
|
return (SIG_ERR);
|
|
return (osa.sa_handler);
|
|
#else
|
|
return SSignal(signum, handler);
|
|
#endif /* HAVE_SIGACTION */
|
|
}
|
|
|
|
#endif /* NO_SIGNALS */
|
|
|
|
/* eof main.c */
|