X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Ffcntl%2Fopenat.c;h=83a9e0d008c46da269963bc18eceffd81196b472;hb=8949da7ab1c0dbf801e8bc78f0c0adc625020f75;hp=1a2d95350fbe8f2c4bbd94e02a4068467038f364;hpb=aa398f56fa398f2202b04e82c67f822f3233786f;p=musl diff --git a/src/fcntl/openat.c b/src/fcntl/openat.c index 1a2d9535..83a9e0d0 100644 --- a/src/fcntl/openat.c +++ b/src/fcntl/openat.c @@ -1,21 +1,17 @@ #include -#include #include #include "syscall.h" -#include "libc.h" int openat(int fd, const char *filename, int flags, ...) { - int r; - mode_t mode; - va_list ap; - va_start(ap, flags); - mode = va_arg(ap, mode_t); - va_end(ap); - CANCELPT_BEGIN; - r = syscall(SYS_openat, fd, filename, flags|O_LARGEFILE, mode); - CANCELPT_END; - return r; -} + mode_t mode = 0; + + if ((flags & O_CREAT) || (flags & O_TMPFILE) == O_TMPFILE) { + va_list ap; + va_start(ap, flags); + mode = va_arg(ap, mode_t); + va_end(ap); + } -LFS64(openat); + return syscall_cp(SYS_openat, fd, filename, flags|O_LARGEFILE, mode); +}