1 2 /// $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) 3 /// Author: Walter Bright 4 5 module core.sys.windows.stat; 6 version (Windows): 7 8 extern (C) nothrow @nogc: 9 10 import core.sys.windows.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_DigitalMars) 35 { 36 struct struct_stat 37 { 38 short st_dev; 39 ushort st_ino; 40 ushort st_mode; 41 short st_nlink; 42 ushort st_uid; 43 ushort st_gid; 44 short st_rdev; 45 short dummy; 46 int st_size; 47 time_t st_atime; 48 time_t st_mtime; 49 time_t st_ctime; 50 } 51 52 int stat(const(char)*, struct_stat *); 53 int fstat(int, struct_stat *) @trusted; 54 int _wstat(const(wchar)*, struct_stat *); 55 } 56 else version (CRuntime_Microsoft) 57 { 58 struct struct_stat 59 { 60 uint st_dev; 61 ushort st_ino; 62 ushort st_mode; 63 short st_nlink; 64 short st_uid; 65 short st_gid; 66 uint st_rdev; 67 int st_size; 68 time_t st_atime; 69 time_t st_mtime; 70 time_t st_ctime; 71 } 72 73 // These assume time_t is 32 bits (which druntime's definition currently is) 74 // Add pragma(mangle) to use _stat64 etc. when time_t is made 64-bit 75 // See also: https://issues.dlang.org/show_bug.cgi?id=21134 76 int stat(const(char)*, struct_stat *); 77 int fstat(int, struct_stat *) @trusted; 78 int _wstat(const(wchar)*, struct_stat *); 79 }