diff options
author | Mike Frysinger <vapier@gentoo.org> | 2012-11-14 00:08:18 -0500 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2012-11-14 00:10:32 -0500 |
commit | dbaa240832c159e395e8b3104ecdb551c8f96b5d (patch) | |
tree | 2f9fe386497e3bb6133a669db2bbbe9e6f34dc1c | |
parent | 92e25ae0cded0579b1d9ea2f41523338cf81bc18 (diff) |
libc/sysdeps: add dup3 syscall wrapper
Some projects (like udev) are starting to use this.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
-rw-r--r-- | include/unistd.h | 6 | ||||
-rw-r--r-- | libc/sysdeps/linux/common/Makefile.in | 1 | ||||
-rw-r--r-- | libc/sysdeps/linux/common/dup3.c | 13 |
3 files changed, 20 insertions, 0 deletions
diff --git a/include/unistd.h b/include/unistd.h index aa8e1e651..787f9e52d 100644 --- a/include/unistd.h +++ b/include/unistd.h @@ -563,6 +563,12 @@ extern int dup (int __fd) __THROW __wur; extern int dup2 (int __fd, int __fd2) __THROW; libc_hidden_proto(dup2) +#ifdef __USE_GNU +/* Duplicate FD to FD2, closing FD2 and making it open on the same + file while setting flags according to FLAGS. */ +extern int dup3 (int __fd, int __fd2, int __flags) __THROW; +#endif + /* NULL-terminated array of "NAME=VALUE" environment variables. */ extern char **__environ; #ifdef __USE_GNU diff --git a/libc/sysdeps/linux/common/Makefile.in b/libc/sysdeps/linux/common/Makefile.in index b40bb789e..7a5fb59df 100644 --- a/libc/sysdeps/linux/common/Makefile.in +++ b/libc/sysdeps/linux/common/Makefile.in @@ -23,6 +23,7 @@ CSRC-$(UCLIBC_LINUX_SPECIFIC) += \ bdflush.c \ capget.c \ capset.c \ + dup3.c \ eventfd.c \ inotify.c \ ioperm.c \ diff --git a/libc/sysdeps/linux/common/dup3.c b/libc/sysdeps/linux/common/dup3.c new file mode 100644 index 000000000..539c0716c --- /dev/null +++ b/libc/sysdeps/linux/common/dup3.c @@ -0,0 +1,13 @@ +/* vi: set sw=4 ts=4: */ +/* + * dup2() for uClibc + * + * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org> + * + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. + */ + +#include <sys/syscall.h> +#include <unistd.h> + +_syscall3(int, dup3, int, oldfd, int, newfd, int, flags) |