aboutsummaryrefslogtreecommitdiffstats
path: root/main.c
diff options
context:
space:
mode:
authorWayne Davison <wayned@samba.org>2006-02-03 18:48:26 +0000
committerWayne Davison <wayned@samba.org>2006-02-03 18:48:26 +0000
commit8261af7422242809bc7f888a715e9775b8c0ebd3 (patch)
tree0cda744ca06943bb34db12e7fd192a3e7b7e9667 /main.c
parent44e604f41621cf3e31dc5840686c99e0986b9a53 (diff)
downloadandroid_external_rsync-8261af7422242809bc7f888a715e9775b8c0ebd3.tar.gz
android_external_rsync-8261af7422242809bc7f888a715e9775b8c0ebd3.tar.bz2
android_external_rsync-8261af7422242809bc7f888a715e9775b8c0ebd3.zip
Allow sigaction() to be used even if sigprocmask() isn't around
(or was manually disabled).
Diffstat (limited to 'main.c')
-rw-r--r--main.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/main.c b/main.c
index 58ea8b00..f60d4aec 100644
--- a/main.c
+++ b/main.c
@@ -68,8 +68,12 @@ struct file_list *the_file_list;
* but set it higher, just in case. */
#define MAXCHILDPROCS 7
-#if defined HAVE_SIGACTION && defined HAVE_SIGPROCMASK
-#define SIGACTMASK(n,h) SIGACTION(n,h), sigaddset(&sigmask,(n))
+#ifdef HAVE_SIGACTION
+# ifdef HAVE_SIGPROCMASK
+# define SIGACTMASK(n,h) SIGACTION(n,h), sigaddset(&sigmask,(n))
+# else
+# define SIGACTMASK(n,h) SIGACTION(n,h)
+# endif
static struct sigaction sigact;
#endif
@@ -1104,7 +1108,7 @@ static RETSIGTYPE sigchld_handler(UNUSED(int val))
}
}
#endif
-#if !defined HAVE_SIGACTION && !defined HAVE_SIGPROCMASK
+#ifndef HAVE_SIGACTION
signal(SIGCHLD, sigchld_handler);
#endif
}
@@ -1166,10 +1170,12 @@ int main(int argc,char *argv[])
int ret;
int orig_argc = argc;
char **orig_argv = argv;
-#if defined HAVE_SIGACTION && defined HAVE_SIGPROCMASK
+#ifdef HAVE_SIGACTION
+# ifdef HAVE_SIGPROCMASK
sigset_t sigmask;
sigemptyset(&sigmask);
+# endif
sigact.sa_flags = SA_NOCLDSTOP;
#endif
SIGACTMASK(SIGUSR1, sigusr1_handler);