From a0aeaf15caa9e967f6be1a7b3a3087ff9122c7a9 Mon Sep 17 00:00:00 2001 From: Claudio Takahasi Date: Wed, 24 Jan 2007 19:47:56 +0000 Subject: Moved set_nonblocking to common/dbus.c --- common/dbus.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'common/dbus.c') diff --git a/common/dbus.c b/common/dbus.c index 7837aeba..92a86e73 100644 --- a/common/dbus.c +++ b/common/dbus.c @@ -27,6 +27,7 @@ #include #include +#include #include #include #include @@ -643,3 +644,31 @@ DBusHandlerResult simple_introspect(DBusConnection *conn, return send_message_and_unref(conn, reply); } + +int set_nonblocking(int fd, int *err) +{ + long arg; + + arg = fcntl(fd, F_GETFL); + if (arg < 0) { + if (err) + *err = errno; + error("fcntl(F_GETFL): %s (%d)", strerror(errno), errno); + return -1; + } + + /* Return if already nonblocking */ + if (arg & O_NONBLOCK) + return 0; + + arg |= O_NONBLOCK; + if (fcntl(fd, F_SETFL, arg) < 0) { + if (err) + *err = errno; + error("fcntl(F_SETFL, O_NONBLOCK): %s (%d)", + strerror(errno), errno); + return -1; + } + + return 0; +} -- cgit