RE: [PATCH v4 4/4] make poll() work on platforms that can't recv() on a non-socket

2012-09-08 Thread Joachim Schmitz
 From: Erik Faye-Lund [mailto:kusmab...@gmail.com]
 Sent: Saturday, September 08, 2012 1:32 PM
 To: Joachim Schmitz
 Cc: Junio C Hamano; git@vger.kernel.org
 Subject: Re: [PATCH v4 4/4] make poll() work on platforms that can't recv() 
 on a non-socket
 
 On Fri, Sep 7, 2012 at 5:43 PM, Joachim Schmitz j...@schmitz-digital.de 
 wrote:
  This way it gets added to gnulib too.
 
  Signed-off-by: Joachim Schmitz j...@schmitz-digital.de
  ---
   compat/poll/poll.c | 5 +
   1 file changed, 4 insertions(+)
 
  diff --git a/compat/poll/poll.c b/compat/poll/poll.c
  index e4b8319..10a204e 100644
  --- a/compat/poll/poll.c
  +++ b/compat/poll/poll.c
  @@ -306,6 +306,10 @@ compute_revents (int fd, int sought, fd_set *rfds, 
  fd_set *wfds, fd_set *efds)
 || socket_errno == ECONNABORTED || socket_errno == ENETRESET)
  happened |= POLLHUP;
 
  +  /* some systems can't use recv() on non-socket, including HP NonStop 
  */
  +  else if (/* (r == -1)  */ socket_errno == ENOTSOCK)
 
 Why add commented-out code ((r == -1)  )?

I'm not really sure whether it may be needed, esp. for Mac OS X, where en 
ENOTSOCK is expected from a recv() but then dealt with by
an ioctl(), which does not resert socket_errno, but does set r to something not 
-1. And wouldn't need this code path?
There's some similar code a few lines up, which too has that part commented out:

  /* If the event happened on an unconnected server socket,
 that's fine. */
  else if (r  0 || ( /* (r == -1)  */ socket_errno == ENOTCONN))
happened |= (POLLIN | POLLRDNORM)  sought;

Bye, Jojo

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


RE: [PATCH v4 4/4] make poll() work on platforms that can't recv() on a non-socket

2012-09-07 Thread Joachim Schmitz
This way it gets added to gnulib too.

Signed-off-by: Joachim Schmitz j...@schmitz-digital.de
---
 compat/poll/poll.c | 5 +
 1 file changed, 4 insertions(+)

diff --git a/compat/poll/poll.c b/compat/poll/poll.c
index e4b8319..10a204e 100644
--- a/compat/poll/poll.c
+++ b/compat/poll/poll.c
@@ -306,6 +306,10 @@ compute_revents (int fd, int sought, fd_set *rfds, fd_set 
*wfds, fd_set *efds)
   || socket_errno == ECONNABORTED || socket_errno == ENETRESET)
happened |= POLLHUP;
 
+  /* some systems can't use recv() on non-socket, including HP NonStop */
+  else if (/* (r == -1)  */ socket_errno == ENOTSOCK)
+   happened |= (POLLIN | POLLRDNORM)  sought;
+
   else
happened |= POLLERR;
 }
-- 
1.7.12


--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html