master
c 49 lines 1.61 KB
Raw
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2
3 #include "qemu/osdep.h"
4 #include "9p-util.h"
5
6 char *qemu_open_flags_tostr(int flags)
7 {
8 int acc = flags & O_ACCMODE;
9 return g_strconcat(
10 (acc == O_WRONLY) ? "WRONLY" : (acc == O_RDONLY) ? "RDONLY" : "RDWR",
11 (flags & O_CREAT) ? "|CREAT" : "",
12 (flags & O_EXCL) ? "|EXCL" : "",
13 (flags & O_NOCTTY) ? "|NOCTTY" : "",
14 (flags & O_TRUNC) ? "|TRUNC" : "",
15 (flags & O_APPEND) ? "|APPEND" : "",
16 (flags & O_NONBLOCK) ? "|NONBLOCK" : "",
17 (flags & O_DSYNC) ? "|DSYNC" : "",
18 #ifdef O_DIRECT
19 (flags & O_DIRECT) ? "|DIRECT" : "",
20 #endif
21 (flags & O_LARGEFILE) ? "|LARGEFILE" : "",
22 (flags & O_DIRECTORY) ? "|DIRECTORY" : "",
23 (flags & O_NOFOLLOW) ? "|NOFOLLOW" : "",
24 #ifdef O_NOATIME
25 (flags & O_NOATIME) ? "|NOATIME" : "",
26 #endif
27 #ifdef O_CLOEXEC
28 (flags & O_CLOEXEC) ? "|CLOEXEC" : "",
29 #endif
30 #ifdef __O_SYNC
31 (flags & __O_SYNC) ? "|SYNC" : "",
32 #else
33 ((flags & O_SYNC) == O_SYNC) ? "|SYNC" : "",
34 #endif
35 #ifdef O_PATH
36 (flags & O_PATH) ? "|PATH" : "",
37 #endif
38 #ifdef __O_TMPFILE
39 (flags & __O_TMPFILE) ? "|TMPFILE" : "",
40 #elif defined(O_TMPFILE)
41 ((flags & O_TMPFILE) == O_TMPFILE) ? "|TMPFILE" : "",
42 #endif
43 /* O_NDELAY is usually just an alias of O_NONBLOCK */
44 #if defined(O_NDELAY) && O_NDELAY != O_NONBLOCK
45 (flags & O_NDELAY) ? "|NDELAY" : "",
46 #endif
47 NULL /* always last (required NULL termination) */
48 );
49 }