summaryrefslogtreecommitdiffstats
path: root/Compat.h
diff options
context:
space:
mode:
authorChristian Göttsche <cgzones@googlemail.com>2020-11-20 17:50:34 +0100
committerBenBE <BenBE@geshi.org>2020-11-28 12:35:34 +0100
commit2ff2859c237a0b4928c28a0086dd2f5fb9b2da70 (patch)
tree27f74d10d90d21fc7732d7e0b0b9bb0a01619a21 /Compat.h
parent638207a2ff91089de7679b4ed20fc0b01116c37c (diff)
Add compat mode for systems without openat(2)
Diffstat (limited to 'Compat.h')
-rw-r--r--Compat.h28
1 files changed, 28 insertions, 0 deletions
diff --git a/Compat.h b/Compat.h
index e513b1d3..c8942735 100644
--- a/Compat.h
+++ b/Compat.h
@@ -7,7 +7,11 @@ Released under the GNU GPLv2, see the COPYING file
in the source distribution for its full text.
*/
+#include "config.h" // IWYU pragma: keep
+
+#include <fcntl.h>
#include <stddef.h>
+#include <unistd.h>
#include <sys/stat.h>
@@ -22,6 +26,30 @@ int Compat_fstatat(int dirfd,
struct stat* statbuf,
int flags);
+#ifdef HAVE_OPENAT
+
+typedef int openat_arg_t;
+
+static inline void Compat_openatArgClose(openat_arg_t dirfd) {
+ close(dirfd);
+}
+
+static inline int Compat_openat(openat_arg_t dirfd, const char* pathname, int flags) {
+ return openat(dirfd, pathname, flags);
+}
+
+#else /* HAVE_OPENAT */
+
+typedef const char* openat_arg_t;
+
+static inline void Compat_openatArgClose(openat_arg_t dirpath) {
+ (void)dirpath;
+}
+
+int Compat_openat(openat_arg_t dirpath, const char* pathname, int flags);
+
+#endif /* HAVE_OPENAT */
+
int Compat_readlinkat(int dirfd,
const char* dirpath,
const char* pathname,

© 2014-2024 Faster IT GmbH | imprint | privacy policy