put set_nonblocking() code back in.
authorAndrew Tridgell <tridge@samba.org>
Thu, 18 Jun 1998 09:32:45 +0000 (09:32 +0000)
committerAndrew Tridgell <tridge@samba.org>
Thu, 18 Jun 1998 09:32:45 +0000 (09:32 +0000)
util.c

diff --git a/util.c b/util.c
index b80d516112cc7dddbd72f5e059b255eb80fd49d9..639a4a4f155c0f1fda89fe21b53d657883d2c178 100644 (file)
--- a/util.c
+++ b/util.c
   */
 #include "rsync.h"
 
-int num_waiting(int fd)
+/****************************************************************************
+Set a fd into nonblocking mode. Uses POSIX O_NONBLOCK if available,
+else
+if SYSV use O_NDELAY
+if BSD use FNDELAY
+****************************************************************************/
+int set_nonblocking(int fd)
 {
-  int len=0;
-  ioctl(fd,FIONREAD,&len);
-  return(len);
+       int val;
+#ifdef O_NONBLOCK
+#define FLAG_TO_SET O_NONBLOCK
+#else
+#ifdef SYSV
+#define FLAG_TO_SET O_NDELAY
+#else /* BSD */
+#define FLAG_TO_SET FNDELAY
+#endif
+#endif
+       
+       if((val = fcntl(fd, F_GETFL, 0)) == -1)
+               return -1;
+       val |= FLAG_TO_SET;
+       return fcntl( fd, F_SETFL, val);
+#undef FLAG_TO_SET
 }
 
 
-
 /* this is taken from CVS */
 int piped_child(char **command,int *f_in,int *f_out)
 {
@@ -206,7 +224,7 @@ int create_directory_path(char *fname)
 
    derived from GNU C's cccp.c.
 */
-int full_write(int desc, char *ptr, int len)
+static int full_write(int desc, char *ptr, int len)
 {
        int total_written;