diff options
author | Andreas Baumann <abaumann@yahoo.com> | 2009-04-26 19:26:55 +0200 |
---|---|---|
committer | Andreas Baumann <abaumann@yahoo.com> | 2009-04-26 19:26:55 +0200 |
commit | 17a67d9faefbff1cc7e05b82ea1981f5e14ace2c (patch) | |
tree | 29d05818cafd4f1c66a5f7c3e974ecf79570f01d /src | |
parent | efbc5946bf6a8126ffaeea7a0abf54b29d3c572a (diff) | |
download | wolfbones-17a67d9faefbff1cc7e05b82ea1981f5e14ace2c.tar.gz wolfbones-17a67d9faefbff1cc7e05b82ea1981f5e14ace2c.tar.bz2 |
started to move Unix-specific networking stuff into the wolf library (out of the tests)
Diffstat (limited to 'src')
-rw-r--r-- | src/GNUmakefile | 6 | ||||
-rw-r--r-- | src/network/network_unix.c | 46 |
2 files changed, 51 insertions, 1 deletions
diff --git a/src/GNUmakefile b/src/GNUmakefile index f8a4707..39add1c 100644 --- a/src/GNUmakefile +++ b/src/GNUmakefile @@ -30,11 +30,15 @@ DAEMON_OBJS = \ SERVICE_OBJS = \ service/service.o +NETWORK_OBJS = \ + network/network_unix.o + OBJS = \ $(THREADING_OBJS) \ $(PORT_OBJS) \ $(LOG_OBJS) \ - $(DAEMON_OBJS) + $(DAEMON_OBJS) \ + $(NETWORK_OBJS) CATALOG_NAME = libwolf diff --git a/src/network/network_unix.c b/src/network/network_unix.c new file mode 100644 index 0000000..41c8313 --- /dev/null +++ b/src/network/network_unix.c @@ -0,0 +1,46 @@ +/* + Copyright (C) 2008 Andreas Baumann <abaumann@yahoo.com> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#include "port/sys.h" +#include "port/sys_internal.h" + +#include "errors.h" +#include "log/log.h" +#include "log/messages.h" + +#include "network/network.h" + +#include "port/unistd.h" +#include <fcntl.h> /* for fcntl and F_* flags */ + +wolf_error_t wolf_network_set_nonblocking( int fd ) { + int flags; + + flags = fcntl( fd, F_GETFL, 0 /* ignored */ ); + if( flags < 0 ) { + return WOLF_ERR_INTERNAL; + } + + flags |= O_NONBLOCK; + + flags = fcntl( fd, F_SETFL, flags ); + if( flags < 0 ) { + return WOLF_ERR_INTERNAL; + } + + return WOLF_OK; +} |