Files
cppdraft_translate/cppdraft/fs/enum.md
2025-10-25 03:02:53 +03:00

18 KiB
Raw Blame History

[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]

1

#

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]

🔗
Name
Meaning
🔗
native_format
The native pathname format.
🔗
generic_format
The generic pathname format.
🔗
auto_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]

1

#

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
🔗
none
The type of the file has not been determined or an error occurred while trying to determine the type.
🔗
not_found
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
Regular file
🔗
directory
Directory file
🔗
symlink
Symbolic link file
🔗
block
Block special file
🔗
character
Character special file
🔗
fifo
FIFO or pipe file
🔗
socket
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
🔗
unknown
The file exists but the type cannot be determined

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

1

#

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
🔗
none
(Default) Error; file already exists.
🔗
skip_existing
Do not overwrite existing file, do not report an error.
🔗
overwrite_existing
Overwrite the existing file.
🔗
update_existing
Overwrite the existing file if it is older than the replacement file.
🔗
Option group controlling copy function effects for subdirectories
🔗
Constant
Meaning
🔗
none
(Default) Do not copy subdirectories.
🔗
recursive
Recursively copy subdirectories and their contents.
🔗
Option group controlling copy function effects for symbolic links
🔗
Constant
Meaning
🔗
none
(Default) Follow symbolic links.
🔗
copy_symlinks
Copy symbolic links as symbolic links rather than copying the files that they point to.
🔗
skip_symlinks
Ignore symbolic links.
🔗
Option group controlling copy function effects for choosing the form of copying
🔗
Constant
Meaning
🔗
none
(Default) Copy content.
🔗
directories_only
Copy directory structure only, do not copy non-directory files.
🔗
create_symlinks
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.
🔗
create_hard_links
Make hard links instead of copies of files.

31.12.8.4 Enum class perms [fs.enum.perms]

1

#

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
🔗
none
0 There are no permissions set for the file.
🔗
owner_read
0400 S_IRUSR Read permission, owner
🔗
owner_write
0200 S_IWUSR Write permission, owner
🔗
owner_exec
0100 S_IXUSR Execute/search permission, owner
🔗
owner_all
0700 S_IRWXU Read, write, execute/search by owner; owner_read
🔗
group_read
040 S_IRGRP Read permission, group
🔗
group_write
020 S_IWGRP Write permission, group
🔗
group_exec
010 S_IXGRP Execute/search permission, group
🔗
group_all
070 S_IRWXG Read, write, execute/search by group; group_read
🔗
others_read
04 S_IROTH Read permission, others
🔗
others_write
02 S_IWOTH Write permission, others
🔗
others_exec
01 S_IXOTH Execute/search permission, others
🔗
others_all
07 S_IRWXO Read, write, execute/search by others; others_read
🔗
all
0777 owner_all
🔗
set_uid
04000 S_ISUID Set-user-ID on execution
🔗
set_gid
02000 S_ISGID Set-group-ID on execution
🔗
sticky_bit
01000 S_ISVTX Operating system dependent.
🔗
mask
07777 all
🔗
unknown
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]

1

#

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]

🔗
Name
Meaning
🔗
replace
permissions shall replace the file's permission bits with perm
🔗
add
permissions shall replace the file's permission bits with the bitwise or of perm and the file's current permission bits.
🔗
remove
permissions shall replace the file's permission bits with the bitwise and of the complement of perm and the file's current permission bits.
🔗
nofollow
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]

1

#

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]

🔗
Name
Meaning
🔗
none
(Default) Skip directory symlinks, permission denied is an error.
🔗
follow_directory_symlink
Follow rather than skip directory symlinks.
🔗
skip_permission_denied
Skip directories that would otherwise result in permission denied.