hush/libbb
Stephen Heumann 656769d136 Work around GNO libc's buggy sigprocmask implementation by defining our own version of it. This should fix issues where hush could hang in wait() calls.
The sigprocmask implementation in GNO 2.0.6 libc has bugs that cause it to never actually unblock signals that have been blocked. This was causing many signals to remain blocked when they shouldn't be, particularly after running signal handlers.

This problem combined with a kernel issue (wait() calls won't recognize that a child has finished if SIGCHLD is blocked) to cause hangs in certain conditions.

This patch works around these issues by defining our own non-buggy version of sigprocmask in place of libc's.
2015-01-15 18:02:33 -06:00
..
appletlib.c exit with 127 if appled name wasn't found - it's more POSIXy 2014-11-17 17:03:47 +01:00
bb.basename.c Move all the source files to 15-character ProDOS-compatible file names. 2014-11-02 22:11:07 -06:00
bb.qsort.c Move all the source files to 15-character ProDOS-compatible file names. 2014-11-02 22:11:07 -06:00
bb.strtonum.c Move all the source files to 15-character ProDOS-compatible file names. 2014-11-02 22:11:07 -06:00
cmp.str.array.c Move all the source files to 15-character ProDOS-compatible file names. 2014-11-02 22:11:07 -06:00
conc.pathfile.c Move all the source files to 15-character ProDOS-compatible file names. 2014-11-02 22:11:07 -06:00
endofname.c move endofname() to libbb 2013-02-26 00:36:53 +01:00
error.retval.c Move all the source files to 15-character ProDOS-compatible file names. 2014-11-02 22:11:07 -06:00
escape.seq.c Move all the source files to 15-character ProDOS-compatible file names. 2014-11-02 22:11:07 -06:00
exec.gno.c If hush is invoked as a login shell, set up a handler so it will be invoked when system() is called. 2015-01-01 17:33:01 -06:00
full.write.c Move all the source files to 15-character ProDOS-compatible file names. 2014-11-02 22:11:07 -06:00
get.exec.path.c Include copyright/license notices in all c files, including a BSD-style license for ones written from scratch by me. 2014-12-15 17:27:46 -06:00
get.line.c Changes to handle the use of \r as newline on the IIgs. 2014-11-08 19:58:11 -06:00
getopt32.c Properly reset getopt in each invocation of getopt32() on BSD-type systems, including GNO and OS X. 2014-12-02 15:31:50 -06:00
last.char.is.c Move all the source files to 15-character ProDOS-compatible file names. 2014-11-02 22:11:07 -06:00
lineedit.c Reset to normal cursor when the command prompt is printed. 2015-01-08 17:10:46 -06:00
llist.c main: free suid_config list after use 2011-05-16 12:21:31 +02:00
mempcpy.c Include copyright/license notices in all c files, including a BSD-style license for ones written from scratch by me. 2014-12-15 17:27:46 -06:00
messages.c Add code to get the path of the current executable, which we need to re-execute the shell. 2014-11-07 23:06:34 -06:00
parse.mode.c Move all the source files to 15-character ProDOS-compatible file names. 2014-11-02 22:11:07 -06:00
perror.msg.c Move all the source files to 15-character ProDOS-compatible file names. 2014-11-02 22:11:07 -06:00
pgrp.c Include copyright/license notices in all c files, including a BSD-style license for ones written from scratch by me. 2014-12-15 17:27:46 -06:00
platform.c Fix the implementation of vasprintf to work with ORCA/C's varargs implementation. Also, shrink the stack-allocated buffer in it. 2014-11-03 16:08:43 -06:00
poll.c Add an implementation of poll() written in terms of select(), to work around the lack of poll() on GNO. 2014-11-03 12:26:43 -06:00
printable.str.c Move all the source files to 15-character ProDOS-compatible file names. 2014-11-02 22:11:07 -06:00
qsort.c Add our own version of qsort, because the one from ORCA/C is recursive and can use thousands of KB of stack space. 2014-12-03 10:49:24 -06:00
read.c *: make GNU licensing statement forms more regular 2010-08-16 20:14:46 +02:00
read.key.c Work around problem where hush would hang after another process was ^C'd while reading from the terminal. 2015-01-01 23:16:26 -06:00
s.gethostname.c Move all the source files to 15-character ProDOS-compatible file names. 2014-11-02 22:11:07 -06:00
safe.poll.c Move all the source files to 15-character ProDOS-compatible file names. 2014-11-02 22:11:07 -06:00
safe.strncpy.c Move all the source files to 15-character ProDOS-compatible file names. 2014-11-02 22:11:07 -06:00
safe.write.c Move all the source files to 15-character ProDOS-compatible file names. 2014-11-02 22:11:07 -06:00
signal.names.c Change libbb/signal.names.c to use C89-style constructs for ORCA/C compatibility. 2014-11-02 23:15:17 -06:00
signals.c Work around GNO libc's buggy sigprocmask implementation by defining our own version of it. This should fix issues where hush could hang in wait() calls. 2015-01-15 18:02:33 -06:00
skip.whitespc.c Move all the source files to 15-character ProDOS-compatible file names. 2014-11-02 22:11:07 -06:00
time.c Disable functionality for printing the time in the shell's prompt. This required strftime(), which is missing in GNO 2.0.6. 2014-11-05 18:00:35 -06:00
unicode.c Various changes for GNO and ORCA/C compatibility. 2014-11-02 18:30:31 -06:00
verror.msg.c Changes to handle the use of \r as newline on the IIgs. 2014-11-08 19:58:11 -06:00
vfork.and.run.c Include copyright/license notices in all c files, including a BSD-style license for ones written from scratch by me. 2014-12-15 17:27:46 -06:00
waitpid.emul.c Add an emulation of waitpid that should be better than the one in libc. 2014-11-07 12:12:18 -06:00
wfopen.c *: make GNU licensing statement forms more regular 2010-08-16 20:14:46 +02:00
xatonum.c Restructure macros in libbb/xatonum.c and its template file to work with the ORCA/C preprocessor. 2014-11-03 20:17:51 -06:00
xatonum.tmplt.c Restructure macros in libbb/xatonum.c and its template file to work with the ORCA/C preprocessor. 2014-11-03 20:17:51 -06:00
xfunc.die.c Update the makefile for building on modern *nix systems. Rename to "Makefile" so we can build with just "make." 2014-12-15 16:47:12 -06:00
xfuncs.c Implement "close-on-exec" functionality for GNO. 2014-12-03 21:04:46 -06:00
xfuncs.printf.c Remove libbb/copyfd.c and an unused function that was its only caller. 2014-11-20 20:00:21 -06:00
xgetcwd.c Translate colons to slashes in the current path name, for compatibility with Unix-style usage. 2014-12-03 23:02:15 -06:00
xrealloc.vec.c Move all the source files to 15-character ProDOS-compatible file names. 2014-11-02 22:11:07 -06:00