From b8ba6796793816daeb7e01e269b0377f1dbdb747 Mon Sep 17 00:00:00 2001
From: Mark Grondona <mgrondona@llnl.gov>
Date: Mon, 6 Oct 2003 23:36:12 +0000
Subject: [PATCH]  o cbuf_write_from_fd() may return short reads -- read until
 EOF.

---
 src/srun/srun.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/srun/srun.c b/src/srun/srun.c
index a72c94d23e9..542e82980f3 100644
--- a/src/srun/srun.c
+++ b/src/srun/srun.c
@@ -551,8 +551,15 @@ _build_script (char *fname, int file_type)
 		int len = buffer ? strlen(buffer) : 0;
 		int size;
 
-		if ((size = cbuf_write_from_fd(cb, fd, -1, NULL)) < 0) 
-			error("Unable to read %s", fname);
+		while ((size = cbuf_write_from_fd(cb, fd, -1, NULL)) > 0) 
+			;
+
+		if (size < 0) {
+			error ("unable to read %s: %m", fname);
+			cbuf_destroy(cb);
+			return NULL;
+		}
+
 		cbuf_write(cb, "\0", 1, NULL);
 
 		xrealloc(buffer, cbuf_used(cb) + len +1);
-- 
GitLab