summaryrefslogtreecommitdiff
path: root/system-bsd.c
diff options
context:
space:
mode:
authortgoodwin <tgoodwin>1998-07-15 12:39:30 +0000
committerToby Goodwin <toby@paccrat.org>2015-05-16 21:23:08 +0100
commit5fd501ac0bf1a9d8515e7267016e87b35bc39ba6 (patch)
tree07f586166acd83bc8b772302cf4938f877b7ae04 /system-bsd.c
parent918e8f9b8935ad2034bc0d458c64d5c688b2bab5 (diff)
tidy this up a bit
Diffstat (limited to 'system-bsd.c')
-rw-r--r--system-bsd.c38
1 files changed, 12 insertions, 26 deletions
diff --git a/system-bsd.c b/system-bsd.c
index b6b94a2..5d52cdd 100644
--- a/system-bsd.c
+++ b/system-bsd.c
@@ -19,16 +19,12 @@ extern void writeall(int fd, char *buf, size_t remain) {
safe_buf = buf;
safe_remain = remain;
for (i = 0; safe_remain > 0; buf += i, safe_remain -= i) {
- interrupt_happened = FALSE;
- if (!sigsetjmp(slowbuf.j, 1)) {
+ if (sigsetjmp(slowbuf.j, 1) == 0) {
slow = TRUE;
- if (interrupt_happened)
- break;
- else if ((i = write(fd, safe_buf, safe_remain)) <= 0)
+ if ((i = write(fd, safe_buf, safe_remain)) <= 0)
break; /* abort silently on errors in write() */
} else
break;
- slow = FALSE;
}
slow = FALSE;
sigchk();
@@ -37,38 +33,28 @@ extern void writeall(int fd, char *buf, size_t remain) {
extern int rc_read(int fd, char *buf, size_t n) {
ssize_t r;
- interrupt_happened = FALSE;
- if (!sigsetjmp(slowbuf.j, 1)) {
+ if (sigsetjmp(slowbuf.j, 1) == 0) {
slow = TRUE;
- if (!interrupt_happened)
- r = read(fd, buf, n);
- else
- r = -2;
- } else
- r = -2;
- slow = FALSE;
- if (r == -2) {
+ r = read(fd, buf, n);
+ } else {
errno = EINTR;
r = -1;
}
+ slow = FALSE;
+
return r;
}
static int r = -1;
extern pid_t rc_wait(int *stat) {
- interrupt_happened = FALSE;
- if (!sigsetjmp(slowbuf.j, 1)) {
+ if (sigsetjmp(slowbuf.j, 1) == 0) {
slow = TRUE;
- if (!interrupt_happened)
- r = wait(stat);
- else
- r = -2;
- } else
- r = -2;
- slow = FALSE;
- if (r == -2) {
+ r = wait(stat);
+ } else {
errno = EINTR;
r = -1;
}
+ slow = FALSE;
+
return r;
}