From ee4dd307bb6f366c87d4b408025ed909e55a168f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Forsman?= Date: Thu, 17 Oct 2019 23:02:55 +0200 Subject: [PATCH] libredirect: add 'openat64' --- pkgs/by-name/li/libredirect/libredirect.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/pkgs/by-name/li/libredirect/libredirect.c b/pkgs/by-name/li/libredirect/libredirect.c index bb88453216a6..011b5e6965c5 100644 --- a/pkgs/by-name/li/libredirect/libredirect.c +++ b/pkgs/by-name/li/libredirect/libredirect.c @@ -197,6 +197,24 @@ WRAPPER(int, openat)(int dirfd, const char * path, int flags, ...) } WRAPPER_DEF(openat) +// In musl libc, openat64 is simply a macro for openat +#if !defined(__APPLE__) && !defined(openat64) +WRAPPER(int, openat64)(int dirfd, const char * path, int flags, ...) +{ + int (*openat64_real) (int, const char *, int, ...) = LOOKUP_REAL(openat64); + mode_t mode = 0; + if (open_needs_mode(flags)) { + va_list ap; + va_start(ap, flags); + mode = va_arg(ap, mode_t); + va_end(ap); + } + char buf[PATH_MAX]; + return openat64_real(dirfd, rewrite(path, buf), flags, mode); +} +WRAPPER_DEF(openat64) +#endif + WRAPPER(FILE *, fopen)(const char * path, const char * mode) { FILE * (*fopen_real) (const char *, const char *) = LOOKUP_REAL(fopen);