Skip to content

Commit

Permalink
util: add fs helpers to convert perms to str and octal
Browse files Browse the repository at this point in the history
Github-Pull: bitcoin#28167
Rebased-From: 36816dc
  • Loading branch information
willcl-ark authored and luke-jr committed May 28, 2024
1 parent ba25bec commit a1b1d33
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 0 deletions.
23 changes: 23 additions & 0 deletions src/util/fs_helpers.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -307,6 +307,29 @@ std::string PermsToString(fs::perms p)
return perm_str;
}

unsigned int PermsToOctal(fs::perms p)
{
unsigned int octalPerms = 0;

octalPerms |= (p & fs::perms::owner_read) != fs::perms::none ? 0400 : 0;
octalPerms |= (p & fs::perms::owner_write) != fs::perms::none ? 0200 : 0;
octalPerms |= (p & fs::perms::owner_exec) != fs::perms::none ? 0100 : 0;
octalPerms |= (p & fs::perms::group_read) != fs::perms::none ? 0040 : 0;
octalPerms |= (p & fs::perms::group_write) != fs::perms::none ? 0020 : 0;
octalPerms |= (p & fs::perms::group_exec) != fs::perms::none ? 0010 : 0;
octalPerms |= (p & fs::perms::others_read) != fs::perms::none ? 0004 : 0;
octalPerms |= (p & fs::perms::others_write) != fs::perms::none ? 0002 : 0;
octalPerms |= (p & fs::perms::others_exec) != fs::perms::none ? 0001 : 0;

return octalPerms;
}

std::string PermsToOctalString(fs::perms p) {
std::ostringstream oss;
oss << std::oct << std::setfill('0') << std::setw(3) << PermsToOctal(p);
return oss.str();
}

std::optional<fs::perms> StringToPerms(const std::string& s)
{
if (s == "owner") {
Expand Down
2 changes: 2 additions & 0 deletions src/util/fs_helpers.h
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@ bool TryCreateDirectories(const fs::path& p);
fs::path GetDefaultDataDir();

std::string PermsToString(fs::perms p);
unsigned int PermsToOctal(fs::perms p);
std::string PermsToOctalString(fs::perms p);
std::optional<fs::perms> StringToPerms(const std::string& s);

#ifdef WIN32
Expand Down

0 comments on commit a1b1d33

Please sign in to comment.