aboutsummaryrefslogtreecommitdiffstats
path: root/src/libexecline/el_forx_pidinfo.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libexecline/el_forx_pidinfo.c')
-rw-r--r--src/libexecline/el_forx_pidinfo.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/libexecline/el_forx_pidinfo.c b/src/libexecline/el_forx_pidinfo.c
index 61c5a26..8bd12bb 100644
--- a/src/libexecline/el_forx_pidinfo.c
+++ b/src/libexecline/el_forx_pidinfo.c
@@ -1,5 +1,7 @@
/* ISC license. */
+#include <errno.h>
+
#include <skalibs/djbunix.h>
#include <execline/execline.h>
@@ -15,11 +17,13 @@ int el_forx_isok (unsigned short const *tab, unsigned int n, unsigned short code
void el_forx_sigchld_handler (int sig)
{
+ int e = errno ;
for (;;)
{
ssize_t r = wait_pids_nohang(el_forx_pidinfo->tab, el_forx_pidinfo->len, &el_forx_pidinfo->wstat) ;
if (r <= 0) break ;
el_forx_pidinfo->tab[r-1] = el_forx_pidinfo->tab[--el_forx_pidinfo->len] ;
}
+ errno = e ;
(void)sig ;
}