|  |  | 
|  | /// $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) | 
|  | /// Author: Walter Bright | 
|  |  | 
|  | module core.sys.windows.stat; | 
|  | version (Windows): | 
|  |  | 
|  | extern (C) nothrow @nogc: | 
|  |  | 
|  | import core.sys.windows.stdc.time; | 
|  |  | 
|  | // Posix version is in core.sys.posix.sys.stat | 
|  |  | 
|  | enum S_IFMT   = 0xF000; | 
|  | enum S_IFDIR  = 0x4000; | 
|  | enum S_IFCHR  = 0x2000; | 
|  | enum S_IFIFO  = 0x1000; | 
|  | enum S_IFREG  = 0x8000; | 
|  | enum S_IREAD  = 0x0100; | 
|  | enum S_IWRITE = 0x0080; | 
|  | enum S_IEXEC  = 0x0040; | 
|  | enum S_IFBLK  = 0x6000; | 
|  | enum S_IFNAM  = 0x5000; | 
|  |  | 
|  | @safe pure | 
|  | { | 
|  | int S_ISREG(int m)  { return (m & S_IFMT) == S_IFREG; } | 
|  | int S_ISBLK(int m)  { return (m & S_IFMT) == S_IFBLK; } | 
|  | int S_ISNAM(int m)  { return (m & S_IFMT) == S_IFNAM; } | 
|  | int S_ISDIR(int m)  { return (m & S_IFMT) == S_IFDIR; } | 
|  | int S_ISCHR(int m)  { return (m & S_IFMT) == S_IFCHR; } | 
|  | } | 
|  |  | 
|  | version (CRuntime_Microsoft) | 
|  | { | 
|  | struct struct_stat | 
|  | { | 
|  | uint st_dev; | 
|  | ushort st_ino; | 
|  | ushort st_mode; | 
|  | short st_nlink; | 
|  | short st_uid; | 
|  | short st_gid; | 
|  | uint st_rdev; | 
|  | int st_size; | 
|  | time_t st_atime; | 
|  | time_t st_mtime; | 
|  | time_t st_ctime; | 
|  | } | 
|  |  | 
|  | // These assume time_t is 32 bits (which druntime's definition currently is) | 
|  | // Add pragma(mangle) to use _stat64 etc. when time_t is made 64-bit | 
|  | // See also: https://issues.dlang.org/show_bug.cgi?id=21134 | 
|  | int stat(const(char)*, struct_stat *); | 
|  | int fstat(int, struct_stat *) @trusted; | 
|  | int _wstat(const(wchar)*, struct_stat *); | 
|  | } |