Re: Cygwin's writev() non-standard behavior

2014-04-23 Thread Christopher Faylor
On Wed, Apr 23, 2014 at 05:48:25PM +0200, qq qq wrote: >>I applied a patch to CVS. >Thanks.  Although I could not see it in ViewVC -- the page stops >loading at the "configure" script. Yeah. It does seem screwed up. One more reason to move to git as soon as I'm over the flu. cgf -- Problem re

Re: Cygwin's writev() non-standard behavior

2014-04-23 Thread Corinna Vinschen
On Apr 23 17:48, qq qq wrote: > > I applied a patch to CVS. > > Thanks.  Although I could not see it in ViewVC -- the page stops loading at > the "configure" script. > > Anyhow, I suppose that check_iovec still returns EINVAL for count==0 in any > read functions:  simply returning > "tot"==0 me

Re: Cygwin's writev() non-standard behavior

2014-04-23 Thread Eric Blake
On 04/23/2014 08:53 AM, qq qq wrote: [your mailer should really be taught to use In-Reply-To correctly; it's annoying that every message from you starts a new thread] >> furthermore, cygwin should emulate Linux behavior, even if POSIX >> doesn't define the behavior. > > And which is why I compar

Re: Cygwin's writev() non-standard behavior

2014-04-23 Thread qq qq
> I applied a patch to CVS. Thanks.  Although I could not see it in ViewVC -- the page stops loading at the "configure" script. Anyhow, I suppose that check_iovec still returns EINVAL for count==0 in any read functions:  simply returning "tot"==0 means EOF in many (if not all) of them. -- Prob

Re: Cygwin's writev() non-standard behavior

2014-04-23 Thread Corinna Vinschen
On Apr 23 16:06, qq qq wrote: > writev() does not accept count 0 but it should > > $ cat test.c > #include > #include > #include > #include > #include > > int main() > { >  struct iovec vec; > >  memset(&vec, 0, sizeof(vec)); >  if (writev(1, &vec, 0) < 0) >    perror("writev"); >  ret

Re: Cygwin's writev() non-standard behavior

2014-04-23 Thread qq qq
> furthermore, cygwin should emulate Linux behavior, even if POSIX > doesn't define the behavior. And which is why I compared Linux vs. Cygwin in my original post ? > so your argument is flawed - you have triggered undefined behavior. Same difference: $ cat test.c #include #include #include #

Re: Cygwin's writev() non-standard behavior

2014-04-23 Thread Eliot Moss
Using the link Eric Blake provided, I extract this from the POSIX specification for writev: "The iovcnt argument is valid if greater than 0 ..." So, while the man page is a little off, the response seems to be correct. You cold argue, and I might agree, that POSIX should have allowed a 0 and sa

Re: Cygwin's writev() non-standard behavior

2014-04-23 Thread Eric Blake
On 04/23/2014 08:06 AM, qq qq wrote: > writev() does not accept count 0 but it should POSIX says: http://pubs.opengroup.org/onlinepubs/9699919799/functions/writev.html If fildes refers to a regular file and all of the iov_len members in the array pointed to by iov are 0, writev() shall return 0 a

Cygwin's writev() non-standard behavior

2014-04-23 Thread qq qq
writev() does not accept count 0 but it should $ cat test.c #include #include #include #include #include int main() {  struct iovec vec;  memset(&vec, 0, sizeof(vec));  if (writev(1, &vec, 0) < 0)    perror("writev");  return 0; } Linux: $ gcc -Wall test.c $ ./a.out Cygwin: $ gcc -Wa