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"); >  return 0; > } > > Linux: > $ gcc -Wall test.c > $ ./a.out > > Cygwin: > $ gcc -Wall test.c > $ ./a.exe > writev: Invalid argument > > This behavior is buggy per: > >       EINVAL ... the vector count count is less than zero or greater than the permitted maximum ... I applied a patch to CVS. There's a central function (check_iovec) checking the validity of the iovec input and this function returns EINVAL if iovlen is <= 0, the total number of bytes otherwise. However, check_iovec works fine with iovlen 0 and all the callers (readv/writev/recvmsg/sendmsg) are handling a 0 return from this function, too, so a 0 return is nothing to worry about. Please given the next snapshot from http://cygwin.com/snapshots/ a try. Thanks, Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Maintainer cygwin AT cygwin DOT com Red Hat