diff options
author | Markos Chandras <markos.chandras@imgtec.com> | 2012-10-10 15:57:41 +0100 |
---|---|---|
committer | Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> | 2013-02-20 13:45:11 +0100 |
commit | 81b480369b905229c8dad41755c82aea0faca1e7 (patch) | |
tree | 7561fe91fc28ab23bb46bcff98b987566fc9d9e3 /libc/sysdeps/linux/common/symlink.c | |
parent | e07db64b78c3905baf3aaeb582899f78ab306781 (diff) |
symlink: Use symlinkat if arch does not have the symlink syscall
Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Diffstat (limited to 'libc/sysdeps/linux/common/symlink.c')
-rw-r--r-- | libc/sysdeps/linux/common/symlink.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/libc/sysdeps/linux/common/symlink.c b/libc/sysdeps/linux/common/symlink.c index 15a576d70..eee6e8fa0 100644 --- a/libc/sysdeps/linux/common/symlink.c +++ b/libc/sysdeps/linux/common/symlink.c @@ -8,8 +8,20 @@ */ #include <sys/syscall.h> - -#if defined __NR_symlink && (defined __USE_BSD || defined __USE_UNIX98 || defined __USE_XOPEN2K) +#if defined __USE_BSD || defined __USE_UNIX98 || defined __USE_XOPEN2K # include <unistd.h> + +# if defined __NR_symlinkat && !defined __NR_symlink +# include <fcntl.h> +int symlink(const char *oldpath, const char *newpath) +{ + return symlinkat(oldpath, AT_FDCWD, newpath); +} + +# elif defined(__NR_symlink) + _syscall2(int, symlink, const char *, oldpath, const char *, newpath) + +# endif + #endif |