9p-util-generic.c 1.6 KB

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