bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: poll() emulation in git


From: Bastien ROUCARIES
Subject: Re: poll() emulation in git
Date: Wed, 5 Sep 2012 13:55:18 +0200

On Wed, Sep 5, 2012 at 1:24 PM, Joachim Schmitz <address@hidden> wrote:
>> From: Joachim Schmitz [mailto:address@hidden
>> Sent: Tuesday, September 04, 2012 1:49 PM
>> To: 'Junio C Hamano'
>> Cc: 'address@hidden'; 'Erik Faye-Lund'
>> Subject: RE: [PATCH v2] Support non-WIN32 system lacking poll() while 
>> keeping the WIN32 part intact
>>
>> > From: Junio C Hamano [mailto:address@hidden
>> > Sent: Friday, August 24, 2012 9:47 PM
>> > To: Joachim Schmitz
>> > Cc: address@hidden; 'Erik Faye-Lund'
>> > Subject: Re: [PATCH v2] Support non-WIN32 system lacking poll() while 
>> > keeping the WIN32 part intact
>> >
>> > "Joachim Schmitz" <address@hidden> writes:
>> >
>> > > Different, but related question: would poll.[ch] be allowed to #include 
>> > > "git-compat-util.h"?
>> >
>> > Seeing other existing generic wrappers directly under compat/,
>> > e.g. fopen.c, mkdtemp.c, doing so, I would say why not.
>> >
>> > Windows folks (I see Erik is already CC'ed, which is good ;-),
>> > please work with Joachim to make sure such a move won't break your
>> > builds.  I believe that it should just be the matter of updating a
>> > couple of paths in the top-level Makefile.
>>
>> Haven't heard anything from the Windows folks yet.
>>
>> I'd prefer to move compat/win32/poll.[ch] into compat/poll.
>> Then adjust a few paths in Makefile and that would be the 1st patch
>>
>> A 2nd patch would be my already proposed ones that make this usable for 
>> others (me in this case ;-)), namely wrapping 2 #inludes.
>>
>> diff --git a/compat/poll/poll.c b/compat/poll/poll.c
>> index 403eaa7..49541f1 100644
>> --- a/compat/poll/poll.c
>> +++ b/compat/poll/poll.c
>> @@ -24,7 +24,9 @@
>>  # pragma GCC diagnostic ignored "-Wtype-limits"
>>  #endif
>>
>> -#include <malloc.h>
>> +#if defined(WIN32)
>> +# include <malloc.h>
>> +#endif
>>
>>  #include <sys/types.h>
>>
>> @@ -48,7 +50,9 @@
>>  #else
>>  # include <sys/time.h>
>>  # include <sys/socket.h>
>> -# include <sys/select.h>
>> +# ifndef NO_SYS_SELECT_H
>> +#  include <sys/select.h>
>> +# endif
>>  # include <unistd.h>
>>  #endif
>>
>> --
>> 1.7.12
>
> However: this poll implementation, while compiling OK, doesn't work properly.
> Because it uses recv(...,MSG_PEEK), it works on sockets only (returns 
> ENOTSOCK on anything else), while the real poll() works on all
> kind if file descriptors, at least that is my understanding.
>
> Here on HP NonStop, when being connected via an non-interactive SSH, we get a 
> set of pipes (stdin, stdout, stderr) instead of a
> socket to talk to, so the poll() just hangs/loops.
>
> As git's implementation is based on ('stolen' from?) gnulib's and still 
> pretty similar, CC to the gnulib list and Paolo
>
> Any idea how this could get solved? I.e. how to implement a poll() that works 
> on non-sockets too?
> There is some code that pertains to a seemingly similar problem in Mac OS X, 
> but my problem is not identical, as that fix doesn't
> help.

Could you give more context ? Are you speaking about win32 or about HP non stop?

If so pipe are broken and unfixable under windows see
http://www.mail-archive.com/address@hidden/msg23365.html

> Bye, Jojo
>
>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]