From 6659eb354e9b14c15c3117de0ddffb4704298d1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?= <grubba@grubba.org> Date: Fri, 7 Aug 2009 16:23:45 +0200 Subject: [PATCH] Same in append_buffer(). Rev: src/modules/Pipe/pipe.c:1.66 --- src/modules/Pipe/pipe.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/modules/Pipe/pipe.c b/src/modules/Pipe/pipe.c index 420e7226cd..05f2740f89 100644 --- a/src/modules/Pipe/pipe.c +++ b/src/modules/Pipe/pipe.c @@ -323,8 +323,19 @@ static INLINE int append_buffer(struct pike_string *s) if(THIS->fd!= -1) { + ptrdiff_t len = s->len; + char *data = s->str; + ptrdiff_t bytes; + fd_lseek(THIS->fd, THIS->pos, SEEK_SET); - fd_write(THIS->fd, s->str, s->len); + while (len > 0) { + do { + bytes = fd_write(THIS->fd, data, len); + } while ((bytes < 0) && (errno == EINTR)); + if (bytes < 0) break; + data += bytes; + len -= bytes; + } THIS->pos+=s->len; return 0; } -- GitLab