68 lines
2.2 KiB
Markdown
68 lines
2.2 KiB
Markdown
[fs.conform.9945]
|
||
|
||
# 31 Input/output library [[input.output]](./#input.output)
|
||
|
||
## 31.12 File systems [[filesystems]](filesystems#fs.conform.9945)
|
||
|
||
### 31.12.2 Conformance [[fs.conformance]](fs.conformance#fs.conform.9945)
|
||
|
||
#### 31.12.2.2 POSIX conformance [fs.conform.9945]
|
||
|
||
[1](#1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L13173)
|
||
|
||
Some behavior is specified by reference to POSIX[.](#1.sentence-1)
|
||
|
||
How such behavior is actually implemented is unspecified[.](#1.sentence-2)
|
||
|
||
[*Note [1](#note-1)*:
|
||
|
||
This constitutes an âas ifâ rule allowing implementations
|
||
to call native
|
||
operating system or other APIs[.](#1.sentence-3)
|
||
|
||
â *end note*]
|
||
|
||
[2](#2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L13181)
|
||
|
||
Implementations should provide such behavior as it is defined by
|
||
POSIX[.](#2.sentence-1)
|
||
|
||
Implementations shall document any behavior that differs from the
|
||
behavior defined by POSIX[.](#2.sentence-2)
|
||
|
||
Implementations that do not support exact POSIX
|
||
behavior should provide behavior as close to POSIX behavior as is reasonable given the
|
||
limitations of actual operating systems and file systems[.](#2.sentence-3)
|
||
|
||
If an implementation cannot provide any
|
||
reasonable behavior, the implementation shall report an error as specified in [[fs.err.report]](fs.err.report "31.12.5 Error reporting")[.](#2.sentence-4)
|
||
|
||
[*Note [2](#note-2)*:
|
||
|
||
This allows users to rely on an exception being thrown or
|
||
an error code being set when an implementation cannot provide any reasonable
|
||
behavior[.](#2.sentence-5)
|
||
|
||
â *end note*]
|
||
|
||
[3](#3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L13194)
|
||
|
||
Implementations are not required to provide behavior that is not supported by
|
||
a particular file system[.](#3.sentence-1)
|
||
|
||
[*Example [1](#example-1)*:
|
||
|
||
The FAT file system used by some memory cards, camera memory, and
|
||
floppy disks does not support hard links, symlinks, and many other features of
|
||
more capable file systems, so implementations are not required to support those
|
||
features on the FAT file system
|
||
but instead are required to report an error as described above[.](#3.sentence-2)
|
||
|
||
â *end example*]
|