1 2 /// $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) 3 /// Author: Walter Bright 4 5 module nulib.system.win32.stat; 6 7 8 extern (C) nothrow @nogc: 9 10 import nulib.system.win32.stdc.time; 11 12 // Posix version is in core.sys.posix.sys.stat 13 14 enum S_IFMT = 0xF000; 15 enum S_IFDIR = 0x4000; 16 enum S_IFCHR = 0x2000; 17 enum S_IFIFO = 0x1000; 18 enum S_IFREG = 0x8000; 19 enum S_IREAD = 0x0100; 20 enum S_IWRITE = 0x0080; 21 enum S_IEXEC = 0x0040; 22 enum S_IFBLK = 0x6000; 23 enum S_IFNAM = 0x5000; 24 25 @safe pure 26 { 27 int S_ISREG(int m) { return (m & S_IFMT) == S_IFREG; } 28 int S_ISBLK(int m) { return (m & S_IFMT) == S_IFBLK; } 29 int S_ISNAM(int m) { return (m & S_IFMT) == S_IFNAM; } 30 int S_ISDIR(int m) { return (m & S_IFMT) == S_IFDIR; } 31 int S_ISCHR(int m) { return (m & S_IFMT) == S_IFCHR; } 32 } 33 34 version (CRuntime_Microsoft) 35 { 36 struct struct_stat 37 { 38 uint st_dev; 39 ushort st_ino; 40 ushort st_mode; 41 short st_nlink; 42 short st_uid; 43 short st_gid; 44 uint st_rdev; 45 int st_size; 46 time_t st_atime; 47 time_t st_mtime; 48 time_t st_ctime; 49 } 50 51 // These assume time_t is 32 bits (which druntime's definition currently is) 52 // Add pragma(mangle) to use _stat64 etc. when time_t is made 64-bit 53 // See also: https://issues.dlang.org/show_bug.cgi?id=21134 54 int stat(const(char)*, struct_stat *); 55 int fstat(int, struct_stat *) @trusted; 56 int _wstat(const(wchar)*, struct_stat *); 57 }