From 647315275bc825d43130a1b62ebd914ae8769d18 Mon Sep 17 00:00:00 2001 From: Nicolas Noble Date: Fri, 28 Nov 2008 17:17:52 -0800 Subject: Adding Darwin support: -) iconv is broken on Darwin as well -) ppoll doesn't exist under Darwin --- lib/TaskMan.cc | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'lib/TaskMan.cc') diff --git a/lib/TaskMan.cc b/lib/TaskMan.cc index e3ebd9a..83fe5aa 100644 --- a/lib/TaskMan.cc +++ b/lib/TaskMan.cc @@ -326,7 +326,12 @@ void TaskMan::Init() throw (GeneralException) { signal(SIGPIPE, taskman_sigpipe); signal(SIGHUP, taskman_sighup); signal(SIGUSR1, taskman_sigusr1); - + +#ifdef __APPLE__ + sigemptyset(&sigchildset); + sigaddset(&sigchildset, SIGCHLD); + sigprocmask(SIG_BLOCK, &sigchildset, 0); +#else sigset_t sigtempset; sigemptyset(&sigchildset); @@ -335,7 +340,8 @@ void TaskMan::Init() throw (GeneralException) { sigprocmask(SIG_SETMASK, 0, &sigtempset); sigaddset(&sigtempset, SIGCHLD); sigprocmask(SIG_SETMASK, &sigtempset, 0); -#endif +#endif +#endif inited = true; number = 0; @@ -683,8 +689,14 @@ void TaskMan::MainLoop() throw (GeneralException) { bool timeout_condition = no_burst && !Zombies.size() && !got_sigchild && !got_yield; -#ifdef _WIN32 +#if defined(_WIN32) || defined(__APPLE__) +#ifdef __APPLE__ + sigprocmask(SIG_UNBLOCK, &sigchildset, 0); +#endif r = poll(ufsd, nfds, timeout_condition ? timeout : 0); +#ifdef __APPLE__ + sigprocmask(SIG_BLOCK, &sigchildset, 0); +#endif #else struct timespec ttimeout = { 0, 0 }; if ((timeout != -1) && timeout_condition) { -- cgit v1.2.3