[fs.enum]

31 Input/output library [input.output]

31.12 File systems [filesystems]

31.12.8 Enumerations [fs.enum]


31.12.8.1 Enum path​::​format [fs.enum.path.format]

31.12.8.2 Enum class file_type [fs.enum.file.type]

31.12.8.3 Enum class copy_options [fs.enum.copy.opts]

31.12.8.4 Enum class perms [fs.enum.perms]

31.12.8.5 Enum class perm_options [fs.enum.perm.opts]

31.12.8.6 Enum class directory_options [fs.enum.dir.opts]


31.12.8.1 Enum path​::​format [fs.enum.path.format]

This enum specifies constants used to identify the format of the character sequence, with the meanings listed in Table 148.

Table 148 — Enum path​::​format[tab:fs.enum.path.format]

The native pathname format.

The generic pathname format.

The interpretation of the format of the character sequence is implementation-defined.

The implementation may inspect the content of the character sequence to determine the format.

Recommended practice: For POSIX-based systems, native and generic formats are equivalent and the character sequence should always be interpreted in the same way.

31.12.8.2 Enum class file_type [fs.enum.file.type]

This enum class specifies constants used to identify file types, with the meanings listed in Table 149.

The values of the constants are distinct.

Table 149 — Enum class file_type[tab:fs.enum.file.type]

Constant

Meaning

The type of the file has not been determined or an error occurred while trying to determine the type.

Pseudo-type indicating the file was not found.

[Note 1:

The file not being found is not considered an error while determining the type of a file.

— end note]

Regular file

Directory file

Symbolic link file

Block special file

Character special file

FIFO or pipe file

Socket file

implementation-defined

Implementations that support file systems having file types in addition to the above file_type types shall supply implementation-defined file_type constants to separately identify each of those additional file types

The file exists but the type cannot be determined

31.12.8.3 Enum class copy_options [fs.enum.copy.opts]

The enum class type copy_options is a bitmask type ([bitmask.types]) that specifies bitmask constants used to control the semantics of copy operations.

The constants are specified in option groups with the meanings listed in Table 150.

The constant none represents the empty bitmask, and is shown in each option group for purposes of exposition; implementations shall provide only a single definition.

Every other constant in the table represents a distinct bitmask element.

Table 150 — Enum class copy_options[tab:fs.enum.copy.opts]

Option group controlling copy_file function effects for existing target files

Constant

Meaning

(Default) Error; file already exists.

Do not overwrite existing file, do not report an error.

Overwrite the existing file.

Overwrite the existing file if it is older than the replacement file.

Option group controlling copy function effects for subdirectories

Constant

Meaning

(Default) Do not copy subdirectories.

Recursively copy subdirectories and their contents.

Option group controlling copy function effects for symbolic links

Constant

Meaning

(Default) Follow symbolic links.

Copy symbolic links as symbolic links rather than copying the files that they point to.

Ignore symbolic links.

Option group controlling copy function effects for choosing the form of copying

Constant

Meaning

(Default) Copy content.

Copy directory structure only, do not copy non-directory files.

Make symbolic links instead of copies of files.

The source path shall be an absolute path unless the destination path is in the current directory.

Make hard links instead of copies of files.

31.12.8.4 Enum class perms [fs.enum.perms]

The enum class type perms is a bitmask type ([bitmask.types]) that specifies bitmask constants used to identify file permissions, with the meanings listed in Table 151.

Table 151 — Enum class perms[tab:fs.enum.perms]

Name

Value

POSIX

Definition or notes

(octal)

macro

0

There are no permissions set for the file.

0400

S_IRUSR

Read permission, owner

0200

S_IWUSR

Write permission, owner

0100

S_IXUSR

Execute/search permission, owner

0700

S_IRWXU

Read, write, execute/search by owner;
owner_read | owner_write | owner_exec

040

S_IRGRP

Read permission, group

020

S_IWGRP

Write permission, group

010

S_IXGRP

Execute/search permission, group

070

S_IRWXG

Read, write, execute/search by group;
group_read | group_write | group_exec

04

S_IROTH

Read permission, others

02

S_IWOTH

Write permission, others

01

S_IXOTH

Execute/search permission, others

07

S_IRWXO

Read, write, execute/search by others;
others_read | others_write | others_exec

0777

owner_all | group_all | others_all

04000

S_ISUID

Set-user-ID on execution

02000

S_ISGID

Set-group-ID on execution

01000

S_ISVTX

Operating system dependent.

07777

all | set_uid | set_gid | sticky_bit

0xFFFF

The permissions are not known, such as when a file_status object is created without specifying the permissions

31.12.8.5 Enum class perm_options [fs.enum.perm.opts]

The enum class type perm_options is a bitmask type ([bitmask.types]) that specifies bitmask constants used to control the semantics of permissions operations, with the meanings listed in Table 152.

The bitmask constants are bitmask elements.

In Table 152 perm denotes a value of type perms passed to permissions.

Table 152 — Enum class perm_options[tab:fs.enum.perm.opts]

permissions shall replace the file's permission bits with perm

permissions shall replace the file's permission bits with the bitwise or of perm and the file's current permission bits.

permissions shall replace the file's permission bits with the bitwise and of the complement of perm and the file's current permission bits.

permissions shall change the permissions of a symbolic link itself rather than the permissions of the file the link resolves to.

31.12.8.6 Enum class directory_options [fs.enum.dir.opts]

The enum class type directory_options is a bitmask type ([bitmask.types]) that specifies bitmask constants used to identify directory traversal options, with the meanings listed in Table 153.

The constant none represents the empty bitmask; every other constant in the table represents a distinct bitmask element.

Table 153 — Enum class directory_options[tab:fs.enum.dir.opts]

(Default) Skip directory symlinks, permission denied is an error.

Follow rather than skip directory symlinks.

Skip directories that would otherwise result in permission denied.