Ticket #1071: tango.stat.patch
| File tango.stat.patch, 5.4 kB (added by e-t172, 7 months ago) |
|---|
Fix to the stat_t structure |
-
tango/stdc/posix/config.d
old new 17 17 const bool __USE_FILE_OFFSET64 = false; 18 18 const bool __USE_LARGEFILE64 = false; 19 19 const bool __REDIRECT = false; 20 21 version( X86 ) 22 { 23 const uint __WORDSIZE = 32; 24 } 25 26 version( X86_64 ) 27 { 28 const uint __WORDSIZE = 64; 29 } 20 30 } -
tango/stdc/posix/sys/types.d
old new 36 36 37 37 version( linux ) 38 38 { 39 static if( __USE_FILE_OFFSET64 )40 { 39 // From <bits/typesizes.h> 40 41 41 alias long blkcnt_t; 42 alias long blkcnt64_t; 43 alias long blksize_t; 44 alias ulong dev_t; 45 alias uint gid_t; 42 46 alias ulong ino_t; 43 alias long off_t; 47 alias ulong ino64_t; 48 alias uint mode_t; 49 static if( __WORDSIZE == 32 ) 50 { 51 alias uint nlink_t; 44 52 } 45 53 else 46 54 { 47 alias c_long blkcnt_t; 48 alias c_ulong ino_t; 49 alias c_long off_t; 55 alias ulong nlink_t; 50 56 } 51 alias c_long blksize_t; 52 alias ulong dev_t; 53 alias uint gid_t; 54 alias uint mode_t; 55 alias uint nlink_t; 57 alias long off_t; 58 alias long off64_t; 56 59 alias int pid_t; 57 60 //size_t (defined in tango.stdc.stddef) 61 static if( __WORDSIZE == 32 ) 62 { 58 63 alias int ssize_t; 64 } 65 else 66 { 67 alias long ssize_t; 68 } 59 69 //time_t (defined in tango.stdc.time) 60 70 alias uint uid_t; 61 71 } … … 107 117 108 118 version( linux ) 109 119 { 110 static if( __USE_FILE_OFFSET64 ) 111 { 120 // From <bits/typesizes.h> 121 122 // clock_t (defined in tango.stdc.time) 112 123 alias ulong fsblkcnt_t; 124 alias ulong fsblkcnt64_t; 113 125 alias ulong fsfilcnt_t; 114 } 115 else 116 { 117 alias c_ulong fsblkcnt_t; 118 alias c_ulong fsfilcnt_t; 119 } 120 // clock_t (defined in tango.stdc.time) 126 alias ulong fsfilcnt64_t; 121 127 alias uint id_t; 122 128 alias int key_t; 123 alias c_longsuseconds_t;129 alias long suseconds_t; 124 130 alias uint useconds_t; 125 131 } 126 132 else version( darwin ) -
tango/stdc/posix/sys/stat.d
old new 79 79 struct stat_t 80 80 { 81 81 dev_t st_dev; 82 static if( __WORDSIZE == 64 ) 83 { 84 ino64_t st_ino; 85 nlink_t st_nlink; 86 mode_t st_mode; 87 } 88 else 89 { 82 90 uint __pad1; 83 91 ino_t __st_ino; 84 92 mode_t st_mode; 85 93 nlink_t st_nlink; 94 } 86 95 uid_t st_uid; 87 96 gid_t st_gid; 97 static if( __WORDSIZE == 64 ) 98 { 99 int pad0; 88 100 dev_t st_rdev; 101 off_t st_size; 102 } 103 else 104 { 105 dev_t st_rdev; 89 106 uint __pad2; 90 107 off64_t st_size; 108 } 91 109 blksize_t st_blksize; 92 110 blkcnt64_t st_blocks; 93 111 … … 109 127 time_t st_ctime; 110 128 c_ulong st_ctimensec; 111 129 } 130 static if ( __WORDSIZE == 64 ) 131 { 132 long __unused[3]; 133 } 134 else 135 { 112 136 ino64_t st_ino; 137 } 113 138 } 114 139 } 115 140 else … … 117 142 struct stat_t 118 143 { 119 144 dev_t st_dev; 145 static if( __WORDSIZE == 32 ) 146 { 120 147 ushort __pad1; 121 static if( __USE_FILE_OFFSET64 ) 148 } 149 static if( __WORDSIZE != 64 && __USE_FILE_OFFSET64 ) 122 150 { 123 151 ino_t __st_ino; 124 152 } … … 126 154 { 127 155 ino_t st_ino; 128 156 } 157 static if( __WORDSIZE == 32 ) 158 { 129 159 mode_t st_mode; 130 160 nlink_t st_nlink; 161 } 162 else 163 { 164 nlink_t st_nlink; 165 mode_t st_mode; 166 } 131 167 uid_t st_uid; 132 168 gid_t st_gid; 169 static if( __WORDSIZE == 64 ) 170 { 171 int pad0; 172 } 133 173 dev_t st_rdev; 174 static if( __WORDSIZE == 32 ) 175 { 134 176 ushort __pad2; 177 } 135 178 off_t st_size; 136 179 blksize_t st_blksize; 180 static if( __WORDSIZE != 64 && __USE_FILE_OFFSET64 ) 181 { 182 blkcnt64_t st_blocks; 183 } 184 else 185 { 137 186 blkcnt_t st_blocks; 187 } 138 188 static if( false /*__USE_MISC*/ ) // true if _BSD_SOURCE || _SVID_SOURCE 139 189 { 140 190 timespec st_atim; … … 153 203 time_t st_ctime; 154 204 c_ulong st_ctimensec; 155 205 } 206 static if( __WORDSIZE == 64 ) 207 { 208 long[3] __unused; 209 } 156 210 static if( __USE_FILE_OFFSET64 ) 157 211 { 158 ino _tst_ino;212 ino64_t st_ino; 159 213 } 160 214 else 161 215 {










