|
|
- #pragma once
- #include <fcntl.h>
- #include <unistd.h>
- #include <sys/mman.h>
- #include <sys/stat.h>
- #include <string>
-
- namespace gp{
- using open_opt_flags = int;
-
- enum class open_options : open_opt_flags {
- append = O_APPEND,
- create = O_CREAT,
- async = O_ASYNC,
- direct = O_DIRECT,
- data_sync = O_DSYNC,
- file_sync = O_SYNC,
- exclusive = O_EXCL,
- no_access_time = O_NOATIME,
- no_follow = O_NOFOLLOW,
- #ifdef O_TEMP
- temporary = O_TEMP,
- #endif
- #ifdef O_TRUC
- truncate = O_TRUC,
- #endif
- };
-
- using open_opt_mode = int;
-
- enum class open_modes : open_opt_mode {
- user_read = S_IRUSR,
- user_write = S_IWUSR,
- user_exec = S_IXUSR,
- group_read = S_IRGRP,
- group_write = S_IWGRP,
- group_exec = S_IXGRP,
- other_read = S_IROTH,
- other_write = S_IWOTH,
- other_exec = S_IXOTH,
- set_uid = S_ISUID,
- set_gid = S_ISGID,
- sticky_bit = S_ISVTX,
- };
-
- class shared_fd {
- const int fd;
- shared_fd(int fd_v)
- : fd(fd_v) {}
-
- public:
- static shared_fd open(const std::string& filename, const open_opt_flags& flags) {
-
- }
- };
- }
|