readv() return and errno
In doing some testing on the project I'm working on I came across something that is causing a bit of confusion on my part.
According to readv(2) EINVAL is returned for an invalid argument. The examples given were count might be greater than MAX_IOVEC or zero. The test case I am working with has count = 0 and I get return of 0 and errno 0 instead of the expected -1 and errno EINVAL.
Am I missing something?
Thanks!
Jim Hollenback
Quoted 10 lines · Jim Hollenback
In doing some testing on the project I'm working on I came across something that is causing a bit of confusion on my part.
According to readv(2) EINVAL is returned for an invalid argument. The examples given were count might be greater than
MAX_IOVECor zero. The test case I am working with has count = 0 and I get return of 0 and errno 0 instead of the expected -1 and errno EINVAL.Am I missing something?
http://www.opengroup.org/onlinepubs/007904975/
"The Open Group Base Specifications Issue 6", IEEE Std 1003.1-2001:
The readv() function may fail if:
[EINVAL]
The iovcnt argument was less than or equal to 0, or greater than {IOV_MAX}.
Notice the "may"? From the same document:
may
Describes a feature or behavior that is optional for an implementation that conforms to IEEE Std 1003.1-2001. An application should not rely on the existence of the feature or behavior. An application that relies on such a feature or behavior cannot be assured to be portable across conforming implementations.
To avoid ambiguity, the opposite of may is expressed as need not, instead of may not.
So the 0 there just mean nothing, exactly what you get.
-alex