#pragma once #include "misc.h" namespace cppfs { mode_t file_permissions::to_unix(const file_permissions& p_perm) { mode_t perm = 0; if (p_perm.is_set(file_permission::user_read)) perm |= S_IRUSR; if (p_perm.is_set(file_permission::user_write)) perm |= S_IWUSR; if (p_perm.is_set(file_permission::user_execute)) perm |= S_IXUSR; if (p_perm.is_set(file_permission::group_read)) perm |= S_IRGRP; if (p_perm.is_set(file_permission::group_write)) perm |= S_IWGRP; if (p_perm.is_set(file_permission::group_execute)) perm |= S_IXGRP; if (p_perm.is_set(file_permission::others_read)) perm |= S_IROTH; if (p_perm.is_set(file_permission::others_write)) perm |= S_IWOTH; if (p_perm.is_set(file_permission::others_execute)) perm |= S_IXOTH; return perm; } file_permissions file_permissions::from_unix(mode_t p_perm) { file_permissions perm; if (p_perm & S_IRUSR) perm.set(file_permission::user_read); if (p_perm & S_IWUSR) perm.set(file_permission::user_write); if (p_perm & S_IXUSR) perm.set(file_permission::user_execute); if (p_perm & S_IRGRP) perm.set(file_permission::group_read); if (p_perm & S_IWGRP) perm.set(file_permission::group_write); if (p_perm & S_IXGRP) perm.set(file_permission::group_execute); if (p_perm & S_IROTH) perm.set(file_permission::others_read); if (p_perm & S_IWOTH) perm.set(file_permission::others_write); if (p_perm & S_IXOTH) perm.set(file_permission::others_execute); return perm; } }