updated all base packages
[hdw-linux/hdw-linux.git] / packages / base / bash / avoid_wcontinued.patch
diff --git a/packages/base/bash/avoid_wcontinued.patch b/packages/base/bash/avoid_wcontinued.patch
new file mode 100644 (file)
index 0000000..cd85f47
--- /dev/null
@@ -0,0 +1,27 @@
+diff -Naur bash-3.0.orig/jobs.c bash-3.0/jobs.c
+--- ./jobs.c   2004-10-12 08:50:11.643481280 +0000
++++ ./jobs.c   2004-10-12 08:51:35.110792320 +0000
+@@ -2476,6 +2476,7 @@
+   PROCESS *child;
+   pid_t pid;
+   int call_set_current, last_stopped_job, job, children_exited, waitpid_flags;
++  static int wcontinued_not_supported = 0;
+   call_set_current = children_exited = 0;
+   last_stopped_job = NO_JOB;
+@@ -2489,7 +2490,15 @@
+                       : 0;
+       if (sigchld || block == 0)
+       waitpid_flags |= WNOHANG;
++    retry:
++      if (wcontinued_not_supported)
++      waitpid_flags &= ~WCONTINUED;
+       pid = WAITPID (-1, &status, waitpid_flags);
++      if (pid == -1 && errno == EINVAL)
++      {
++        wcontinued_not_supported = 1;
++        goto retry;
++      }
+       /* The check for WNOHANG is to make sure we decrement sigchld only
+        if it was non-zero before we called waitpid. */