extern "C" int32_t Open(const char* path, int32_t flags, int32_t mode) { flags = ConvertOpenFlags(flags); if (flags == -1) { errno = EINVAL; return -1; } return open(path, flags, static_cast<mode_t>(mode)); }
int32_t Open(const char* path, int32_t flags, int32_t mode) { flags = ConvertOpenFlags(flags); if (flags == -1) { errno = EINVAL; return -1; } return open(path, flags, mode); }
int32_t ShmOpen(const char* name, int32_t flags, int32_t mode) { flags = ConvertOpenFlags(flags); if (flags < 0) { errno = EINVAL; return -1; } return shm_open(name, flags, mode); }
extern "C" intptr_t SystemNative_Open(const char* path, int32_t flags, int32_t mode) { flags = ConvertOpenFlags(flags); if (flags == -1) { errno = EINVAL; return -1; } int result; while (CheckInterrupted(result = open(path, flags, static_cast<mode_t>(mode)))); return result; }
int32_t ShmOpen(const char* name, int32_t flags, int32_t mode) { #if HAVE_SHM_OPEN_THAT_WORKS_WELL_ENOUGH_WITH_MMAP flags = ConvertOpenFlags(flags); if (flags == -1) { errno = EINVAL; return -1; } return shm_open(name, flags, mode); #else errno = ENOTSUP; return -1; #endif }
extern "C" intptr_t SystemNative_ShmOpen(const char* name, int32_t flags, int32_t mode) { #if HAVE_SHM_OPEN_THAT_WORKS_WELL_ENOUGH_WITH_MMAP flags = ConvertOpenFlags(flags); if (flags == -1) { errno = EINVAL; return -1; } return shm_open(name, flags, static_cast<mode_t>(mode)); #else (void)name, (void)flags, (void)mode; errno = ENOTSUP; return -1; #endif }
intptr_t SystemNative_Open(const char* path, int32_t flags, int32_t mode) { // these two ifdefs are for platforms where we dont have the open version of CLOEXEC and thus // must simulate it by doing a fcntl with the SETFFD version after the open instead #if !HAVE_O_CLOEXEC int32_t old_flags = flags; #endif flags = ConvertOpenFlags(flags); if (flags == -1) { errno = EINVAL; return -1; } int result; while ((result = open(path, flags, (mode_t)mode)) < 0 && errno == EINTR); #if !HAVE_O_CLOEXEC if (old_flags & PAL_O_CLOEXEC) { fcntl(result, F_SETFD, FD_CLOEXEC); } #endif return result; }