Hash :
8123b614
Author :
Date :
2017-05-14T14:20:01
windows-stat-inodes: New module. * m4/windows-stat-inodes.m4: New file. * m4/sys_types_h.m4 (gl_SYS_TYPES_H): Set WINDOWS_STAT_INODES. * modules/sys_types (Makefile.am): Substitute WINDOWS_STAT_INODES. * lib/sys_types.in.h [WINDOWS_STAT_INODES]: Override dev_t and ino_t. (_GL_WINDOWS_STAT_INODES): New macro. * lib/stat-w32.c: Set _WIN32_WINNT. Include <string.h>, verify.h. (GetFileInformationByHandleExFunc): New variable. (initialize): Initialize it. (_gl_fstat_by_handle) [_GL_WINDOWS_STAT_INODES]: Initialize st_dev and st_ino appropriately. * lib/stat.c (rpl_stat): Use the directory entry based approach only as a fallback, because it does not provide st_dev and st_ino values. * modules/fstat (Depends-on): Add 'verify'. * modules/windows-stat-inodes: New file. * doc/windows-stat-inodes.texi: New file. * doc/gnulib.texi: Include it. * doc/posix-headers/sys_stat.texi: Mention the new module.
@node Inode numbers on Windows
@section Inode numbers on Windows
The module @samp{windows-stat-inodes} ensures that,
on native Windows platforms, @code{struct stat} contains
@code{st_dev}, @code{st_ino} fields that are able to distinguish
different inodes.
Note: Such values can only be provided for most files on the
file system. For a few files (such as inaccessible files),
@code{st_dev} and @code{st_ino} are set to 0. Therefore,
you should test whether @code{st_dev != 0 && st_ino != 0},
before going to make inferences based on the file identity
based on @code{st_dev} and @code{st_ino}.