open.c raw

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