aboutsummaryrefslogtreecommitdiff
path: root/libbb
diff options
context:
space:
mode:
authorRon Yorston <rmy@pobox.com>2018-12-11 15:52:31 +0000
committerRon Yorston <rmy@pobox.com>2018-12-11 15:52:31 +0000
commit68ddd4ec3c1275c66e01172498055817cbb10f04 (patch)
treee31826ae839535bef102a7ad61bc0e029b20ffae /libbb
parent6c3fd20e67cab2331b1e862c03eeb95a70625454 (diff)
downloadbusybox-w32-68ddd4ec3c1275c66e01172498055817cbb10f04.tar.gz
busybox-w32-68ddd4ec3c1275c66e01172498055817cbb10f04.tar.bz2
busybox-w32-68ddd4ec3c1275c66e01172498055817cbb10f04.zip
win32: emulate SIGPIPE
The code to check whether a write error is due to a broken pipe can now either: - return with error EPIPE; - cause the process to exit with code 128+SIGPIPE. The default is the latter but the behaviour can be changed by issuing signal(SIGPIPE, SIG_IGN) and signal(SIGPIPE, SIG_DFL) calls. No actual signal is involved so kill can't send SIGPIPE and handlers other than SIG_IGN and SIG_DFL aren't supported. This does, however, avoid unsightly 'broken pipe' errors from commands like the example in GitHub issue #99: dd if=/dev/urandom | tr -dc _A-Z-a-z-0-9 | head -c${1:-32};echo;
Diffstat (limited to 'libbb')
-rw-r--r--libbb/u_signal_names.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/libbb/u_signal_names.c b/libbb/u_signal_names.c
index f7d598c7a..036ad0038 100644
--- a/libbb/u_signal_names.c
+++ b/libbb/u_signal_names.c
@@ -27,6 +27,10 @@
27 27
28#include "libbb.h" 28#include "libbb.h"
29 29
30#if ENABLE_PLATFORM_MINGW32
31# undef SIGPIPE
32#endif
33
30/* Believe it or not, but some arches have more than 32 SIGs! 34/* Believe it or not, but some arches have more than 32 SIGs!
31 * HPPA: SIGSTKFLT == 36. */ 35 * HPPA: SIGSTKFLT == 36. */
32 36