Namensräume
Varianten
Aktionen

std::filesystem::perm_options

Von cppreference.com
 
 
 
Definiert in Header <filesystem>
enum class perm_options {

    replace = /* nicht spezifiziert */,
    add = /* nicht spezifiziert */,
    remove = /* nicht spezifiziert */,
    nofollow = /* nicht spezifiziert */

};
(seit C++17)

Dieser Typ repräsentiert verfügbare Optionen, die das Verhalten der Funktion std::filesystem::permissions() steuern.

perm_options erfüllt die Anforderungen von BitmaskType (was bedeutet, dass die bitweisen Operatoren operator&, operator|, operator^, operator~, operator&=, operator|= und operator^= für diesen Typ definiert sind).

[bearbeiten] Member-Konstanten

Höchstens eine der Optionen add, remove, replace darf vorhanden sein, andernfalls ist das Verhalten der Berechtigungsfunktion undefiniert.

Member-Konstante Bedeutung
replace Die Berechtigungen werden vollständig durch das Argument für permissions() ersetzt (Standardverhalten)
add Die Berechtigungen werden durch das bitweise OR des Arguments und der aktuellen Berechtigungen ersetzt
remove Die Berechtigungen werden durch das bitweise AND des negierten Arguments und der aktuellen Berechtigungen ersetzt
nofollow Die Berechtigungen werden auf dem Symlink selbst geändert, anstatt auf der Datei, auf die er verweist

[bearbeiten] Beispiel

#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");
}

Mögliche Ausgabe

Created file with permissions: rw-r--r--
After adding u+rwx and g+wrx:  rwxrwxr--

[bearbeiten] Siehe auch

modifiziert Dateizugriffsberechtigungen
(Funktion) [bearbeiten]
(C++17)
identifiziert Dateisystemberechtigungen
(Enum) [bearbeiten]