aboutsummaryrefslogtreecommitdiff
path: root/include/mingw.h
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 /include/mingw.h
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 'include/mingw.h')
-rw-r--r--include/mingw.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/include/mingw.h b/include/mingw.h
index a1869227d..8a695d2d2 100644
--- a/include/mingw.h
+++ b/include/mingw.h
@@ -93,10 +93,14 @@ IMPL(getpwent,struct passwd *,NULL,void)
93 * signal.h 93 * signal.h
94 */ 94 */
95#define SIGKILL 9 95#define SIGKILL 9
96#define SIGPIPE 13
96 97
97#define SIG_UNBLOCK 1 98#define SIG_UNBLOCK 1
98 99
99NOIMPL(FAST_FUNC sigprocmask_allsigs, int how UNUSED_PARAM); 100NOIMPL(FAST_FUNC sigprocmask_allsigs, int how UNUSED_PARAM);
101typedef void (*sighandler_t)(int);
102sighandler_t winansi_signal(int signum, sighandler_t handler);
103#define signal(s, h) winansi_signal(s, h)
100 104
101/* 105/*
102 * stdio.h 106 * stdio.h