On Thu, Apr 17, 2025 at 10:35 PM Grisha Levit <grishale...@gmail.com> wrote: > On Fri, Apr 18, 2025, 01:18 Jim Meyering <j...@meyering.net> wrote: > > > > On Tue, Apr 15, 2025 at 9:17 PM Jim Meyering <j...@meyering.net> wrote: > > ... > > > We're going to have to revise that code. > > > The difference I see is that before rawhide, that fclose would fail. > > > It's perfectly fine for fclose to succeed in this case, as now happens > > > on rawhide (because with 4k BUFSIZ, the fclose wrote nothing -- the > > > preceding 4096-byte write is what failed). > > > > > > Here's a better patch: (technically, we could factor it somewhat, but > > > readability would suffer disproportionately) > > > > I didn't take the time to find a precise commit, but this bug predates > > the move from closeout.c to gnulib's close-stdout.c in 2006. As I > > write this, I'm installing Fedora 42. > > I'll probably push the attached to gnulib tomorrow: > > > Exposed via Fedora 42's new glibc vs grep's --help being precisely > > 4096 bytes. > > AFAICT this is not related to F42 or new glibc, it's just longer help > text in grep-3.12 + Fedora patch making it even longer. But you should > see the same behavior on existing systems with e.g.: > > $ { env printf %4095s; env printf %4096s; } > /dev/full > printf: write error: Broken pipe > printf: write error
Nice. Thanks. Will adjust the commit log and ChangeLog. I confirmed that coreutils-9.7's printf with this fix is no longer susceptible to that failure. Surprised to find that coreutils-9.5 (fedora 41 stock) works fine: $ { /bin/printf %4095s; /bin/printf %4096s; } > /dev/full /bin/printf: write error: No space left on device /bin/printf: write error: No space left on device