zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

openat2.h (1449B) - Raw


      1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
      2 #ifndef _LINUX_OPENAT2_H
      3 #define _LINUX_OPENAT2_H
      4 
      5 #include <linux/types.h>
      6 
      7 /*
      8  * Arguments for how openat2(2) should open the target path. If only @flags and
      9  * @mode are non-zero, then openat2(2) operates very similarly to openat(2).
     10  *
     11  * However, unlike openat(2), unknown or invalid bits in @flags result in
     12  * -EINVAL rather than being silently ignored. @mode must be zero unless one of
     13  * {O_CREAT, O_TMPFILE} are set.
     14  *
     15  * @flags: O_* flags.
     16  * @mode: O_CREAT/O_TMPFILE file mode.
     17  * @resolve: RESOLVE_* flags.
     18  */
     19 struct open_how {
     20 	__u64 flags;
     21 	__u64 mode;
     22 	__u64 resolve;
     23 };
     24 
     25 /* how->resolve flags for openat2(2). */
     26 #define RESOLVE_NO_XDEV		0x01 /* Block mount-point crossings
     27 					(includes bind-mounts). */
     28 #define RESOLVE_NO_MAGICLINKS	0x02 /* Block traversal through procfs-style
     29 					"magic-links". */
     30 #define RESOLVE_NO_SYMLINKS	0x04 /* Block traversal through all symlinks
     31 					(implies OEXT_NO_MAGICLINKS) */
     32 #define RESOLVE_BENEATH		0x08 /* Block "lexical" trickery like
     33 					"..", symlinks, and absolute
     34 					paths which escape the dirfd. */
     35 #define RESOLVE_IN_ROOT		0x10 /* Make all jumps to "/" and ".."
     36 					be scoped inside the dirfd
     37 					(similar to chroot(2)). */
     38 #define RESOLVE_CACHED		0x20 /* Only complete if resolution can be
     39 					completed through cached lookup. May
     40 					return -EAGAIN if that's not
     41 					possible. */
     42 
     43 #endif /* _LINUX_OPENAT2_H */