search for: sigclearmask

Displaying 5 results from an estimated 5 matches for "sigclearmask".

2020 Mar 28
0
[klibc:update-dash] dash: eval: Add vfork support
...else forkparent(jp, n, mode, pid); + return pid; } +struct job *vforkexec(union node *n, char **argv, const char *path, int idx) +{ + struct job *jp; + int pid; + + jp = makejob(n, 1); + + sigblockall(NULL); + vforked++; + + pid = vfork(); + + if (!pid) { + forkchild(jp, n, FORK_FG); + sigclearmask(); + shellexec(argv, path, idx); + /* NOTREACHED */ + } + + vforked = 0; + sigclearmask(); + forkparent(jp, n, FORK_FG, pid); + + return jp; +} + /* * Wait for job to finish. * @@ -1105,7 +1152,7 @@ static int dowait(int block, struct job *jp) STATIC int waitproc(int block, int *status) {...
2020 Mar 28
0
[klibc:update-dash] dash: system: Disable glibc warning on sigsetmask
...hings <ben at decadent.org.uk> --- usr/dash/system.h | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/usr/dash/system.h b/usr/dash/system.h index c8424f75..f23e3863 100644 --- a/usr/dash/system.h +++ b/usr/dash/system.h @@ -36,8 +36,17 @@ static inline void sigclearmask(void) { -#ifdef HAVE_SIGSETMASK +#if defined(HAVE_SIGSETMASK) && \ + (!defined(__GLIBC__) || \ + (defined(__GNUC__) && (__GNUC__ * 1000 + __GNUC_MINOR__) >= 4006)) +#ifdef __GLIBC__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declaratio...
2019 Jan 25
0
[klibc:update-dash] trap: Globally rename pendingsigs to pending_sig
...8 + pending_sig; goto out; } @@ -1146,7 +1146,7 @@ waitproc(int block, int *status) sigfillset(&mask); sigprocmask(SIG_SETMASK, &mask, &oldmask); - while (!gotsigchld && !pendingsigs) + while (!gotsigchld && !pending_sig) sigsuspend(&oldmask); sigclearmask(); diff --git a/usr/dash/miscbltin.c b/usr/dash/miscbltin.c index c47fdbf8..fc14dc4b 100644 --- a/usr/dash/miscbltin.c +++ b/usr/dash/miscbltin.c @@ -207,7 +207,7 @@ readcmd(int argc, char **argv) case 1: break; default: - if (errno == EINTR && !pendingsigs) + if (errno == EIN...
2020 Mar 28
0
[klibc:update-dash] dash: trap: Globally rename pendingsigs to pending_sig
...8 + pending_sig; goto out; } @@ -1146,7 +1146,7 @@ waitproc(int block, int *status) sigfillset(&mask); sigprocmask(SIG_SETMASK, &mask, &oldmask); - while (!gotsigchld && !pendingsigs) + while (!gotsigchld && !pending_sig) sigsuspend(&oldmask); sigclearmask(); diff --git a/usr/dash/miscbltin.c b/usr/dash/miscbltin.c index c47fdbf8..fc14dc4b 100644 --- a/usr/dash/miscbltin.c +++ b/usr/dash/miscbltin.c @@ -207,7 +207,7 @@ readcmd(int argc, char **argv) case 1: break; default: - if (errno == EINTR && !pendingsigs) + if (errno == EIN...
2020 Mar 28
0
[klibc:update-dash] dash: jobs: Only clear gotsigchld when waiting for everything
...hld = 0; err = wait3(status, flags, NULL); - if (err || !block) + if (err || (err = -!block)) break; - block = 0; - sigfillset(&mask); sigprocmask(SIG_SETMASK, &mask, &oldmask); @@ -1159,6 +1127,8 @@ waitproc(int block, int *status) sigsuspend(&oldmask); sigclearmask(); + + err = 0; } while (gotsigchld); return err;