39 lines
1.5 KiB
C
Executable File
39 lines
1.5 KiB
C
Executable File
#ifndef __INC_LIBTHECORE_SIGNAL_H__
|
|
#define __INC_LIBTHECORE_SIGNAL_H__
|
|
|
|
/* ### LINUX-BLOCK-BEGIN (signal.h shadow guard) ######################### */
|
|
#if defined(__linux__) && !defined(_SIGNAL_H)
|
|
/* ---------------------------------------------------------------------------
|
|
* Header-shadowing guard (Linux only).
|
|
*
|
|
* glibc's <sys/signal.h> is literally one line: "#include <signal.h>". Every
|
|
* module compiles with -I<...>/libthecore/include, so that bracket include
|
|
* resolves to *this* file instead of /usr/include/signal.h, and SIGPIPE,
|
|
* signal(), sigaction() and friends silently disappear. libthecore's own
|
|
* stdafx.h includes <sys/signal.h>, so this bites signal.c immediately, and
|
|
* db/src/Main.cpp and libsql/Tellwait.cpp include <signal.h> directly. (It
|
|
* does not happen on FreeBSD, where <signal.h> includes <sys/signal.h> and not
|
|
* the other way round, which is why the production build never hit this.)
|
|
*
|
|
* Pull the real header in via #include_next, which resumes the search after
|
|
* the directory this file was found in. _SIGNAL_H is glibc's own guard, so
|
|
* when the system header already got in first this is a no-op.
|
|
* ------------------------------------------------------------------------- */
|
|
#include_next <signal.h>
|
|
#endif
|
|
/* ### LINUX-BLOCK-END (signal.h shadow guard) ########################### */
|
|
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
{
|
|
#endif
|
|
extern void signal_setup();
|
|
extern void signal_timer_disable();
|
|
extern void signal_timer_enable(int timeout_seconds);
|
|
|
|
#ifdef __cplusplus
|
|
};
|
|
#endif
|
|
|
|
#endif
|