From: Jim Meyering Date: Mon, 22 Sep 2003 16:00:49 +0000 (+0000) Subject: (tee): Once a write failure has occurred, don't bother X-Git-Tag: v5.1.0~558 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=09203489dd8f128542032b6713eb5979463e1742;p=thirdparty%2Fcoreutils.git (tee): Once a write failure has occurred, don't bother writing anything more to that stream. --- diff --git a/src/tee.c b/src/tee.c index a1eb4753d0..a45e4bfde3 100644 --- a/src/tee.c +++ b/src/tee.c @@ -209,10 +209,13 @@ tee (int nfiles, const char **files) /* Write to all NFILES + 1 descriptors. Standard output is the first one. */ for (i = 0; i <= nfiles; i++) - { - if (descriptors[i] != NULL) - fwrite (buffer, bytes_read, 1, descriptors[i]); - } + if (descriptors[i] + && fwrite (buffer, bytes_read, 1, descriptors[i]) != bytes_read) + { + error (0, errno, "%s", files[i]); + descriptors[i] = NULL; + ret = 1; + } } if (bytes_read == -1) @@ -223,8 +226,7 @@ tee (int nfiles, const char **files) /* Close the files, but not standard output. */ for (i = 1; i <= nfiles; i++) - if (descriptors[i] != NULL - && (ferror (descriptors[i]) || fclose (descriptors[i]) == EOF)) + if (descriptors[i] && fclose (descriptors[i]) != 0) { error (0, errno, "%s", files[i]); ret = 1;