[dovecot-cvs] dovecot/src/lib Makefile.am, 1.52, 1.53 fd-set-nonblock.c, NONE, 1.1 fd-set-nonblock.h, NONE, 1.1 ioloop-notify-dn.c, 1.7, 1.8 network.c, 1.33, 1.34

cras at dovecot.org cras at dovecot.org
Sun Sep 25 14:12:26 EEST 2005


Update of /var/lib/cvs/dovecot/src/lib
In directory talvi:/tmp/cvs-serv9193

Modified Files:
	Makefile.am ioloop-notify-dn.c network.c 
Added Files:
	fd-set-nonblock.c fd-set-nonblock.h 
Log Message:
Added fd_set_nonblock() and changed net_set_nonblock() to use it.



Index: Makefile.am
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib/Makefile.am,v
retrieving revision 1.52
retrieving revision 1.53
diff -u -d -r1.52 -r1.53
--- Makefile.am	12 Jul 2005 15:40:33 -0000	1.52
+++ Makefile.am	25 Sep 2005 11:12:24 -0000	1.53
@@ -8,6 +8,7 @@
 	env-util.c \
 	failures.c \
 	fd-close-on-exec.c \
+	fd-set-nonblock.c \
 	fdpass.c \
 	file-cache.c \
 	file-dotlock.c \
@@ -83,6 +84,7 @@
 	env-util.h \
 	failures.h \
 	fd-close-on-exec.h \
+	fd-set-nonblock.h \
 	fdpass.h \
 	file-cache.h \
 	file-dotlock.h \

--- NEW FILE: fd-set-nonblock.c ---
/* Copyright (c) 1999-2005 Timo Sirainen */

#include "lib.h"
#include "fd-set-nonblock.h"

#include <fcntl.h>

int fd_set_nonblock(int fd, int nonblock)
{
	int flags;

	flags = fcntl(fd, F_GETFL, 0);
	if (flags < 0) {
		i_error("fcntl(%d, F_GETFL) failed: %m", fd);
		return -1;
	}

	if (nonblock)
		flags |= O_NONBLOCK;
	else
		flags &= ~O_NONBLOCK;

	if (fcntl(fd, F_SETFL, flags) < 0) {
		i_error("fcntl(%d, F_SETFL) failed: %m", fd);
		return -1;
	}
	return 0;
}

--- NEW FILE: fd-set-nonblock.h ---
#ifndef __FD_SET_NONBLOCK_H
#define __FD_SET_NONBLOCK_H

/* Set file descriptor to blocking/nonblocking state */
int fd_set_nonblock(int fd, int nonblock);

#endif

Index: ioloop-notify-dn.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib/ioloop-notify-dn.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- ioloop-notify-dn.c	14 Aug 2005 21:54:20 -0000	1.7
+++ ioloop-notify-dn.c	25 Sep 2005 11:12:24 -0000	1.8
@@ -8,7 +8,7 @@
 #ifdef IOLOOP_NOTIFY_DNOTIFY
 
 #include "ioloop-internal.h"
-#include "network.h"
+#include "fd-set-nonblock.h"
 #include "fd-close-on-exec.h"
 
 #include <signal.h>
@@ -154,8 +154,8 @@
 		return;
 	}
 
-	net_set_nonblock(event_pipe[0], TRUE);
-	net_set_nonblock(event_pipe[1], TRUE);
+	fd_set_nonblock(event_pipe[0], TRUE);
+	fd_set_nonblock(event_pipe[1], TRUE);
 
 	fd_close_on_exec(event_pipe[0], TRUE);
 	fd_close_on_exec(event_pipe[1], TRUE);

Index: network.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib/network.c,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -d -r1.33 -r1.34
--- network.c	18 Sep 2005 11:29:05 -0000	1.33
+++ network.c	25 Sep 2005 11:12:24 -0000	1.34
@@ -1,6 +1,7 @@
-/* Copyright (c) 1999-2003 Timo Sirainen */
+/* Copyright (c) 1999-2005 Timo Sirainen */
 
 #include "lib.h"
+#include "fd-set-nonblock.h"
 #include "network.h"
 
 #include <unistd.h>
@@ -203,23 +204,10 @@
 }
 
 /* Set socket blocking/nonblocking */
-void net_set_nonblock(int fd __attr_unused__, int nonblock __attr_unused__)
+void net_set_nonblock(int fd, int nonblock)
 {
-#ifdef HAVE_FCNTL
-	int flags;
-
-	flags = fcntl(fd, F_GETFL, 0);
-	if (flags == -1)
-		i_fatal("net_set_nonblock() failed: %m");
-
-	if (nonblock)
-		flags |= O_NONBLOCK;
-	else
-		flags &= ~O_NONBLOCK;
-
-	if (fcntl(fd, F_SETFL, flags) < 0)
-		i_fatal("net_set_nonblock() failed: %m");
-#endif
+	if (fd_set_nonblock(fd, nonblock) < 0)
+		i_fatal("fd_set_nonblock(%d) failed: %m", fd);
 }
 
 int net_set_cork(int fd __attr_unused__, int cork __attr_unused__)



More information about the dovecot-cvs mailing list