Hi,

The second example in the write(2) CAVEATS section is identical to
the corresponding example in the read(2) page:

        while ((nr = write(fd, buf, sizeof(buf))) != -1 && nr != 0)

read(2) returns 0 on EOF, but that logic is inapplicable to write(2).

I'm not totally sure what the correct code should be but attached is
my best guess.

Also, if "nr" is for "Number Read", because this is the write(2)
page, would "nw" be better?

--
Scott Cheloha

Index: lib/libc/sys/write.2
===================================================================
RCS file: /cvs/src/lib/libc/sys/write.2,v
retrieving revision 1.39
diff -u -p -r1.39 write.2
--- lib/libc/sys/write.2        5 Feb 2015 02:33:09 -0000       1.39
+++ lib/libc/sys/write.2        17 Sep 2017 03:02:57 -0000
@@ -311,7 +311,7 @@ function call appeared in
 Error checks should explicitly test for \-1.
 Code such as
 .Bd -literal -offset indent
-while ((nr = write(fd, buf, sizeof(buf))) > 0)
+while ((nw = write(fd, buf, sizeof(buf))) > 0)
 .Ed
 .Pp
 is not maximally portable, as some platforms allow for
@@ -325,5 +325,5 @@ and
 may appear as a negative number distinct from \-1.
 Proper loops should use
 .Bd -literal -offset indent
-while ((nr = write(fd, buf, sizeof(buf))) != -1 && nr != 0)
+while ((nw = write(fd, buf, sizeof(buf))) != -1 && nw == sizeof(buf))
 .Ed

Reply via email to