posix_spawn: honor POSIX_SPAWN_SETSIGDEF flag
authorRich Felker <dalias@aerifal.cx>
Sat, 28 May 2011 22:39:43 +0000 (18:39 -0400)
committerRich Felker <dalias@aerifal.cx>
Sat, 28 May 2011 22:39:43 +0000 (18:39 -0400)
src/process/posix_spawn.c

index e718cee..7018c37 100644 (file)
@@ -31,7 +31,9 @@ int __posix_spawnx(pid_t *res, const char *path,
        for (i=1; i<=64; i++) {
                struct sigaction sa;
                sigaction(i, 0, &sa);
        for (i=1; i<=64; i++) {
                struct sigaction sa;
                sigaction(i, 0, &sa);
-               if (sa.sa_handler!=SIG_IGN || sigismember(&attr->__def, i)) {
+               if (sa.sa_handler!=SIG_IGN ||
+                   ((attr->__flags & POSIX_SPAWN_SETSIGDEF)
+                    && sigismember(&attr->__def, i) )) {
                        sa.sa_handler = SIG_DFL;
                        sigaction(i, &sa, 0);
                }
                        sa.sa_handler = SIG_DFL;
                        sigaction(i, &sa, 0);
                }