Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::filesy...perm_options(3) C++ Standard Libarystd::filesy...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 argu-
       ment 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 <fstream>
	#include <bitset>
	#include <iostream>
	#include <filesystem>
	namespace fs = std::filesystem;

	void demo_perms(fs::perms p)
	{
	    std::cout << ((p & fs::perms::owner_read) != fs::perms::none ? "r"
       : "-")
		      << ((p & fs::perms::owner_write)	!=  fs::perms::none  ?
       "w" : "-")
		      << ((p & fs::perms::owner_exec) != fs::perms::none ? "x"
       : "-")
		      << ((p & fs::perms::group_read) != fs::perms::none ? "r"
       : "-")
		      <<  ((p  &  fs::perms::group_write) != fs::perms::none ?
       "w" : "-")
		      << ((p & fs::perms::group_exec) != fs::perms::none ? "x"
       : "-")
		      << ((p & fs::perms::others_read)	!=  fs::perms::none  ?
       "r" : "-")
		      <<  ((p  & fs::perms::others_write) != fs::perms::none ?
       "w" : "-")
		      << ((p & fs::perms::others_exec)	!=  fs::perms::none  ?
       "x" : "-")
		      << '\n';
	}
	int main()
	{
	    std::ofstream("test.txt"); // create file

	    std::cout << "Created file with permissions: ";
	    demo_perms(fs::status("test.txt").permissions());

	    fs::permissions("test.txt",
			    fs::perms::owner_all | fs::perms::group_all,
			    fs::perm_options::add);

	    std::cout << "After	adding u+rwx and g+rwx:	 ";
	    demo_perms(fs::status("test.txt").permissions());

	    fs::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)

http://cppreference.com		  2022.07.31	 std::filesy...perm_options(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::filesystem::perm_options&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help