| // Copyright 2024 The Cobalt Authors. All Rights Reserved. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| #ifndef STARBOARD_SHARED_WIN32_POSIX_EMU_INCLUDE_FCNTL_H_ |
| #define STARBOARD_SHARED_WIN32_POSIX_EMU_INCLUDE_FCNTL_H_ |
| |
| #include <../ucrt/fcntl.h> // The Visual Studio version of this same file |
| #include <../ucrt/sys/stat.h> |
| #include <io.h> // Needed for `open`, which is in fcntl.h on POSIX |
| |
| #undef open |
| #undef close // in unistd.h on POSIX, and handles both files and sockets |
| |
| #define F_GETFL 3 /* get file->f_flags */ |
| #define F_SETFL 4 /* set file->f_flags */ |
| |
| #ifndef O_NONBLOCK |
| #define O_NONBLOCK 00004000 |
| #endif |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| int sb_fcntl(int fd, int cmd, ... /*arg*/); |
| #define fcntl sb_fcntl |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| typedef int mode_t; |
| |
| // For the POSIX modes that do not have a Windows equivalent, the modes |
| // defined here use the POSIX values left shifted 16 bits. |
| // Passing these into Windows file I/O functions has no effect. |
| |
| static const mode_t S_ISUID = 0x40000000; |
| static const mode_t S_ISGID = 0x20000000; |
| static const mode_t S_ISVTX = 0x10000000; |
| static const mode_t S_IRWXU = 0x07000000; |
| static const mode_t S_IRUSR = _S_IREAD; // read by user |
| static const mode_t S_IWUSR = _S_IWRITE; // write by user |
| static const mode_t S_IXUSR = 0x01000000; |
| static const mode_t S_IRGRP = 0x00400000; |
| static const mode_t S_IWGRP = 0x00200000; |
| static const mode_t S_IXGRP = 0x00100000; |
| static const mode_t S_IRWXO = 0x00070000; |
| static const mode_t S_IROTH = 0x00040000; |
| static const mode_t S_IWOTH = 0x00020000; |
| static const mode_t S_IXOTH = 0x00010000; |
| |
| static const mode_t MS_MODE_MASK = 0x0000ffff; |
| |
| int open(const char* path, int oflag, ...); |
| |
| #endif // STARBOARD_SHARED_WIN32_POSIX_EMU_INCLUDE_FCNTL_H_ |