readv() return and errno
Doesn't seem confusing at all.
RETURN VALUE
On success readv returns the number of bytes read. On
success writev returns the number of bytes written. On
error, -1 is returned, and errno is set appropriately.
ERRORS
EINVAL An invalid argument was given. For instance count
might be greater than MAX_IOVEC, or zero. fd could
also be attached to an object which is unsuit- able for reading (for readv) or writing (for writev).
I don't see much in the way of waffle words. If count is greater than MAX_IOVEC or zero you get EINVAL. I suppose your next argument is if count exceeds MAX_IOVEC a return of 0 is okay since, hopefully, nothing was read? Where do you read a non-error return of zero is acceptable for count of 0? I states EINVAL for a count of 0.
If your going to rework the manpage, then drop a count of 0 as an error, otherwise fix the kernel with the trival patch.
Jim
Quoted 77 lines · Balbir Singh
Subject: Re:
readv()return and errno
I agree it is not a big thing at all, zero not returning any error. Yes! I read and understood the MAY return an error, it makes complete sense.I agree, the Linux man pages need a lot of work, if they are going to be even close to reflecting some of things in the kernel.
Thanks,
BalbirQuoted 49 lines · --- [email protected] wrote:
Quoted 1 line · Jim Hollenback
According to readv(2) EINVAL is returned for an
invalid
Quoted 1 line
argument.
Right.
Quoted 1 line
The examples given were count might be greater
than
Quoted 1 line
MAX_IOVECor zero.Wrong, or at least confusingly phrased.
In the good old days, a man page described what the system did,
and the ERRORS section gave the reasons for the possible error
returns.
These days a man page describes a function present on many
Unix-like systems, and not all systems have precisely the
same behaviour. POSIX man pages therefore distinguish under
ERRORS the two possibilities "if foo then this error must be
returned", and "if foo then this error may be returned".Linux man pages do not (yet) make this distinction - adding this is a lot of careful work, and so far nobody is doing this [hint..].
In other words, the ERRORS section in Linux man pages is
to be interpreted as "if foo then this error may be returned".Note that it may not be desirable at all to do things that way,
there is no need for kernel patches, it just means that systems
exist with this behaviour, so that authors of portable programs
must take this into account.Balbir Singh wrote:
Quoted 7 lines
Quoted 1 line
Apply this trivial patch, if you want the required
behaviour
But the behaviour is not required.
Paul Larson makes the same mistake.Andries
__________________________________________________
Do You Yahoo!?
Yahoo! Movies - coverage of the 74th Academy Awards®
http://movies.yahoo.com/
-- End of excerpt from Balbir Singh
Quoted 2 lines
I don't see much in the way of waffle words. If count is greater than
MAX_IOVECor zero you get EINVAL. I suppose your next argument is if
SuS is definitive not the man page. That page btw is woefully out of date
Quoted 3 lines
If your going to rework the manpage, then drop a count of 0 as an error= ,
otherwise fix the kernel with the trival patch.
The man page is buggy if anything is.