summaryrefslogtreecommitdiff
path: root/toolchain/uClibc/patches/160-add_openat_and_friends.patch
diff options
context:
space:
mode:
authorhcg <hcg@3c298f89-4303-0410-b956-a3cf2f4a3e73>2008-11-14 07:52:54 +0000
committerhcg <hcg@3c298f89-4303-0410-b956-a3cf2f4a3e73>2008-11-14 07:52:54 +0000
commit9db8a8bc5d9d440aec5103aec0fcac645ffcec6d (patch)
treee4854f7fd846409407769432e6d29c28db3a4daa /toolchain/uClibc/patches/160-add_openat_and_friends.patch
parentcfb59b2578645da58aa2d702dfcdc0d69c9ee073 (diff)
Add support for openat system call - this must be extended for the rest of these system calls
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@13200 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'toolchain/uClibc/patches/160-add_openat_and_friends.patch')
-rw-r--r--toolchain/uClibc/patches/160-add_openat_and_friends.patch68
1 files changed, 68 insertions, 0 deletions
diff --git a/toolchain/uClibc/patches/160-add_openat_and_friends.patch b/toolchain/uClibc/patches/160-add_openat_and_friends.patch
new file mode 100644
index 0000000000..74dff7bbf3
--- /dev/null
+++ b/toolchain/uClibc/patches/160-add_openat_and_friends.patch
@@ -0,0 +1,68 @@
+Index: uClibc-0.9.29/libc/sysdeps/linux/common/openat.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ uClibc-0.9.29/libc/sysdeps/linux/common/openat.c 2008-10-27 12:59:25.000000000 +0100
+@@ -0,0 +1,41 @@
++/* vi: set sw=4 ts=4: */
++/*
++ * openat() 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 <stdlib.h>
++#include <stdarg.h>
++#include <fcntl.h>
++#include <string.h>
++#include <sys/param.h>
++
++extern __typeof(openat) __libc_openat;
++
++#define __NR___syscall_openat __NR_openat
++static inline _syscall4(int, __syscall_openat, int, fd, const char *, file,
++ int, flags, __kernel_mode_t, mode);
++
++libc_hidden_proto(__libc_openat)
++int __libc_openat(int fd, const char *file, int oflag, ...)
++{
++ mode_t mode = 0;
++
++ if (oflag & O_CREAT) {
++ va_list arg;
++ va_start (arg, oflag);
++ mode = va_arg (arg, mode_t);
++ va_end (arg);
++ }
++
++ return __syscall_openat(fd, file, oflag, mode);
++}
++libc_hidden_def(__libc_openat)
++
++libc_hidden_proto(openat)
++weak_alias(__libc_openat,openat)
++libc_hidden_weak(openat)
+Index: uClibc-0.9.29/include/fcntl.h
+===================================================================
+--- uClibc-0.9.29.orig/include/fcntl.h 2008-10-27 12:52:04.000000000 +0100
++++ uClibc-0.9.29/include/fcntl.h 2008-10-27 13:08:11.000000000 +0100
+@@ -56,7 +56,7 @@
+ # define SEEK_END 2 /* Seek from end of file. */
+ #endif /* XPG */
+
+-#if 0 /*def __USE_GNU*/
++#ifdef __USE_GNU
+ # define AT_FDCWD -100 /* Special value used to indicate
+ openat should use the current
+ working directory. */
+@@ -103,7 +103,7 @@
+ extern int open64 (__const char *__file, int __oflag, ...) __nonnull ((1));
+ #endif
+
+-#if 0 /*def __USE_GNU*/
++#ifdef __USE_GNU
+ /* Similar to OPEN but a relative path name is interpreted relative to
+ the directory for which FD is a descriptor.
+