mirror of https://gitlab.com/qemu-project/qemu
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.6 KiB
C
51 lines
1.6 KiB
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
|
|
#include "qemu/osdep.h"
|
|
#include "9p-util.h"
|
|
#include <glib/gstrfuncs.h>
|
|
|
|
char *qemu_open_flags_tostr(int flags)
|
|
{
|
|
int acc = flags & O_ACCMODE;
|
|
return g_strconcat(
|
|
(acc == O_WRONLY) ? "WRONLY" : (acc == O_RDONLY) ? "RDONLY" : "RDWR",
|
|
(flags & O_CREAT) ? "|CREAT" : "",
|
|
(flags & O_EXCL) ? "|EXCL" : "",
|
|
(flags & O_NOCTTY) ? "|NOCTTY" : "",
|
|
(flags & O_TRUNC) ? "|TRUNC" : "",
|
|
(flags & O_APPEND) ? "|APPEND" : "",
|
|
(flags & O_NONBLOCK) ? "|NONBLOCK" : "",
|
|
(flags & O_DSYNC) ? "|DSYNC" : "",
|
|
#ifdef O_DIRECT
|
|
(flags & O_DIRECT) ? "|DIRECT" : "",
|
|
#endif
|
|
(flags & O_LARGEFILE) ? "|LARGEFILE" : "",
|
|
(flags & O_DIRECTORY) ? "|DIRECTORY" : "",
|
|
(flags & O_NOFOLLOW) ? "|NOFOLLOW" : "",
|
|
#ifdef O_NOATIME
|
|
(flags & O_NOATIME) ? "|NOATIME" : "",
|
|
#endif
|
|
#ifdef O_CLOEXEC
|
|
(flags & O_CLOEXEC) ? "|CLOEXEC" : "",
|
|
#endif
|
|
#ifdef __O_SYNC
|
|
(flags & __O_SYNC) ? "|SYNC" : "",
|
|
#else
|
|
((flags & O_SYNC) == O_SYNC) ? "|SYNC" : "",
|
|
#endif
|
|
#ifdef O_PATH
|
|
(flags & O_PATH) ? "|PATH" : "",
|
|
#endif
|
|
#ifdef __O_TMPFILE
|
|
(flags & __O_TMPFILE) ? "|TMPFILE" : "",
|
|
#elif defined(O_TMPFILE)
|
|
((flags & O_TMPFILE) == O_TMPFILE) ? "|TMPFILE" : "",
|
|
#endif
|
|
/* O_NDELAY is usually just an alias of O_NONBLOCK */
|
|
#if defined(O_NDELAY) && O_NDELAY != O_NONBLOCK
|
|
(flags & O_NDELAY) ? "|NDELAY" : "",
|
|
#endif
|
|
NULL /* always last (required NULL termination) */
|
|
);
|
|
}
|