@@ -64,140 +64,82 @@ mod stat {
6464 } ;
6565
6666 // Permission bits
67- #[ cfg( unix) ]
68- #[ pyattr]
69- pub const S_ISUID : Mode = libc:: S_ISUID ;
70- #[ cfg( not( unix) ) ]
71- #[ pyattr]
72- pub const S_ISUID : Mode = 0o4000 ;
7367
74- #[ cfg( unix) ]
75- #[ pyattr]
76- pub const S_ISGID : Mode = libc:: S_ISGID ;
77- #[ cfg( not( unix) ) ]
7868 #[ pyattr]
79- pub const S_ISGID : Mode = 0o2000 ;
69+ pub const S_ISUID : Mode = unix_libc_get ! ( S_ISUID , 0o4000 ) ;
8070
81- #[ cfg( unix) ]
8271 #[ pyattr]
83- pub const S_ENFMT : Mode = libc:: S_ISGID ;
84- #[ cfg( not( unix) ) ]
85- #[ pyattr]
86- pub const S_ENFMT : Mode = 0o2000 ;
72+ pub const S_ISGID : Mode = unix_libc_get ! ( S_ISGID , 0o2000 ) ;
8773
88- #[ cfg( unix) ]
89- #[ pyattr]
90- pub const S_ISVTX : Mode = libc:: S_ISVTX ;
91- #[ cfg( not( unix) ) ]
9274 #[ pyattr]
93- pub const S_ISVTX : Mode = 0o1000 ;
75+ pub const S_ENFMT : Mode = unix_libc_get ! ( S_ISGID , 0o2000 ) ;
9476
95- #[ cfg( unix) ]
96- #[ pyattr]
97- pub const S_IRWXU : Mode = libc:: S_IRWXU ;
98- #[ cfg( not( unix) ) ]
9977 #[ pyattr]
100- pub const S_IRWXU : Mode = 0o0700 ;
78+ pub const S_ISVTX : Mode = unix_libc_get ! ( S_ISVTX , 0o1000 ) ;
10179
102- #[ cfg( unix) ]
103- #[ pyattr]
104- pub const S_IRUSR : Mode = libc:: S_IRUSR ;
105- #[ cfg( not( unix) ) ]
10680 #[ pyattr]
107- pub const S_IRUSR : Mode = 0o0400 ;
81+ pub const S_IRWXU : Mode = unix_libc_get ! ( S_IRWXU , 0o0700 ) ;
10882
109- #[ cfg( unix) ]
11083 #[ pyattr]
111- pub const S_IREAD : Mode = libc:: S_IRUSR ;
112- #[ cfg( not( unix) ) ]
113- #[ pyattr]
114- pub const S_IREAD : Mode = 0o0400 ;
84+ pub const S_IRUSR : Mode = unix_libc_get ! ( S_IRUSR , 0o0400 ) ;
11585
116- #[ cfg( unix) ]
117- #[ pyattr]
118- pub const S_IWUSR : Mode = libc:: S_IWUSR ;
119- #[ cfg( not( unix) ) ]
12086 #[ pyattr]
121- pub const S_IWUSR : Mode = 0o0200 ;
87+ pub const S_IREAD : Mode = unix_libc_get ! ( S_IRUSR , 0o0400 ) ;
12288
123- #[ cfg( all( unix, not( target_os = "android" ) , not( target_os = "redox" ) ) ) ]
12489 #[ pyattr]
125- pub const S_IWRITE : Mode = libc:: S_IWRITE ;
126- #[ cfg( any( not( unix) , target_os = "android" , target_os = "redox" ) ) ]
127- #[ pyattr]
128- pub const S_IWRITE : Mode = 0o0200 ;
90+ pub const S_IWUSR : Mode = unix_libc_get ! ( S_IWUSR , 0o0200 ) ;
12991
130- #[ cfg( unix) ]
131- #[ pyattr]
132- pub const S_IXUSR : Mode = libc:: S_IXUSR ;
133- #[ cfg( not( unix) ) ]
13492 #[ pyattr]
135- pub const S_IXUSR : Mode = 0o0100 ;
93+ pub const S_IXUSR : Mode = unix_libc_get ! ( S_IXUSR , 0o0100 ) ;
13694
137- #[ cfg( all( unix, not( target_os = "android" ) , not( target_os = "redox" ) ) ) ]
13895 #[ pyattr]
139- pub const S_IEXEC : Mode = libc:: S_IEXEC ;
140- #[ cfg( any( not( unix) , target_os = "android" , target_os = "redox" ) ) ]
141- #[ pyattr]
142- pub const S_IEXEC : Mode = 0o0100 ;
96+ pub const S_IRWXG : Mode = unix_libc_get ! ( S_IRWXG , 0o0070 ) ;
14397
144- #[ cfg( unix) ]
14598 #[ pyattr]
146- pub const S_IRWXG : Mode = libc:: S_IRWXG ;
147- #[ cfg( not( unix) ) ]
148- #[ pyattr]
149- pub const S_IRWXG : Mode = 0o0070 ;
99+ pub const S_IRGRP : Mode = unix_libc_get ! ( S_IRGRP , 0o0040 ) ;
150100
151- #[ cfg( unix) ]
152- #[ pyattr]
153- pub const S_IRGRP : Mode = libc:: S_IRGRP ;
154- #[ cfg( not( unix) ) ]
155101 #[ pyattr]
156- pub const S_IRGRP : Mode = 0o0040 ;
102+ pub const S_IWGRP : Mode = unix_libc_get ! ( S_IWGRP , 0o0020 ) ;
157103
158- #[ cfg( unix) ]
159- #[ pyattr]
160- pub const S_IWGRP : Mode = libc:: S_IWGRP ;
161- #[ cfg( not( unix) ) ]
162104 #[ pyattr]
163- pub const S_IWGRP : Mode = 0o0020 ;
105+ pub const S_IXGRP : Mode = unix_libc_get ! ( S_IXGRP , 0o0010 ) ;
164106
165- #[ cfg( unix) ]
166107 #[ pyattr]
167- pub const S_IXGRP : Mode = libc:: S_IXGRP ;
168- #[ cfg( not( unix) ) ]
169- #[ pyattr]
170- pub const S_IXGRP : Mode = 0o0010 ;
108+ pub const S_IRWXO : Mode = unix_libc_get ! ( S_IRWXO , 0o0007 ) ;
171109
172- #[ cfg( unix) ]
173- #[ pyattr]
174- pub const S_IRWXO : Mode = libc:: S_IRWXO ;
175- #[ cfg( not( unix) ) ]
176110 #[ pyattr]
177- pub const S_IRWXO : Mode = 0o0007 ;
111+ pub const S_IROTH : Mode = unix_libc_get ! ( S_IROTH , 0o0004 ) ;
178112
179- #[ cfg( unix) ]
180- #[ pyattr]
181- pub const S_IROTH : Mode = libc:: S_IROTH ;
182- #[ cfg( not( unix) ) ]
183113 #[ pyattr]
184- pub const S_IROTH : Mode = 0o0004 ;
114+ pub const S_IWOTH : Mode = unix_libc_get ! ( S_IWOTH , 0o0002 ) ;
185115
186- #[ cfg( unix) ]
187- #[ pyattr]
188- pub const S_IWOTH : Mode = libc:: S_IWOTH ;
189- #[ cfg( not( unix) ) ]
190116 #[ pyattr]
191- pub const S_IWOTH : Mode = 0o0002 ;
117+ pub const S_IXOTH : Mode = unix_libc_get ! ( S_IXOTH , 0o0001 ) ;
192118
193- #[ cfg( unix) ]
194119 #[ pyattr]
195- pub const S_IXOTH : Mode = libc:: S_IXOTH ;
196- #[ cfg( not( unix) ) ]
120+ pub const S_IWRITE : Mode = {
121+ cfg_if:: cfg_if! {
122+ if #[ cfg( all( unix, not( target_os = "android" ) , not( target_os = "redox" ) ) ) ] {
123+ libc:: S_IWRITE
124+ } else {
125+ 0o0200
126+ }
127+ }
128+ } ;
129+
197130 #[ pyattr]
198- pub const S_IXOTH : Mode = 0o0001 ;
131+ pub const S_IEXEC : Mode = {
132+ cfg_if:: cfg_if! {
133+ if #[ cfg( all( unix, not( target_os = "android" ) , not( target_os = "redox" ) ) ) ] {
134+ libc:: S_IEXEC
135+ } else {
136+ 0o0100
137+ }
138+ }
139+ } ;
199140
200141 // Stat result indices
142+
201143 #[ pyattr]
202144 pub const ST_MODE : u32 = 0 ;
203145
0 commit comments