X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=jbsockets.c;h=f7443ec90779e891fd7862ad20f47187e97df0c2;hp=0693fe49b5b0131c62eadca363cffe816e4b4653;hb=4715e1ff4ca0655d4e06996ac22693b442facf66;hpb=dd711f8cde9b89c23b19a4c5455b9bfe61975091 diff --git a/jbsockets.c b/jbsockets.c index 0693fe49..f7443ec9 100644 --- a/jbsockets.c +++ b/jbsockets.c @@ -1,4 +1,4 @@ -const char jbsockets_rcs[] = "$Id: jbsockets.c,v 1.48 2008/09/04 08:13:58 fabiankeil Exp $"; +const char jbsockets_rcs[] = "$Id: jbsockets.c,v 1.49 2008/11/10 17:03:57 fabiankeil Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/jbsockets.c,v $ @@ -35,6 +35,9 @@ const char jbsockets_rcs[] = "$Id: jbsockets.c,v 1.48 2008/09/04 08:13:58 fabian * * Revisions : * $Log: jbsockets.c,v $ + * Revision 1.49 2008/11/10 17:03:57 fabiankeil + * Fix a gcc44 warning and remove a now-obsolete cast. + * * Revision 1.48 2008/09/04 08:13:58 fabiankeil * Prepare for critical sections on Windows by adding a * layer of indirection before the pthread mutex functions. @@ -583,6 +586,46 @@ int read_socket(jb_socket fd, char *buf, int len) } +/********************************************************************* + * + * Function : data_is_available + * + * Description : Waits for data to arrive on a socket. + * + * Parameters : + * 1 : fd = file descriptor of the socket to read + * 2 : seconds_to_wait = number of seconds after which we give up. + * + * Returns : TRUE if data arrived in time, + * FALSE otherwise. + * + *********************************************************************/ +int data_is_available(jb_socket fd, int seconds_to_wait) +{ + fd_set rfds; + struct timeval timeout; + int n; + + memset(&timeout, 0, sizeof(timeout)); + timeout.tv_sec = seconds_to_wait; + +#ifdef __OS2__ + /* Copy and pasted from jcc.c ... */ + memset(&rfds, 0, sizeof(fd_set)); +#else + FD_ZERO(&rfds); +#endif + FD_SET(fd, &rfds); + + n = select(fd+1, &rfds, NULL, NULL, &timeout); + + /* + * XXX: Do we care about the different error conditions? + */ + return (n == 1); +} + + /********************************************************************* * * Function : close_socket