table of contents
std::filesystem::perm_options(3) | C++ Standard Libary | std::filesystem::perm_options(3) |
NAME¶
std::filesystem::perm_options - std::filesystem::perm_options
Synopsis¶
Defined in header <filesystem>
enum class perm_options {
replace = /* unspecified */,
add = /* unspecified */, (since C++17)
remove = /* unspecified */,
nofollow = /* unspecified */
};
This type represents available options that control the behavior of the
function
std::filesystem::permissions().
perm_options satisfies the requirements of BitmaskType (which means the
bitwise
operators operator&, operator|, operator^, operator~, operator&=,
operator|=, and
operator^= are defined for this type).
Member constants¶
At most one of add, remove, replace may be present, otherwise the
behavior of the
permissions function is undefined.
Member constant Meaning
replace Permissions will be completely replaced by the argument to
permissions() (default behavior)
add Permissions will be replaced by the bitwise OR of the argument and
the current permissions
remove Permissions will be replaced by the bitwise AND of the negated
argument and current permissions
nofollow Permissions will be changed on the symlink itself, rather than on
the file it resolves to
Example¶
// Run this code
#include <filesystem>
#include <fstream>
#include <iostream>
void demo_perms(std::filesystem::perms p)
{
using std::filesystem::perms;
auto show = [=](char op, perms perm)
{
std::cout << (perms::none == (perm & p) ? '-' : op);
};
show('r', perms::owner_read);
show('w', perms::owner_write);
show('x', perms::owner_exec);
show('r', perms::group_read);
show('w', perms::group_write);
show('x', perms::group_exec);
show('r', perms::others_read);
show('w', perms::others_write);
show('x', perms::others_exec);
std::cout << '\n';
}
int main()
{
std::ofstream("test.txt"); // create file
std::cout << "Created file with permissions: ";
demo_perms(std::filesystem::status("test.txt").permissions());
std::filesystem::permissions(
"test.txt",
std::filesystem::perms::owner_all | std::filesystem::perms::group_all,
std::filesystem::perm_options::add
);
std::cout << "After adding u+rwx and g+rwx: ";
demo_perms(std::filesystem::status("test.txt").permissions());
std::filesystem::remove("test.txt");
}
Possible output:¶
Created file with permissions: rw-r--r--
After adding u+rwx and g+wrx: rwxrwxr--
See also¶
permissions modifies file access permissions
(C++17) (function)
perms identifies file system permissions
(C++17) (enum)
2024.06.10 | http://cppreference.com |