]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
fold: exit promptly upon write errors
authorPádraig Brady <P@draigBrady.com>
Tue, 16 Sep 2025 12:07:35 +0000 (13:07 +0100)
committerPádraig Brady <P@draigBrady.com>
Tue, 16 Sep 2025 13:10:31 +0000 (14:10 +0100)
* NEWS: Mention the improvement.
* src/fold.c (fold_file): Check for write errors
after each buffer read from stdin.
* tests/misc/write-errors.sh: Add test cases.

NEWS
src/fold.c
tests/misc/write-errors.sh

diff --git a/NEWS b/NEWS
index 35f3ebe26a285eda44b1bed0727f6663c310f8d3..6846720f16f4fec9c8517bcd7eea9a0e5f18268c 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -142,6 +142,9 @@ GNU coreutils NEWS                                    -*- outline -*-
   'factor' is now much faster at identifying large prime numbers,
   and significantly faster on composite numbers greater than 2^128.
 
+  fold now exits promptly upon receiving a write error,
+  which is significant when reading large / unbounded inputs.
+
   'seq' is more accurate with large integer start values.
   Previously 'seq 18446744073709551617 inf | head -n1' would
   output the number before the user specified start value.
index 1908659630d16ef2f07104aa0aba040430d8abfe..a2ca953d4a309764b41918654596e330a74ff2e2 100644 (file)
@@ -272,6 +272,10 @@ fold_file (char const *filename, size_t width)
         }
       if (feof (istream))
         break;
+
+      if (ferror (stdout))
+        write_error ();
+
       /* We read a full buffer of complete characters.  */
       offset_in = 0;
 
index 35487c6e03ca64b4b23f3145f83d392f8fa77482..5bc381f5f81ef9b033618a86ce6f70ead4bdc18d 100755 (executable)
@@ -34,7 +34,9 @@ dd if=/dev/zero
 expand /dev/zero
 factor --version; yes 1 | factor
 # TODO: fmt /dev/zero
-# TODO: fold -b /dev/zero
+fold /dev/zero
+fold -b /dev/zero
+fold -c /dev/zero
 head -z -n-1 /dev/zero
 join -a 1 -z /dev/zero /dev/null
 # TODO: nl --version; yes | nl