open.c 431 B

123456789101112131415161718192021222324
  1. #include <fcntl.h>
  2. #include <stdarg.h>
  3. #include "syscall.h"
  4. #include "libc.h"
  5. int open(const char *filename, int flags, ...)
  6. {
  7. mode_t mode = 0;
  8. if (flags & O_CREAT) {
  9. va_list ap;
  10. va_start(ap, flags);
  11. mode = va_arg(ap, mode_t);
  12. va_end(ap);
  13. }
  14. int fd = __sys_open_cp(filename, flags, mode);
  15. if (fd>=0 && (flags & O_CLOEXEC))
  16. __syscall(SYS_fcntl, fd, F_SETFD, FD_CLOEXEC);
  17. return __syscall_ret(fd);
  18. }
  19. LFS64(open);