Skip to content
  • LRN's avatar
    W32: Add a stat() implementation for private use · 53bd6a35
    LRN authored and Philip Withnall's avatar Philip Withnall committed
    This commit adds new W32-only functions to gstdio.c,
    and a new header file, gstdioprivate.h.
    These functions are:
    g_win32_stat_utf8()
    g_win32_lstat_utf8()
    g_win32_fstat()
    and they fill a private structure, GWin32PrivateStat,
    which has all the fields that normal stat has, as well as some
    extras.
    
    These functions are then used throughout glib and gio to get better
    data about the system. Specifically:
    * Full, 64-bit size, guaranteed (g_stat() is forced to use 32-bit st_size)
    * Full, 64-bit file identifier (st_ino is 0 when normal stat() is used, and still is)
    * W32 File attributes (which stat() doesn't report); in particular, this allows
      symlinks to be correctly identified
    * Full, 64-bit time, guaranteed (g_stat() uses 32-bit st_*time on 32-bit Windows)
    * Allocated file size (as a W32 replacement for the missing st_blocks)
    
    st_mode remains unchanged (thus, no S_ISLNK), so when these are given back to
    glib users (via g_stat(), for example, which is now implem...
    53bd6a35