putw return value

Guy Harris guy at sun.uucp
Thu Sep 18 04:42:41 AEST 1986


> Question:  What should "putw" return?
> 
> Our I/O library returns the error code for the "putw" operation, which is
> usually 0.   In perusing BSD4.2 and ATT5.2.2 source, I see the same 
> functionality.

Which probably means it predates both of them, and worked that way in the
V7-vintage standard I/O library.  This would indicate it's probably supposed
to.

> Yet the man pages seem to indicate that "putw" should return the "word"
> written.

The trouble with returning the value written is that if you write the value
-1, this can't be distinguished from EOF (at least on UNIX implementations,
and others where EOF is -1), and unless you *know* that you won't be writing
that value, you have to call "ferror" on that stream to detect errors.

> Is there a discrepancy between the code and the documentation?

Well, if there isn't, how do you explain the fact that the code and
documentation disagree?  More likely, you meant "There is a discrepancy
between the code and the documentation; which is correct?" to which the
answer is, most likely, "The code, in this case; the code has been that way
for a long time, though several variations of UNIX, and 'fixing' it to agree
with the documentation would cause other problems."

> (The Perennial C test suite makes mention in a "bugs" section that the
> VAX 11/750 also returns "0" for putw in the particular test.)

Which is a very odd way of putting it; did the people who did that test
suite to work differently on a VAX-11/780, for instance?
-- 
	Guy Harris
	{ihnp4, decvax, seismo, decwrl, ...}!sun!guy
	guy at sun.com (or guy at sun.arpa)



More information about the Comp.lang.c mailing list