diff --git a/NEWS b/NEWS index 473b7c21d..7d46a5bce 100644 --- a/NEWS +++ b/NEWS @@ -22,7 +22,7 @@ GNU coreutils NEWS -*- outline -*- ** Improvements - 'groups' and 'id' will now exit immediately upon receiving a write error, + 'groups' and 'id' will now exit sooner after a write error, which is significant when listing information for many users. 'nl' now supports multi-byte --section-delimiter characters. diff --git a/src/groups.c b/src/groups.c index 3daf410d9..57acd376b 100644 --- a/src/groups.c +++ b/src/groups.c @@ -135,7 +135,7 @@ main (int argc, char **argv) ok = false; putchar ('\n'); - if (fflush (stdout) < 0) + if (ferror (stdout)) write_error (); } } diff --git a/src/id.c b/src/id.c index 02c3bf9b5..27b3e8b70 100644 --- a/src/id.c +++ b/src/id.c @@ -277,6 +277,8 @@ main (int argc, char **argv) ruid = euid = pwd->pw_uid; rgid = egid = pwd->pw_gid; print_stuff (pw_name); + if (ferror (stdout)) + write_error (); } free (pw_name); } @@ -458,7 +460,4 @@ print_stuff (char const *pw_name) { putchar (opt_zero ? '\0' : '\n'); } - - if (fflush (stdout) < 0) - write_error (); }