[#BloombergLP-bdls-FilesystemUtil_TransitionalUnixImpUtil] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bdls.adoc[bdls]::FilesystemUtil_TransitionalUnixImpUtil :relfileprefix: ../../ :mrdocs: This component‐private utility `struct` provides a namespace for a suite of functions that `FilesystemUtil` uses as implementation details. These functions have a `UNIX_INTERFACE` template parameter, which provides access to the entities that transitional‐compilation environment Unix systems declare, and that the function implementations need. == Synopsis Declared in `<bdls_filesystemutil_transitionaluniximputil.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<class UNIX_INTERFACE> struct FilesystemUtil_TransitionalUnixImpUtil; ---- == Description Note that, on some Unix platforms and some build configurations, the `stat` struct does not have an `st_mtime` field, and `st_mtime` is a macro that emulates the access of the field. Similarly, on some Unix platforms and some build configurations, the `stat` structure does not have an `st_mtim` field or the `st_mtim` struct does not have a `tv_nsec` (or, for some versions of Solaris, `__tv_nsec`) field, in which case the `get_st_mtim_nsec` function returns zero. For more information, please see the specification of the `sys/stat.h` header from IEEE Std 1003.1‐2017, which provides information about the evolution of the `stat` struct in the POSIX specification (https://pubs.opengroup.org/onlinepubs/9699919799.2018edition/). The program is ill‐formed unless the specified `UNIX_INTERFACE` is a class type that meets the following requirements: * `UNIX_INTERFACE::off64_t` is a type alias to the `off64_t` type provided by the `sys/types.h` header. * `UNIX_INTERFACE::stat64` is a type alias to the `stat64` type provided by the `sys/stat.h` header. * `UNIX_INTERFACE::time_t` is a type alias to the `time_t` type provided by the `sys/types.h` header. * `UNIX_INTERFACE::get_st_mtim_nsec` is a public, static member function that has `long (const stat& stat)` type and whose contract is to return the value of the `st_mtim.tv_nsec` field of the specified `stat` struct. * `UNIX_INTERFACE::get_st_mtime` is a public, static member function that has `time_t (const stat& stat)` type and whose contract is to return the value of the `st_mtime` field of the specified `stat` struct. * `UNIX_INTERFACE::get_st_size` is a public, static member function that has `off64_t (const stat& stat)` type and whose contract is to return the value of the `st_size` field of the specified `stat` struct. Note that this function is required in order to access the data members of a `stat` struct in a manner consistent with the requirements of `get_st_mtime`. * `UNIX_INTERFACE::fstat64` is a public, static member function that has `int (int fildes, stat64 *buf)` type and whose contract is to return the result of `::fstat64(fildes, buf)`, where `::fstat64` is the function provided by the `sys/stat.h` header. == Type Aliases [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bdls/FilesystemUtil_TransitionalUnixImpUtil/FileDescriptor.adoc[`FileDescriptor`] | `FileDescriptor` is an alias for the operating system's native file descriptor / file handle type. | xref:BloombergLP/bdls/FilesystemUtil_TransitionalUnixImpUtil/Offset.adoc[`Offset`] | `Offset` is an alias for a signed integral type, and represents the offset of a location in a file. |=== == Static Member Functions [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bdls/FilesystemUtil_TransitionalUnixImpUtil/getFileSize.adoc[`getFileSize`] | Return the size, in bytes, of the file with the specified `descriptor`, or a negative value if an error occurs. | xref:BloombergLP/bdls/FilesystemUtil_TransitionalUnixImpUtil/getLastModificationTime.adoc[`getLastModificationTime`] | Load into the specified `time` the last modification time of the file with the specified `descriptor`, as reported by the filesystem. Return 0 on success, and a non‐zero value otherwise. Note that the time is reported in UTC. |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#