You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

47 lines
1.6 KiB

  1. #pragma once
  2. #include "misc.h"
  3. namespace cppfs
  4. {
  5. mode_t file_permissions::to_unix(const file_permissions& p_perm)
  6. {
  7. mode_t perm = 0;
  8. if (p_perm.is_set(file_permission::user_read)) perm |= S_IRUSR;
  9. if (p_perm.is_set(file_permission::user_write)) perm |= S_IWUSR;
  10. if (p_perm.is_set(file_permission::user_execute)) perm |= S_IXUSR;
  11. if (p_perm.is_set(file_permission::group_read)) perm |= S_IRGRP;
  12. if (p_perm.is_set(file_permission::group_write)) perm |= S_IWGRP;
  13. if (p_perm.is_set(file_permission::group_execute)) perm |= S_IXGRP;
  14. if (p_perm.is_set(file_permission::others_read)) perm |= S_IROTH;
  15. if (p_perm.is_set(file_permission::others_write)) perm |= S_IWOTH;
  16. if (p_perm.is_set(file_permission::others_execute)) perm |= S_IXOTH;
  17. return perm;
  18. }
  19. file_permissions file_permissions::from_unix(mode_t p_perm)
  20. {
  21. file_permissions perm;
  22. if (p_perm & S_IRUSR) perm.set(file_permission::user_read);
  23. if (p_perm & S_IWUSR) perm.set(file_permission::user_write);
  24. if (p_perm & S_IXUSR) perm.set(file_permission::user_execute);
  25. if (p_perm & S_IRGRP) perm.set(file_permission::group_read);
  26. if (p_perm & S_IWGRP) perm.set(file_permission::group_write);
  27. if (p_perm & S_IXGRP) perm.set(file_permission::group_execute);
  28. if (p_perm & S_IROTH) perm.set(file_permission::others_read);
  29. if (p_perm & S_IWOTH) perm.set(file_permission::others_write);
  30. if (p_perm & S_IXOTH) perm.set(file_permission::others_execute);
  31. return perm;
  32. }
  33. }