summaryrefslogtreecommitdiff
path: root/manual/filesys.texi
diff options
context:
space:
mode:
Diffstat (limited to 'manual/filesys.texi')
-rw-r--r--manual/filesys.texi389
1 files changed, 131 insertions, 258 deletions
diff --git a/manual/filesys.texi b/manual/filesys.texi
index e3fe323f47..5f7eb0e231 100644
--- a/manual/filesys.texi
+++ b/manual/filesys.texi
@@ -55,9 +55,8 @@ Prototypes for these functions are declared in the header file
@file{unistd.h}.
@pindex unistd.h
-@comment unistd.h
-@comment POSIX.1
@deftypefun {char *} getcwd (char *@var{buffer}, size_t @var{size})
+@standards{POSIX.1, unistd.h}
@safety{@prelim{}@mtsafe{}@asunsafe{@ascuheap{}}@acunsafe{@acsmem{} @acsfd{}}}
@c If buffer is NULL, this function calls malloc and realloc, and, in
@c case of error, free. Linux offers a getcwd syscall that we use on
@@ -132,9 +131,8 @@ gnu_getcwd ()
not a library function but is a customary name used in most GNU
software.
-@comment unistd.h
-@comment BSD
@deftypefn {Deprecated Function} {char *} getwd (char *@var{buffer})
+@standards{BSD, unistd.h}
@safety{@prelim{}@mtsafe{}@asunsafe{@ascuheap{} @ascuintl{}}@acunsafe{@acsmem{} @acsfd{}}}
@c Besides the getcwd safety issues, it calls strerror_r on error, which
@c brings in all of the i18n issues.
@@ -149,9 +147,8 @@ necessarily enough space to contain the directory name. That is why
this function is deprecated.
@end deftypefn
-@comment unistd.h
-@comment GNU
@deftypefun {char *} get_current_dir_name (void)
+@standards{GNU, unistd.h}
@safety{@prelim{}@mtsafe{@mtsenv{}}@asunsafe{@ascuheap{}}@acunsafe{@acsmem{} @acsfd{}}}
@c Besides getcwd, which this function calls as a fallback, it calls
@c getenv, with the potential thread-safety issues that brings about.
@@ -167,9 +164,8 @@ therefore yield a different result.
This function is a GNU extension.
@end deftypefun
-@comment unistd.h
-@comment POSIX.1
@deftypefun int chdir (const char *@var{filename})
+@standards{POSIX.1, unistd.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
This function is used to set the process's working directory to
@var{filename}.
@@ -181,9 +177,8 @@ syntax errors (@pxref{File Name Errors}), plus @code{ENOTDIR} if the
file @var{filename} is not a directory.
@end deftypefun
-@comment unistd.h
-@comment XPG
@deftypefun int fchdir (int @var{filedes})
+@standards{XPG, unistd.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
This function is used to set the process's working directory to
directory associated with the file descriptor @var{filedes}.
@@ -256,9 +251,8 @@ This section describes what you find in a single directory entry, as you
might obtain it from a directory stream. All the symbols are declared
in the header file @file{dirent.h}.
-@comment dirent.h
-@comment POSIX.1
@deftp {Data Type} {struct dirent}
+@standards{POSIX.1, dirent.h}
This is a structure type used to return information about directory
entries. It contains the following fields:
@@ -318,16 +312,14 @@ corresponds to the file type bits in the @code{st_mode} member of
value is DT_UNKNOWN. These two macros convert between @code{d_type}
values and @code{st_mode} values:
-@comment dirent.h
-@comment BSD
@deftypefun int IFTODT (mode_t @var{mode})
+@standards{BSD, dirent.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
This returns the @code{d_type} value corresponding to @var{mode}.
@end deftypefun
-@comment dirent.h
-@comment BSD
@deftypefun mode_t DTTOIF (int @var{dtype})
+@standards{BSD, dirent.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
This returns the @code{st_mode} value corresponding to @var{dtype}.
@end deftypefun
@@ -357,9 +349,8 @@ Attributes}.
This section describes how to open a directory stream. All the symbols
are declared in the header file @file{dirent.h}.
-@comment dirent.h
-@comment POSIX.1
@deftp {Data Type} DIR
+@standards{POSIX.1, dirent.h}
The @code{DIR} data type represents a directory stream.
@end deftp
@@ -368,9 +359,8 @@ You shouldn't ever allocate objects of the @code{struct dirent} or
you. Instead, you refer to these objects using the pointers returned by
the following functions.
-@comment dirent.h
-@comment POSIX.1
@deftypefun {DIR *} opendir (const char *@var{dirname})
+@standards{POSIX.1, dirent.h}
@safety{@prelim{}@mtsafe{}@asunsafe{@ascuheap{}}@acunsafe{@acsmem{} @acsfd{}}}
@c Besides the safe syscall, we have to allocate the DIR object with
@c __alloc_dir, that calls malloc.
@@ -410,9 +400,8 @@ Or the way @code{opendir} implicitly creates a file descriptor for the
directory is not the way a program might want it. In these cases an
alternative interface can be used.
-@comment dirent.h
-@comment GNU
@deftypefun {DIR *} fdopendir (int @var{fd})
+@standards{GNU, dirent.h}
@safety{@prelim{}@mtsafe{}@asunsafe{@ascuheap{}}@acunsafe{@acsmem{} @acsfd{}}}
@c The DIR object is allocated with __alloc_dir, that calls malloc.
The @code{fdopendir} function works just like @code{opendir} but
@@ -456,9 +445,8 @@ was exposed and programs could access the fields. This does not happen
in @theglibc{}. Instead a separate function is provided to allow
access.
-@comment dirent.h
-@comment GNU
@deftypefun int dirfd (DIR *@var{dirstream})
+@standards{GNU, dirent.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
The function @code{dirfd} returns the file descriptor associated with
the directory stream @var{dirstream}. This descriptor can be used until
@@ -475,9 +463,8 @@ This section describes how to read directory entries from a directory
stream, and how to close the stream when you are done with it. All the
symbols are declared in the header file @file{dirent.h}.
-@comment dirent.h
-@comment POSIX.1
@deftypefun {struct dirent *} readdir (DIR *@var{dirstream})
+@standards{POSIX.1, dirent.h}
@safety{@prelim{}@mtsafe{}@asunsafe{@asulock{}}@acunsafe{@aculock{}}}
@c This function holds dirstream's non-recursive lock, which brings
@c about the usual issues with locks and async signals and cancellation,
@@ -527,9 +514,8 @@ has problems with very long filenames (see below). We recommend
you use @code{readdir}, but do not share @code{DIR} objects.
@end deftypefun
-@comment dirent.h
-@comment GNU
@deftypefun int readdir_r (DIR *@var{dirstream}, struct dirent *@var{entry}, struct dirent **@var{result})
+@standards{GNU, dirent.h}
@safety{@prelim{}@mtsafe{}@asunsafe{@asulock{}}@acunsafe{@aculock{}}}
This function is a version of @code{readdir} which performs internal
locking. Like @code{readdir} it returns the next entry from the
@@ -600,9 +586,8 @@ Code to call @code{readdir_r} could look like this:
To support large filesystems on 32-bit machines there are LFS variants
of the last two functions.
-@comment dirent.h
-@comment LFS
@deftypefun {struct dirent64 *} readdir64 (DIR *@var{dirstream})
+@standards{LFS, dirent.h}
@safety{@prelim{}@mtsafe{}@asunsafe{@asulock{}}@acunsafe{@aculock{}}}
The @code{readdir64} function is just like the @code{readdir} function
except that it returns a pointer to a record of type @code{struct
@@ -612,9 +597,8 @@ might have a different size to allow large filesystems.
In all other aspects this function is equivalent to @code{readdir}.
@end deftypefun
-@comment dirent.h
-@comment LFS
@deftypefun int readdir64_r (DIR *@var{dirstream}, struct dirent64 *@var{entry}, struct dirent64 **@var{result})
+@standards{LFS, dirent.h}
@safety{@prelim{}@mtsafe{}@asunsafe{@asulock{}}@acunsafe{@aculock{}}}
The deprecated @code{readdir64_r} function is equivalent to the
@code{readdir_r} function except that it takes parameters of base type
@@ -623,9 +607,8 @@ third position. The same precautions mentioned in the documentation of
@code{readdir_r} also apply here.
@end deftypefun
-@comment dirent.h
-@comment POSIX.1
@deftypefun int closedir (DIR *@var{dirstream})
+@standards{POSIX.1, dirent.h}
@safety{@prelim{}@mtsafe{}@asunsafe{@ascuheap{} @asulock{/hurd}}@acunsafe{@acsmem{} @acsfd{} @aculock{/hurd}}}
@c No synchronization in the posix implementation, only in the hurd
@c one. This is regarded as safe because it is undefined behavior if
@@ -666,9 +649,8 @@ This section describes how to reread parts of a directory that you have
already read from an open directory stream. All the symbols are
declared in the header file @file{dirent.h}.
-@comment dirent.h
-@comment POSIX.1
@deftypefun void rewinddir (DIR *@var{dirstream})
+@standards{POSIX.1, dirent.h}
@safety{@prelim{}@mtsafe{}@asunsafe{@asulock{}}@acunsafe{@aculock{}}}
The @code{rewinddir} function is used to reinitialize the directory
stream @var{dirstream}, so that if you call @code{readdir} it
@@ -680,9 +662,8 @@ added or removed since you last called @code{opendir} or
@code{rewinddir}.)
@end deftypefun
-@comment dirent.h
-@comment BSD
@deftypefun {long int} telldir (DIR *@var{dirstream})
+@standards{BSD, dirent.h}
@safety{@prelim{}@mtsafe{}@asunsafe{@ascuheap{/bsd} @asulock{/bsd}}@acunsafe{@acsmem{/bsd} @aculock{/bsd}}}
@c The implementation is safe on most platforms, but on BSD it uses
@c cookies, buckets and records, and the global array of pointers to
@@ -692,9 +673,8 @@ stream @var{dirstream}. You can use this value with @code{seekdir} to
restore the directory stream to that position.
@end deftypefun
-@comment dirent.h
-@comment BSD
@deftypefun void seekdir (DIR *@var{dirstream}, long int @var{pos})
+@standards{BSD, dirent.h}
@safety{@prelim{}@mtsafe{}@asunsafe{@ascuheap{/bsd} @asulock{/bsd}}@acunsafe{@acsmem{/bsd} @aculock{/bsd}}}
@c The implementation is safe on most platforms, but on BSD it uses
@c cookies, buckets and records, and the global array of pointers to
@@ -715,9 +695,9 @@ A higher-level interface to the directory handling functions is the
entries in a directory, possibly sort them and get a list of names as
the result.
-@comment dirent.h
-@comment BSD, SVID
@deftypefun int scandir (const char *@var{dir}, struct dirent ***@var{namelist}, int (*@var{selector}) (const struct dirent *), int (*@var{cmp}) (const struct dirent **, const struct dirent **))
+@standards{BSD, dirent.h}
+@standards{SVID, dirent.h}
@safety{@prelim{}@mtsafe{}@asunsafe{@ascuheap{}}@acunsafe{@acsmem{} @acsfd{}}}
@c The scandir function calls __opendirat, __readdir, and __closedir to
@c go over the named dir; malloc and realloc to allocate the namelist
@@ -758,9 +738,9 @@ must be a pointer to a sorting function. For the convenience of the
programmer @theglibc{} contains implementations of functions which
are very helpful for this purpose.
-@comment dirent.h
-@comment BSD, SVID
@deftypefun int alphasort (const struct dirent **@var{a}, const struct dirent **@var{b})
+@standards{BSD, dirent.h}
+@standards{SVID, dirent.h}
@safety{@prelim{}@mtsafe{@mtslocale{}}@asunsafe{@ascuheap{}}@acunsafe{@acsmem{}}}
@c Calls strcoll.
The @code{alphasort} function behaves like the @code{strcoll} function
@@ -772,9 +752,8 @@ The return value of @code{alphasort} is less than, equal to, or greater
than zero depending on the order of the two entries @var{a} and @var{b}.
@end deftypefun
-@comment dirent.h
-@comment GNU
@deftypefun int versionsort (const struct dirent **@var{a}, const struct dirent **@var{b})
+@standards{GNU, dirent.h}
@safety{@prelim{}@mtsafe{@mtslocale{}}@assafe{}@acsafe{}}
@c Calls strverscmp, which will accesses the locale object multiple
@c times.
@@ -787,9 +766,8 @@ anymore since the @code{dirent} structure might not able to contain all
the information. The LFS provides the new type @w{@code{struct
dirent64}}. To use this we need a new function.
-@comment dirent.h
-@comment GNU
@deftypefun int scandir64 (const char *@var{dir}, struct dirent64 ***@var{namelist}, int (*@var{selector}) (const struct dirent64 *), int (*@var{cmp}) (const struct dirent64 **, const struct dirent64 **))
+@standards{GNU, dirent.h}
@safety{@prelim{}@mtsafe{}@asunsafe{@ascuheap{}}@acunsafe{@acsmem{} @acsfd{}}}
@c See scandir.
The @code{scandir64} function works like the @code{scandir} function
@@ -807,9 +785,8 @@ As @var{cmp} is now a function of a different type, the functions
@code{alphasort} and @code{versionsort} cannot be supplied for that
argument. Instead we provide the two replacement functions below.
-@comment dirent.h
-@comment GNU
@deftypefun int alphasort64 (const struct dirent64 **@var{a}, const struct dirent **@var{b})
+@standards{GNU, dirent.h}
@safety{@prelim{}@mtsafe{@mtslocale{}}@asunsafe{@ascuheap{}}@acunsafe{@acsmem{}}}
@c See alphasort.
The @code{alphasort64} function behaves like the @code{strcoll} function
@@ -821,9 +798,8 @@ Return value of @code{alphasort64} is less than, equal to, or greater
than zero depending on the order of the two entries @var{a} and @var{b}.
@end deftypefun
-@comment dirent.h
-@comment GNU
@deftypefun int versionsort64 (const struct dirent64 **@var{a}, const struct dirent64 **@var{b})
+@standards{GNU, dirent.h}
@safety{@prelim{}@mtsafe{@mtslocale{}}@assafe{}@acsafe{}}
@c See versionsort.
The @code{versionsort64} function is like @code{alphasort64}, excepted that it
@@ -871,9 +847,8 @@ their 64-bit counterparts @code{ftw64} and @code{nftw64}. These
functions take as one of their arguments a pointer to a callback
function of the appropriate type.
-@comment ftw.h
-@comment GNU
@deftp {Data Type} __ftw_func_t
+@standards{GNU, ftw.h}
@smallexample
int (*) (const char *, const struct stat *, int)
@@ -917,9 +892,8 @@ type is in fact @code{__ftw64_func_t} since this mode changes
For the LFS interface and for use in the function @code{ftw64}, the
header @file{ftw.h} defines another function type.
-@comment ftw.h
-@comment GNU
@deftp {Data Type} __ftw64_func_t
+@standards{GNU, ftw.h}
@smallexample
int (*) (const char *, const struct stat64 *, int)
@@ -931,9 +905,8 @@ parameter to the function is a pointer to a variable of type
@code{struct stat64} which is able to represent the larger values.
@end deftp
-@comment ftw.h
-@comment GNU
@deftp {Data Type} __nftw_func_t
+@standards{GNU, ftw.h}
@smallexample
int (*) (const char *, const struct stat *, int, struct FTW *)
@@ -963,9 +936,8 @@ type is in fact @code{__nftw64_func_t} since this mode changes
For the LFS interface there is also a variant of this data type
available which has to be used with the @code{nftw64} function.
-@comment ftw.h
-@comment GNU
@deftp {Data Type} __nftw64_func_t
+@standards{GNU, ftw.h}
@smallexample
int (*) (const char *, const struct stat64 *, int, struct FTW *)
@@ -977,9 +949,8 @@ parameter to the function is this time a pointer to a variable of type
@code{struct stat64} which is able to represent the larger values.
@end deftp
-@comment ftw.h
-@comment XPG4.2
@deftp {Data Type} {struct FTW}
+@standards{XPG4.2, ftw.h}
The information contained in this structure helps in interpreting the
name parameter and gives some information about the current state of the
traversal of the directory hierarchy.
@@ -1001,9 +972,8 @@ file was passed).
@end deftp
-@comment ftw.h
-@comment SVID
@deftypefun int ftw (const char *@var{filename}, __ftw_func_t @var{func}, int @var{descriptors})
+@standards{SVID, ftw.h}
@safety{@prelim{}@mtsafe{}@asunsafe{@ascuheap{}}@acunsafe{@acsmem{} @acsfd{}}}
@c see nftw for safety details
The @code{ftw} function calls the callback function given in the
@@ -1053,9 +1023,8 @@ When the sources are compiled with @code{_FILE_OFFSET_BITS == 64} on a
interface transparently replaces the old interface.
@end deftypefun
-@comment ftw.h
-@comment Unix98
@deftypefun int ftw64 (const char *@var{filename}, __ftw64_func_t @var{func}, int @var{descriptors})
+@standards{Unix98, ftw.h}
@safety{@prelim{}@mtsafe{}@asunsafe{@ascuheap{}}@acunsafe{@acsmem{} @acsfd{}}}
This function is similar to @code{ftw} but it can work on filesystems
with large files. File information is reported using a variable of type
@@ -1067,9 +1036,8 @@ When the sources are compiled with @code{_FILE_OFFSET_BITS == 64} on a
transparently replaces the old implementation.
@end deftypefun
-@comment ftw.h
-@comment XPG4.2
@deftypefun int nftw (const char *@var{filename}, __nftw_func_t @var{func}, int @var{descriptors}, int @var{flag})
+@standards{XPG4.2, ftw.h}
@safety{@prelim{}@mtsafe{@mtasscwd{}}@asunsafe{@ascuheap{}}@acunsafe{@acsmem{} @acsfd{} @acscwd{}}}
@c ftw_startup calls alloca, malloc, free, xstat/lxstat, tdestroy, and ftw_dir
@c if FTW_CHDIR, call open, and fchdir, or chdir and getcwd
@@ -1138,9 +1106,8 @@ When the sources are compiled with @code{_FILE_OFFSET_BITS == 64} on a
interface transparently replaces the old interface.
@end deftypefun
-@comment ftw.h
-@comment Unix98
@deftypefun int nftw64 (const char *@var{filename}, __nftw64_func_t @var{func}, int @var{descriptors}, int @var{flag})
+@standards{Unix98, ftw.h}
@safety{@prelim{}@mtsafe{@mtasscwd{}}@asunsafe{@ascuheap{}}@acunsafe{@acsmem{} @acsfd{} @acscwd{}}}
This function is similar to @code{nftw} but it can work on filesystems
with large files. File information is reported using a variable of type
@@ -1182,9 +1149,8 @@ The prototype for the @code{link} function is declared in the header
file @file{unistd.h}.
@pindex unistd.h
-@comment unistd.h
-@comment POSIX.1
@deftypefun int link (const char *@var{oldname}, const char *@var{newname})
+@standards{POSIX.1, unistd.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
The @code{link} function makes a new link to the existing file named by
@var{oldname}, under the new name @var{newname}.
@@ -1274,9 +1240,8 @@ Some systems have, for some functions operating on files, a limit on
how many symbolic links are followed when resolving a path name. The
limit if it exists is published in the @file{sys/param.h} header file.
-@comment sys/param.h
-@comment BSD
@deftypevr Macro int MAXSYMLINKS
+@standards{BSD, sys/param.h}
The macro @code{MAXSYMLINKS} specifies how many symlinks some function
will follow before returning @code{ELOOP}. Not all functions behave the
@@ -1290,9 +1255,8 @@ Prototypes for most of the functions listed in this section are in
@file{unistd.h}.
@pindex unistd.h
-@comment unistd.h
-@comment BSD
@deftypefun int symlink (const char *@var{oldname}, const char *@var{newname})
+@standards{BSD, unistd.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
The @code{symlink} function makes a symbolic link to @var{oldname} named
@var{newname}.
@@ -1328,9 +1292,8 @@ exceeded.
@end table
@end deftypefun
-@comment unistd.h
-@comment BSD
@deftypefun ssize_t readlink (const char *@var{filename}, char *@var{buffer}, size_t @var{size})
+@standards{BSD, unistd.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
The @code{readlink} function gets the value of the symbolic link
@var{filename}. The file name that the link points to is copied into
@@ -1388,9 +1351,8 @@ and no filename in the path is @code{.} or @code{..}. This is for
instance desirable if files have to be compared in which case different
names can refer to the same inode.
-@comment stdlib.h
-@comment GNU
@deftypefun {char *} canonicalize_file_name (const char *@var{name})
+@standards{GNU, stdlib.h}
@safety{@prelim{}@mtsafe{}@asunsafe{@ascuheap{}}@acunsafe{@acsmem{} @acsfd{}}}
@c Calls realpath.
@@ -1431,9 +1393,8 @@ The Unix standard includes a similar function which differs from
@code{canonicalize_file_name} in that the user has to provide the buffer
where the result is placed in.
-@comment stdlib.h
-@comment XPG
@deftypefun {char *} realpath (const char *restrict @var{name}, char *restrict @var{resolved})
+@standards{XPG, stdlib.h}
@safety{@prelim{}@mtsafe{}@asunsafe{@ascuheap{}}@acunsafe{@acsmem{} @acsfd{}}}
@c Calls malloc, realloc, getcwd, lxstat64, readlink, alloca.
@@ -1472,9 +1433,8 @@ Deletion actually deletes a file name. If this is the file's only name,
then the file is deleted as well. If the file has other remaining names
(@pxref{Hard Links}), it remains accessible under those names.
-@comment unistd.h
-@comment POSIX.1
@deftypefun int unlink (const char *@var{filename})
+@standards{POSIX.1, unistd.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
The @code{unlink} function deletes the file name @var{filename}. If
this is a file's sole name, the file itself is also deleted. (Actually,
@@ -1515,9 +1475,8 @@ file system and can't be modified.
@end table
@end deftypefun
-@comment unistd.h
-@comment POSIX.1
@deftypefun int rmdir (const char *@var{filename})
+@standards{POSIX.1, unistd.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
@cindex directories, deleting
@cindex deleting a directory
@@ -1543,9 +1502,8 @@ The prototype for this function is declared in the header file
@pindex unistd.h
@end deftypefun
-@comment stdio.h
-@comment ISO
@deftypefun int remove (const char *@var{filename})
+@standards{ISO, stdio.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
@c Calls unlink and rmdir.
This is the @w{ISO C} function to remove a file. It works like
@@ -1560,9 +1518,8 @@ This is the @w{ISO C} function to remove a file. It works like
The @code{rename} function is used to change a file's name.
@cindex renaming a file
-@comment stdio.h
-@comment ISO
@deftypefun int rename (const char *@var{oldname}, const char *@var{newname})
+@standards{ISO, stdio.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
@c In the absence of a rename syscall, there's an emulation with link
@c and unlink, but it's racy, even more so if newname exists and is
@@ -1659,9 +1616,8 @@ Directories are created with the @code{mkdir} function. (There is also
a shell command @code{mkdir} which does the same thing.)
@c !!! umask
-@comment sys/stat.h
-@comment POSIX.1
@deftypefun int mkdir (const char *@var{filename}, mode_t @var{mode})
+@standards{POSIX.1, sys/stat.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
The @code{mkdir} function creates a new, empty directory with name
@var{filename}.
@@ -1751,9 +1707,8 @@ The header file @file{sys/stat.h} declares all the symbols defined
in this section.
@pindex sys/stat.h
-@comment sys/stat.h
-@comment POSIX.1
@deftp {Data Type} {struct stat}
+@standards{POSIX.1, sys/stat.h}
The @code{stat} structure type is used to return information about the
attributes of a file. It contains at least the following members:
@@ -1847,9 +1802,8 @@ The extensions for the Large File Support (LFS) require, even on 32-bit
machines, types which can handle file sizes up to @twoexp{63}.
Therefore a new definition of @code{struct stat} is necessary.
-@comment sys/stat.h
-@comment LFS
@deftp {Data Type} {struct stat64}
+@standards{LFS, sys/stat.h}
The members of this type are the same and have the same names as those
in @code{struct stat}. The only difference is that the members
@code{st_ino}, @code{st_size}, and @code{st_blocks} have a different
@@ -1930,18 +1884,16 @@ integer types that you know and love.) These typedef names are defined
in the header file @file{sys/types.h} as well as in @file{sys/stat.h}.
Here is a list of them.
-@comment sys/types.h
-@comment POSIX.1
@deftp {Data Type} mode_t
+@standards{POSIX.1, sys/types.h}
This is an integer data type used to represent file modes. In
@theglibc{}, this is an unsigned type no narrower than @code{unsigned
int}.
@end deftp
@cindex inode number
-@comment sys/types.h
-@comment POSIX.1
@deftp {Data Type} ino_t
+@standards{POSIX.1, sys/types.h}
This is an unsigned integer type used to represent file serial numbers.
(In Unix jargon, these are sometimes called @dfn{inode numbers}.)
In @theglibc{}, this type is no narrower than @code{unsigned int}.
@@ -1950,9 +1902,8 @@ If the source is compiled with @code{_FILE_OFFSET_BITS == 64} this type
is transparently replaced by @code{ino64_t}.
@end deftp
-@comment sys/types.h
-@comment Unix98
@deftp {Data Type} ino64_t
+@standards{Unix98, sys/types.h}
This is an unsigned integer type used to represent file serial numbers
for the use in LFS. In @theglibc{}, this type is no narrower than
@code{unsigned int}.
@@ -1961,22 +1912,19 @@ When compiling with @code{_FILE_OFFSET_BITS == 64} this type is
available under the name @code{ino_t}.
@end deftp
-@comment sys/types.h
-@comment POSIX.1
@deftp {Data Type} dev_t
+@standards{POSIX.1, sys/types.h}
This is an arithmetic data type used to represent file device numbers.
In @theglibc{}, this is an integer type no narrower than @code{int}.
@end deftp
-@comment sys/types.h
-@comment POSIX.1
@deftp {Data Type} nlink_t
+@standards{POSIX.1, sys/types.h}
This is an integer type used to represent file link counts.
@end deftp
-@comment sys/types.h
-@comment Unix98
@deftp {Data Type} blkcnt_t
+@standards{Unix98, sys/types.h}
This is a signed integer type used to represent block counts.
In @theglibc{}, this type is no narrower than @code{int}.
@@ -1984,9 +1932,8 @@ If the source is compiled with @code{_FILE_OFFSET_BITS == 64} this type
is transparently replaced by @code{blkcnt64_t}.
@end deftp
-@comment sys/types.h
-@comment Unix98
@deftp {Data Type} blkcnt64_t
+@standards{Unix98, sys/types.h}
This is a signed integer type used to represent block counts for the
use in LFS. In @theglibc{}, this type is no narrower than @code{int}.
@@ -2002,9 +1949,8 @@ To examine the attributes of files, use the functions @code{stat},
a @code{struct stat} object. All three functions are declared in the
header file @file{sys/stat.h}.
-@comment sys/stat.h
-@comment POSIX.1
@deftypefun int stat (const char *@var{filename}, struct stat *@var{buf})
+@standards{POSIX.1, sys/stat.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
The @code{stat} function returns information about the attributes of the
file named by @w{@var{filename}} in the structure pointed to by @var{buf}.
@@ -2029,9 +1975,8 @@ function is in fact @code{stat64} since the LFS interface transparently
replaces the normal implementation.
@end deftypefun
-@comment sys/stat.h
-@comment Unix98
@deftypefun int stat64 (const char *@var{filename}, struct stat64 *@var{buf})
+@standards{Unix98, sys/stat.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
This function is similar to @code{stat} but it is also able to work on
files larger than @twoexp{31} bytes on 32-bit systems. To be able to do
@@ -2043,9 +1988,8 @@ function is available under the name @code{stat} and so transparently
replaces the interface for small files on 32-bit machines.
@end deftypefun
-@comment sys/stat.h
-@comment POSIX.1
@deftypefun int fstat (int @var{filedes}, struct stat *@var{buf})
+@standards{POSIX.1, sys/stat.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
The @code{fstat} function is like @code{stat}, except that it takes an
open file descriptor as an argument instead of a file name.
@@ -2065,9 +2009,8 @@ function is in fact @code{fstat64} since the LFS interface transparently
replaces the normal implementation.
@end deftypefun
-@comment sys/stat.h
-@comment Unix98
@deftypefun int fstat64 (int @var{filedes}, struct stat64 *@var{buf})
+@standards{Unix98, sys/stat.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
This function is similar to @code{fstat} but is able to work on large
files on 32-bit platforms. For large files the file descriptor
@@ -2084,9 +2027,8 @@ replaces the interface for small files on 32-bit machines.
@c available.
@c @safety{@mtsafe{}@asunsafe{@ascuheap{}}@acunsafe{@acsmem{}}}
-@comment sys/stat.h
-@comment BSD
@deftypefun int lstat (const char *@var{filename}, struct stat *@var{buf})
+@standards{BSD, sys/stat.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
@c Direct system call through lxstat, sometimes with an xstat conv call
@c afterwards.
@@ -2100,9 +2042,8 @@ function is in fact @code{lstat64} since the LFS interface transparently
replaces the normal implementation.
@end deftypefun
-@comment sys/stat.h
-@comment Unix98
@deftypefun int lstat64 (const char *@var{filename}, struct stat64 *@var{buf})
+@standards{Unix98, sys/stat.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
@c Direct system call through lxstat64, sometimes with an xstat conv
@c call afterwards.
@@ -2141,55 +2082,48 @@ The following predicate macros test the type of a file, given the value
@var{m} which is the @code{st_mode} field returned by @code{stat} on
that file:
-@comment sys/stat.h
-@comment POSIX
@deftypefn Macro int S_ISDIR (mode_t @var{m})
+@standards{POSIX, sys/stat.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
This macro returns non-zero if the file is a directory.
@end deftypefn
-@comment sys/stat.h
-@comment POSIX
@deftypefn Macro int S_ISCHR (mode_t @var{m})
+@standards{POSIX, sys/stat.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
This macro returns non-zero if the file is a character special file (a
device like a terminal).
@end deftypefn
-@comment sys/stat.h
-@comment POSIX
@deftypefn Macro int S_ISBLK (mode_t @var{m})
+@standards{POSIX, sys/stat.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
This macro returns non-zero if the file is a block special file (a device
like a disk).
@end deftypefn
-@comment sys/stat.h
-@comment POSIX
@deftypefn Macro int S_ISREG (mode_t @var{m})
+@standards{POSIX, sys/stat.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
This macro returns non-zero if the file is a regular file.
@end deftypefn
-@comment sys/stat.h
-@comment POSIX
@deftypefn Macro int S_ISFIFO (mode_t @var{m})
+@standards{POSIX, sys/stat.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
This macro returns non-zero if the file is a FIFO special file, or a
pipe. @xref{Pipes and FIFOs}.
@end deftypefn
-@comment sys/stat.h
-@comment GNU
@deftypefn Macro int S_ISLNK (mode_t @var{m})
+@standards{GNU, sys/stat.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
This macro returns non-zero if the file is a symbolic link.
@xref{Symbolic Links}.
@end deftypefn
-@comment sys/stat.h
-@comment GNU
@deftypefn Macro int S_ISSOCK (mode_t @var{m})
+@standards{GNU, sys/stat.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
This macro returns non-zero if the file is a socket. @xref{Sockets}.
@end deftypefn
@@ -2210,48 +2144,40 @@ is equivalent to:
((@var{mode} & S_IFMT) == S_IFCHR)
@end smallexample
-@comment sys/stat.h
-@comment BSD
@deftypevr Macro int S_IFMT
+@standards{BSD, sys/stat.h}
This is a bit mask used to extract the file type code from a mode value.
@end deftypevr
These are the symbolic names for the different file type codes:
@vtable @code
-@comment sys/stat.h
-@comment BSD
@item S_IFDIR
+@standards{BSD, sys/stat.h}
This is the file type constant of a directory file.
-@comment sys/stat.h
-@comment BSD
@item S_IFCHR
+@standards{BSD, sys/stat.h}
This is the file type constant of a character-oriented device file.
-@comment sys/stat.h
-@comment BSD
@item S_IFBLK
+@standards{BSD, sys/stat.h}
This is the file type constant of a block-oriented device file.
-@comment sys/stat.h
-@comment BSD
@item S_IFREG
+@standards{BSD, sys/stat.h}
This is the file type constant of a regular file.
-@comment sys/stat.h
-@comment BSD
@item S_IFLNK
+@standards{BSD, sys/stat.h}
This is the file type constant of a symbolic link.
-@comment sys/stat.h
-@comment BSD
@item S_IFSOCK
+@standards{BSD, sys/stat.h}
This is the file type constant of a socket.
-@comment sys/stat.h
-@comment BSD
@item S_IFIFO
+@standards{BSD, sys/stat.h}
This is the file type constant of a FIFO or pipe.
@end vtable
@@ -2263,27 +2189,24 @@ macros. But unlike the other macros they do not take the value of the
@code{st_mode} field as the parameter. Instead they expect a pointer to
the whole @code{struct stat} structure.
-@comment sys/stat.h
-@comment POSIX
@deftypefn Macro int S_TYPEISMQ (struct stat *@var{s})
+@standards{POSIX, sys/stat.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
If the system implements POSIX message queues as distinct objects and the
file is a message queue object, this macro returns a non-zero value.
In all other cases the result is zero.
@end deftypefn
-@comment sys/stat.h
-@comment POSIX
@deftypefn Macro int S_TYPEISSEM (struct stat *@var{s})
+@standards{POSIX, sys/stat.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
If the system implements POSIX semaphores as distinct objects and the
file is a semaphore object, this macro returns a non-zero value.
In all other cases the result is zero.
@end deftypefn
-@comment sys/stat.h
-@comment POSIX
@deftypefn Macro int S_TYPEISSHM (struct stat *@var{s})
+@standards{POSIX, sys/stat.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
If the system implements POSIX shared memory objects as distinct objects
and the file is a shared memory object, this macro returns a non-zero
@@ -2326,9 +2249,8 @@ and @code{chgrp} shell commands.
@pindex unistd.h
The prototype for this function is declared in @file{unistd.h}.
-@comment unistd.h
-@comment POSIX.1
@deftypefun int chown (const char *@var{filename}, uid_t @var{owner}, gid_t @var{group})
+@standards{POSIX.1, unistd.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
The @code{chown} function changes the owner of the file @var{filename} to
@var{owner}, and its group owner to @var{group}.
@@ -2361,9 +2283,8 @@ The file is on a read-only file system.
@end table
@end deftypefun
-@comment unistd.h
-@comment BSD
@deftypefun int fchown (int @var{filedes}, uid_t @var{owner}, gid_t @var{group})
+@standards{BSD, unistd.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
This is like @code{chown}, except that it changes the owner of the open
file with descriptor @var{filedes}.
@@ -2407,97 +2328,79 @@ These symbolic constants are defined for the file mode bits that control
access permission for the file:
@vtable @code
-@comment sys/stat.h
-@comment POSIX.1
@item S_IRUSR
-@comment sys/stat.h
-@comment BSD
@itemx S_IREAD
+@standards{POSIX.1, sys/stat.h}
+@standardsx{S_IREAD, BSD, sys/stat.h}
Read permission bit for the owner of the file. On many systems this bit
is 0400. @code{S_IREAD} is an obsolete synonym provided for BSD
compatibility.
-@comment sys/stat.h
-@comment POSIX.1
@item S_IWUSR
-@comment sys/stat.h
-@comment BSD
@itemx S_IWRITE
+@standards{POSIX.1, sys/stat.h}
+@standardsx{S_IWRITE, BSD, sys/stat.h}
Write permission bit for the owner of the file. Usually 0200.
@w{@code{S_IWRITE}} is an obsolete synonym provided for BSD compatibility.
-@comment sys/stat.h
-@comment POSIX.1
@item S_IXUSR
-@comment sys/stat.h
-@comment BSD
@itemx S_IEXEC
+@standards{POSIX.1, sys/stat.h}
+@standardsx{S_IEXEC, BSD, sys/stat.h}
Execute (for ordinary files) or search (for directories) permission bit
for the owner of the file. Usually 0100. @code{S_IEXEC} is an obsolete
synonym provided for BSD compatibility.
-@comment sys/stat.h
-@comment POSIX.1
@item S_IRWXU
+@standards{POSIX.1, sys/stat.h}
This is equivalent to @samp{(S_IRUSR | S_IWUSR | S_IXUSR)}.
-@comment sys/stat.h
-@comment POSIX.1
@item S_IRGRP
+@standards{POSIX.1, sys/stat.h}
Read permission bit for the group owner of the file. Usually 040.
-@comment sys/stat.h
-@comment POSIX.1
@item S_IWGRP
+@standards{POSIX.1, sys/stat.h}
Write permission bit for the group owner of the file. Usually 020.
-@comment sys/stat.h
-@comment POSIX.1
@item S_IXGRP
+@standards{POSIX.1, sys/stat.h}
Execute or search permission bit for the group owner of the file.
Usually 010.
-@comment sys/stat.h
-@comment POSIX.1
@item S_IRWXG
+@standards{POSIX.1, sys/stat.h}
This is equivalent to @samp{(S_IRGRP | S_IWGRP | S_IXGRP)}.
-@comment sys/stat.h
-@comment POSIX.1
@item S_IROTH
+@standards{POSIX.1, sys/stat.h}
Read permission bit for other users. Usually 04.
-@comment sys/stat.h
-@comment POSIX.1
@item S_IWOTH
+@standards{POSIX.1, sys/stat.h}
Write permission bit for other users. Usually 02.
-@comment sys/stat.h
-@comment POSIX.1
@item S_IXOTH
+@standards{POSIX.1, sys/stat.h}
Execute or search permission bit for other users. Usually 01.
-@comment sys/stat.h
-@comment POSIX.1
@item S_IRWXO
+@standards{POSIX.1, sys/stat.h}
This is equivalent to @samp{(S_IROTH | S_IWOTH | S_IXOTH)}.
-@comment sys/stat.h
-@comment POSIX
@item S_ISUID
+@standards{POSIX, sys/stat.h}
This is the set-user-ID on execute bit, usually 04000.
@xref{How Change Persona}.
-@comment sys/stat.h
-@comment POSIX
@item S_ISGID
+@standards{POSIX, sys/stat.h}
This is the set-group-ID on execute bit, usually 02000.
@xref{How Change Persona}.
@cindex sticky bit
-@comment sys/stat.h
-@comment BSD
@item S_ISVTX
+@standards{BSD, sys/stat.h}
This is the @dfn{sticky} bit, usually 01000.
For a directory it gives permission to delete a file in that directory
@@ -2624,9 +2527,8 @@ changing the umask is usually done only by shells. They use the
The functions in this section are declared in @file{sys/stat.h}.
@pindex sys/stat.h
-@comment sys/stat.h
-@comment POSIX.1
@deftypefun mode_t umask (mode_t @var{mask})
+@standards{POSIX.1, sys/stat.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
The @code{umask} function sets the file creation mask of the current
process to @var{mask}, and returns the previous value of the file
@@ -2650,18 +2552,16 @@ However, on @gnuhurdsystems{} it is better to use @code{getumask} if
you just want to read the mask value, because it is reentrant.
@end deftypefun
-@comment sys/stat.h
-@comment GNU
@deftypefun mode_t getumask (void)
+@standards{GNU, sys/stat.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
Return the current value of the file creation mask for the current
process. This function is a GNU extension and is only available on
@gnuhurdsystems{}.
@end deftypefun
-@comment sys/stat.h
-@comment POSIX.1
@deftypefun int chmod (const char *@var{filename}, mode_t @var{mode})
+@standards{POSIX.1, sys/stat.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
The @code{chmod} function sets the access permission bits for the file
named by @var{filename} to @var{mode}.
@@ -2700,9 +2600,8 @@ for full details on the sticky bit.
@end table
@end deftypefun
-@comment sys/stat.h
-@comment BSD
@deftypefun int fchmod (int @var{filedes}, mode_t @var{mode})
+@standards{BSD, sys/stat.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
This is like @code{chmod}, except that it changes the permissions of the
currently open file given by @var{filedes}.
@@ -2771,9 +2670,8 @@ real ID.
@pindex unistd.h
The symbols in this section are declared in @file{unistd.h}.
-@comment unistd.h
-@comment POSIX.1
@deftypefun int access (const char *@var{filename}, int @var{how})
+@standards{POSIX.1, unistd.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
The @code{access} function checks to see whether the file named by
@var{filename} can be accessed in the way specified by the @var{how}
@@ -2812,27 +2710,23 @@ as the @var{how} argument to the @code{access} function. The values
are integer constants.
@pindex unistd.h
-@comment unistd.h
-@comment POSIX.1
@deftypevr Macro int R_OK
+@standards{POSIX.1, unistd.h}
Flag meaning test for read permission.
@end deftypevr
-@comment unistd.h
-@comment POSIX.1
@deftypevr Macro int W_OK
+@standards{POSIX.1, unistd.h}
Flag meaning test for write permission.
@end deftypevr
-@comment unistd.h
-@comment POSIX.1
@deftypevr Macro int X_OK
+@standards{POSIX.1, unistd.h}
Flag meaning test for execute/search permission.
@end deftypevr
-@comment unistd.h
-@comment POSIX.1
@deftypevr Macro int F_OK
+@standards{POSIX.1, unistd.h}
Flag meaning test for existence of the file.
@end deftypevr
@@ -2876,9 +2770,8 @@ the @code{utime} function---all except the attribute change time. You
need to include the header file @file{utime.h} to use this facility.
@pindex utime.h
-@comment utime.h
-@comment POSIX.1
@deftp {Data Type} {struct utimbuf}
+@standards{POSIX.1, utime.h}
The @code{utimbuf} structure is used with the @code{utime} function to
specify new access and modification times for a file. It contains the
following members:
@@ -2892,9 +2785,8 @@ This is the modification time for the file.
@end table
@end deftp
-@comment utime.h
-@comment POSIX.1
@deftypefun int utime (const char *@var{filename}, const struct utimbuf *@var{times})
+@standards{POSIX.1, utime.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
@c In the absence of a utime syscall, it non-atomically converts times
@c to a struct timeval and calls utimes.
@@ -2946,9 +2838,8 @@ the fractional part of the file times. The prototype for this function is
in the header file @file{sys/time.h}.
@pindex sys/time.h
-@comment sys/time.h
-@comment BSD
@deftypefun int utimes (const char *@var{filename}, const struct timeval @var{tvp}@t{[2]})
+@standards{BSD, sys/time.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
@c In the absence of a utimes syscall, it non-atomically converts tvp
@c to struct timespec array and issues a utimensat syscall, or to
@@ -2964,9 +2855,8 @@ The return values and error conditions are the same as for the @code{utime}
function.
@end deftypefun
-@comment sys/time.h
-@comment BSD
@deftypefun int lutimes (const char *@var{filename}, const struct timeval @var{tvp}@t{[2]})
+@standards{BSD, sys/time.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
@c Since there's no lutimes syscall, it non-atomically converts tvp
@c to struct timespec array and issues a utimensat syscall.
@@ -2983,9 +2873,8 @@ The return values and error conditions are the same as for the @code{utime}
function.
@end deftypefun
-@comment sys/time.h
-@comment BSD
@deftypefun int futimes (int @var{fd}, const struct timeval @var{tvp}@t{[2]})
+@standards{BSD, sys/time.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
@c Since there's no futimes syscall, it non-atomically converts tvp
@c to struct timespec array and issues a utimensat syscall, falling back
@@ -3041,9 +2930,8 @@ Using these functions on anything other than a regular file gives
@emph{undefined} results. On many systems, such a call will appear to
succeed, without actually accomplishing anything.
-@comment unistd.h
-@comment X/Open
@deftypefun int truncate (const char *@var{filename}, off_t @var{length})
+@standards{X/Open, unistd.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
@c In the absence of a truncate syscall, we use open and ftruncate.
@@ -3087,9 +2975,8 @@ The operation was interrupted by a signal.
@end deftypefun
-@comment unistd.h
-@comment Unix98
@deftypefun int truncate64 (const char *@var{name}, off64_t @var{length})
+@standards{Unix98, unistd.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
@c In the absence of a syscall, try truncate if length fits.
This function is similar to the @code{truncate} function. The
@@ -3102,9 +2989,8 @@ When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} on a
@code{truncate} and so transparently replaces the 32 bits interface.
@end deftypefun
-@comment unistd.h
-@comment POSIX
@deftypefun int ftruncate (int @var{fd}, off_t @var{length})
+@standards{POSIX, unistd.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
This is like @code{truncate}, but it works on a file descriptor @var{fd}
@@ -3167,9 +3053,8 @@ The operation was interrupted by a signal.
@end deftypefun
-@comment unistd.h
-@comment Unix98
@deftypefun int ftruncate64 (int @var{id}, off64_t @var{length})
+@standards{Unix98, unistd.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
@c In the absence of a syscall, try ftruncate if length fits.
This function is similar to the @code{ftruncate} function. The
@@ -3328,9 +3213,8 @@ this function for compatibility with BSD.
The prototype for @code{mknod} is declared in @file{sys/stat.h}.
@pindex sys/stat.h
-@comment sys/stat.h
-@comment BSD
@deftypefun int mknod (const char *@var{filename}, mode_t @var{mode}, dev_t @var{dev})
+@standards{BSD, sys/stat.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
@c Instead of issuing the syscall directly, we go through xmknod.
@c Although the internal xmknod takes a dev_t*, that could lead to
@@ -3383,9 +3267,8 @@ returns a pointer to a static buffer.
These facilities are declared in the header file @file{stdio.h}.
@pindex stdio.h
-@comment stdio.h
-@comment ISO
@deftypefun {FILE *} tmpfile (void)
+@standards{ISO, stdio.h}
@safety{@prelim{}@mtsafe{}@asunsafe{@ascuheap{} @asulock{}}@acunsafe{@acsmem{} @acsfd{} @aculock{}}}
@c The unsafety issues are those of fdopen, plus @acsfd because of the
@c open.
@@ -3413,9 +3296,8 @@ When the sources are compiled with @code{_FILE_OFFSET_BITS == 64} on a
interface transparently replaces the old interface.
@end deftypefun
-@comment stdio.h
-@comment Unix98
@deftypefun {FILE *} tmpfile64 (void)
+@standards{Unix98, stdio.h}
@safety{@prelim{}@mtsafe{}@asunsafe{@ascuheap{} @asulock{}}@acunsafe{@acsmem{} @acsfd{} @aculock{}}}
This function is similar to @code{tmpfile}, but the stream it returns a
pointer to was opened using @code{tmpfile64}. Therefore this stream can
@@ -3429,9 +3311,8 @@ bits machine this function is available under the name @code{tmpfile}
and so transparently replaces the old interface.
@end deftypefun
-@comment stdio.h
-@comment ISO
@deftypefun {char *} tmpnam (char *@var{result})
+@standards{ISO, stdio.h}
@safety{@prelim{}@mtunsafe{@mtasurace{:tmpnam/!result}}@asunsafe{}@acsafe{}}
@c The passed-in buffer should not be modified concurrently with the
@c call.
@@ -3458,9 +3339,8 @@ opening the file you should use the @code{O_EXCL} flag. Using
@code{tmpfile} or @code{mkstemp} is a safe way to avoid this problem.
@end deftypefun
-@comment stdio.h
-@comment GNU
@deftypefun {char *} tmpnam_r (char *@var{result})
+@standards{GNU, stdio.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
This function is nearly identical to the @code{tmpnam} function, except
that if @var{result} is a null pointer it returns a null pointer.
@@ -3472,17 +3352,15 @@ This guarantees reentrancy because the non-reentrant situation of
@code{tmpnam}.
@end deftypefun
-@comment stdio.h
-@comment ISO
@deftypevr Macro int L_tmpnam
+@standards{ISO, stdio.h}
The value of this macro is an integer constant expression that
represents the minimum size of a string large enough to hold a file name
generated by the @code{tmpnam} function.
@end deftypevr
-@comment stdio.h
-@comment ISO
@deftypevr Macro int TMP_MAX
+@standards{ISO, stdio.h}
The macro @code{TMP_MAX} is a lower bound for how many temporary names
you can create with @code{tmpnam}. You can rely on being able to call
@code{tmpnam} at least this many times before it might fail saying you
@@ -3495,9 +3373,8 @@ a fixed, small limit on the number of temporary files. The limit is
never less than @code{25}.
@end deftypevr
-@comment stdio.h
-@comment SVID
@deftypefun {char *} tempnam (const char *@var{dir}, const char *@var{prefix})
+@standards{SVID, stdio.h}
@safety{@prelim{}@mtsafe{@mtsenv{}}@asunsafe{@ascuheap{}}@acunsafe{@acsmem{}}}
@c There's no way (short of being setuid) to avoid getenv("TMPDIR"),
@c even with a non-NULL dir.
@@ -3544,9 +3421,8 @@ opening the file you should use the @code{O_EXCL} flag. Using
@cindex TMPDIR environment variable
@c !!! are we putting SVID/GNU/POSIX.1/BSD in here or not??
-@comment stdio.h
-@comment SVID
@deftypevr {SVID Macro} {char *} P_tmpdir
+@standards{SVID, stdio.h}
This macro is the name of the default directory for temporary files.
@end deftypevr
@@ -3565,9 +3441,8 @@ would crash when @code{mktemp} or @code{mkstemp} tried to modify the
string. These functions are declared in the header file @file{stdlib.h}.
@pindex stdlib.h
-@comment stdlib.h
-@comment Unix
@deftypefun {char *} mktemp (char *@var{template})
+@standards{Unix, stdlib.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
@c __gen_tempname (caller tmpl, __GT_NOCREATE) ok
The @code{mktemp} function generates a unique file name by modifying
@@ -3585,9 +3460,8 @@ opening the file you should use the @code{O_EXCL} flag. Using
@code{mkstemp} is a safe way to avoid this problem.
@end deftypefun
-@comment stdlib.h
-@comment BSD
@deftypefun int mkstemp (char *@var{template})
+@standards{BSD, stdlib.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{@acsfd{}}}
@c __gen_tempname (caller tmpl, __GT_FILE) ok
The @code{mkstemp} function generates a unique file name just as
@@ -3609,9 +3483,8 @@ create a temporary file. This is because it works by calling
@code{open} with the @code{O_EXCL} flag, which says you want to create a
new file and get an error if the file already exists.
-@comment stdlib.h
-@comment BSD
@deftypefun {char *} mkdtemp (char *@var{template})
+@standards{BSD, stdlib.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
@c __gen_tempname (caller tmpl, __GT_DIR) ok
The @code{mkdtemp} function creates a directory with a unique name. If