fcntl.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. /* SPDX-License-Identifier: LGPL-2.1 OR MIT */
  2. /*
  3. * fcntl definition for NOLIBC
  4. * Copyright (C) 2017-2021 Willy Tarreau <w@1wt.eu>
  5. */
  6. /* make sure to include all global symbols */
  7. #include "nolibc.h"
  8. #ifndef _NOLIBC_FCNTL_H
  9. #define _NOLIBC_FCNTL_H
  10. #include "arch.h"
  11. #include "types.h"
  12. #include "sys.h"
  13. /*
  14. * int openat(int dirfd, const char *path, int flags[, mode_t mode]);
  15. */
  16. static __attribute__((unused))
  17. int sys_openat(int dirfd, const char *path, int flags, mode_t mode)
  18. {
  19. return my_syscall4(__NR_openat, dirfd, path, flags, mode);
  20. }
  21. static __attribute__((unused))
  22. int openat(int dirfd, const char *path, int flags, ...)
  23. {
  24. mode_t mode = 0;
  25. if (flags & O_CREAT) {
  26. va_list args;
  27. va_start(args, flags);
  28. mode = va_arg(args, mode_t);
  29. va_end(args);
  30. }
  31. return __sysret(sys_openat(dirfd, path, flags, mode));
  32. }
  33. /*
  34. * int open(const char *path, int flags[, mode_t mode]);
  35. */
  36. static __attribute__((unused))
  37. int sys_open(const char *path, int flags, mode_t mode)
  38. {
  39. return my_syscall4(__NR_openat, AT_FDCWD, path, flags, mode);
  40. }
  41. static __attribute__((unused))
  42. int open(const char *path, int flags, ...)
  43. {
  44. mode_t mode = 0;
  45. if (flags & O_CREAT) {
  46. va_list args;
  47. va_start(args, flags);
  48. mode = va_arg(args, mode_t);
  49. va_end(args);
  50. }
  51. return __sysret(sys_open(path, flags, mode));
  52. }
  53. #endif /* _NOLIBC_FCNTL_H */