From 163b8aae99b1b206e5ae85763e21f47b7651f9c4 Mon Sep 17 00:00:00 2001 From: "Erik M. Bray" Date: Tue, 4 Dec 2018 12:44:23 +0000 Subject: [PATCH 1/3] a version of the writeandcheck.patch from Sage that works against 4.10 --- src/sysfiles.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/sysfiles.c b/src/sysfiles.c index 2250784..45b4347 100644 --- a/src/sysfiles.c +++ b/src/sysfiles.c @@ -159,21 +159,23 @@ SYS_SY_BUFFER syBuffers[32]; /* utility to check return value of 'write' */ ssize_t echoandcheck(int fid, const char *buf, size_t count) { int ret; + static int depth = 0; + depth++; if (syBuf[fid].type == gzip_socket) { ret = gzwrite(syBuf[fid].gzfp, buf, count); - if (ret < 0) + if (ret < 0 && depth == 1) ErrorQuit( "Could not write to compressed file, see 'LastSystemError();'\n", 0L, 0L); } else { ret = write(syBuf[fid].echo, buf, count); - if (ret < 0) + if (ret < 0 && depth == 1) ErrorQuit("Could not write to file descriptor %d, see " "'LastSystemError();'\n", syBuf[fid].fp, 0L); } - + depth--; return ret; } @@ -1636,21 +1638,27 @@ Int SyWrite(Int fid, const void * ptr, size_t len) static ssize_t SyWriteandcheck(Int fid, const void * buf, size_t count) { int ret; + static int depth = 0; + depth++; if (syBuf[fid].type == gzip_socket) { ret = gzwrite(syBuf[fid].gzfp, buf, count); - if (ret < 0) + if (ret < 0 && depth == 1) { ErrorQuit( "Cannot write to compressed file, see 'LastSystemError();'\n", 0L, 0L); + } } else { ret = write(syBuf[fid].fp, buf, count); - if (ret < 0) + if (ret < 0 && depth == 1) { ErrorQuit("Cannot write to file descriptor %d, see " "'LastSystemError();'\n", syBuf[fid].fp, 0L); + } } + depth--; + return ret; } -- 1.9.1