@@ -10,61 +10,68 @@ mod stat {
1010 #[ cfg( not( any( unix, windows) ) ) ]
1111 type Mode = u32 ; // Fallback for unknown targets
1212
13- // unix_libc_get
14- cfg_if:: cfg_if! {
15- if #[ cfg( unix) ] {
16- macro_rules! unix_libc_get {
17- ( $name: ident, $val: expr) => {
18- libc:: $name
19- } ;
13+ // libc_const macro for conditional compilation
14+ macro_rules! libc_const {
15+ ( #[ cfg( $cfg: meta) ] $name: ident, $fallback: expr) => { {
16+ #[ cfg( $cfg) ]
17+ {
18+ libc:: $name
2019 }
21- } else {
22- macro_rules! unix_libc_get {
23- ( $name: ident, $val: expr) => {
24- $val
25- } ;
20+ #[ cfg( not( $cfg) ) ]
21+ {
22+ $fallback
2623 }
27- }
28-
29- }
30-
31- // macos_libc_get
32- cfg_if:: cfg_if! {
33- if #[ cfg( target_os = "macos" ) ] {
34- macro_rules! macos_libc_get {
35- ( $name: ident, $val: expr) => {
36- libc:: $name
37- } ;
38- }
39- } else {
40- macro_rules! macos_libc_get {
41- ( $name: ident, $val: expr) => {
42- $val
43- } ;
44- }
45- }
24+ } } ;
4625 }
4726
4827 #[ pyattr]
49- pub const S_IFDIR : Mode = unix_libc_get ! ( S_IFDIR , 0o040000 ) ;
28+ pub const S_IFDIR : Mode = libc_const ! (
29+ #[ cfg( unix) ]
30+ S_IFDIR ,
31+ 0o040000
32+ ) ;
5033
5134 #[ pyattr]
52- pub const S_IFCHR : Mode = unix_libc_get ! ( S_IFCHR , 0o020000 ) ;
35+ pub const S_IFCHR : Mode = libc_const ! (
36+ #[ cfg( unix) ]
37+ S_IFCHR ,
38+ 0o020000
39+ ) ;
5340
5441 #[ pyattr]
55- pub const S_IFBLK : Mode = unix_libc_get ! ( S_IFBLK , 0o060000 ) ;
42+ pub const S_IFBLK : Mode = libc_const ! (
43+ #[ cfg( unix) ]
44+ S_IFBLK ,
45+ 0o060000
46+ ) ;
5647
5748 #[ pyattr]
58- pub const S_IFREG : Mode = unix_libc_get ! ( S_IFREG , 0o100000 ) ;
49+ pub const S_IFREG : Mode = libc_const ! (
50+ #[ cfg( unix) ]
51+ S_IFREG ,
52+ 0o100000
53+ ) ;
5954
6055 #[ pyattr]
61- pub const S_IFIFO : Mode = unix_libc_get ! ( S_IFIFO , 0o010000 ) ;
56+ pub const S_IFIFO : Mode = libc_const ! (
57+ #[ cfg( unix) ]
58+ S_IFIFO ,
59+ 0o010000
60+ ) ;
6261
6362 #[ pyattr]
64- pub const S_IFLNK : Mode = unix_libc_get ! ( S_IFLNK , 0o120000 ) ;
63+ pub const S_IFLNK : Mode = libc_const ! (
64+ #[ cfg( unix) ]
65+ S_IFLNK ,
66+ 0o120000
67+ ) ;
6568
6669 #[ pyattr]
67- pub const S_IFSOCK : Mode = unix_libc_get ! ( S_IFSOCK , 0o140000 ) ;
70+ pub const S_IFSOCK : Mode = libc_const ! (
71+ #[ cfg( unix) ]
72+ S_IFSOCK ,
73+ 0o140000
74+ ) ;
6875
6976 #[ pyattr]
7077 pub const S_IFDOOR : Mode = 0 ; // TODO: RUSTPYTHON Support Solaris
@@ -85,77 +92,137 @@ mod stat {
8592 // Permission bits
8693
8794 #[ pyattr]
88- pub const S_ISUID : Mode = unix_libc_get ! ( S_ISUID , 0o4000 ) ;
95+ pub const S_ISUID : Mode = libc_const ! (
96+ #[ cfg( unix) ]
97+ S_ISUID ,
98+ 0o4000
99+ ) ;
89100
90101 #[ pyattr]
91- pub const S_ISGID : Mode = unix_libc_get ! ( S_ISGID , 0o2000 ) ;
102+ pub const S_ISGID : Mode = libc_const ! (
103+ #[ cfg( unix) ]
104+ S_ISGID ,
105+ 0o2000
106+ ) ;
92107
93108 #[ pyattr]
94- pub const S_ENFMT : Mode = unix_libc_get ! ( S_ISGID , 0o2000 ) ;
109+ pub const S_ENFMT : Mode = libc_const ! (
110+ #[ cfg( unix) ]
111+ S_ISGID ,
112+ 0o2000
113+ ) ;
95114
96115 #[ pyattr]
97- pub const S_ISVTX : Mode = unix_libc_get ! ( S_ISVTX , 0o1000 ) ;
116+ pub const S_ISVTX : Mode = libc_const ! (
117+ #[ cfg( unix) ]
118+ S_ISVTX ,
119+ 0o1000
120+ ) ;
98121
99122 #[ pyattr]
100- pub const S_IRWXU : Mode = unix_libc_get ! ( S_IRWXU , 0o0700 ) ;
123+ pub const S_IRWXU : Mode = libc_const ! (
124+ #[ cfg( unix) ]
125+ S_IRWXU ,
126+ 0o0700
127+ ) ;
101128
102129 #[ pyattr]
103- pub const S_IRUSR : Mode = unix_libc_get ! ( S_IRUSR , 0o0400 ) ;
130+ pub const S_IRUSR : Mode = libc_const ! (
131+ #[ cfg( unix) ]
132+ S_IRUSR ,
133+ 0o0400
134+ ) ;
104135
105136 #[ pyattr]
106- pub const S_IREAD : Mode = unix_libc_get ! ( S_IRUSR , 0o0400 ) ;
137+ pub const S_IREAD : Mode = libc_const ! (
138+ #[ cfg( unix) ]
139+ S_IRUSR ,
140+ 0o0400
141+ ) ;
107142
108143 #[ pyattr]
109- pub const S_IWUSR : Mode = unix_libc_get ! ( S_IWUSR , 0o0200 ) ;
144+ pub const S_IWUSR : Mode = libc_const ! (
145+ #[ cfg( unix) ]
146+ S_IWUSR ,
147+ 0o0200
148+ ) ;
110149
111150 #[ pyattr]
112- pub const S_IXUSR : Mode = unix_libc_get ! ( S_IXUSR , 0o0100 ) ;
151+ pub const S_IXUSR : Mode = libc_const ! (
152+ #[ cfg( unix) ]
153+ S_IXUSR ,
154+ 0o0100
155+ ) ;
113156
114157 #[ pyattr]
115- pub const S_IRWXG : Mode = unix_libc_get ! ( S_IRWXG , 0o0070 ) ;
158+ pub const S_IRWXG : Mode = libc_const ! (
159+ #[ cfg( unix) ]
160+ S_IRWXG ,
161+ 0o0070
162+ ) ;
116163
117164 #[ pyattr]
118- pub const S_IRGRP : Mode = unix_libc_get ! ( S_IRGRP , 0o0040 ) ;
165+ pub const S_IRGRP : Mode = libc_const ! (
166+ #[ cfg( unix) ]
167+ S_IRGRP ,
168+ 0o0040
169+ ) ;
119170
120171 #[ pyattr]
121- pub const S_IWGRP : Mode = unix_libc_get ! ( S_IWGRP , 0o0020 ) ;
172+ pub const S_IWGRP : Mode = libc_const ! (
173+ #[ cfg( unix) ]
174+ S_IWGRP ,
175+ 0o0020
176+ ) ;
122177
123178 #[ pyattr]
124- pub const S_IXGRP : Mode = unix_libc_get ! ( S_IXGRP , 0o0010 ) ;
179+ pub const S_IXGRP : Mode = libc_const ! (
180+ #[ cfg( unix) ]
181+ S_IXGRP ,
182+ 0o0010
183+ ) ;
125184
126185 #[ pyattr]
127- pub const S_IRWXO : Mode = unix_libc_get ! ( S_IRWXO , 0o0007 ) ;
186+ pub const S_IRWXO : Mode = libc_const ! (
187+ #[ cfg( unix) ]
188+ S_IRWXO ,
189+ 0o0007
190+ ) ;
128191
129192 #[ pyattr]
130- pub const S_IROTH : Mode = unix_libc_get ! ( S_IROTH , 0o0004 ) ;
193+ pub const S_IROTH : Mode = libc_const ! (
194+ #[ cfg( unix) ]
195+ S_IROTH ,
196+ 0o0004
197+ ) ;
131198
132199 #[ pyattr]
133- pub const S_IWOTH : Mode = unix_libc_get ! ( S_IWOTH , 0o0002 ) ;
200+ pub const S_IWOTH : Mode = libc_const ! (
201+ #[ cfg( unix) ]
202+ S_IWOTH ,
203+ 0o0002
204+ ) ;
134205
135206 #[ pyattr]
136- pub const S_IXOTH : Mode = unix_libc_get ! ( S_IXOTH , 0o0001 ) ;
207+ pub const S_IXOTH : Mode = libc_const ! (
208+ #[ cfg( unix) ]
209+ S_IXOTH ,
210+ 0o0001
211+ ) ;
137212
138213 #[ pyattr]
139- pub const S_IWRITE : Mode = {
140- cfg_if:: cfg_if! {
141- if #[ cfg( all( unix, not( target_os = "android" ) , not( target_os = "redox" ) ) ) ] {
142- libc:: S_IWRITE
143- } else {
144- 0o0200
145- }
146- }
147- } ;
214+ pub const S_IWRITE : Mode = libc_const ! (
215+ #[ cfg( all( unix, not( target_os = "android" ) , not( target_os = "redox" ) ) ) ]
216+ S_IWRITE ,
217+ 0o0200
218+ ) ;
148219
149220 #[ pyattr]
150- pub const S_IEXEC : Mode = {
151- cfg_if:: cfg_if! {
152- if #[ cfg( all( unix, not( target_os = "android" ) , not( target_os = "redox" ) ) ) ] {
153- libc:: S_IEXEC
154- } else {
155- 0o0100
156- }
157- }
158- } ;
221+ pub const S_IEXEC : Mode = libc_const ! (
222+ #[ cfg( all( unix, not( target_os = "android" ) , not( target_os = "redox" ) ) ) ]
223+ S_IEXEC ,
224+ 0o0100
225+ ) ;
159226
160227 // Windows file attributes (if on Windows)
161228
@@ -173,31 +240,67 @@ mod stat {
173240 // Unix file flags (if on Unix)
174241
175242 #[ pyattr]
176- pub const UF_NODUMP : u32 = macos_libc_get ! ( UF_NODUMP , 0x00000001 ) ;
243+ pub const UF_NODUMP : u32 = libc_const ! (
244+ #[ cfg( target_os = "macos" ) ]
245+ UF_NODUMP ,
246+ 0x00000001
247+ ) ;
177248
178249 #[ pyattr]
179- pub const UF_IMMUTABLE : u32 = macos_libc_get ! ( UF_IMMUTABLE , 0x00000002 ) ;
250+ pub const UF_IMMUTABLE : u32 = libc_const ! (
251+ #[ cfg( target_os = "macos" ) ]
252+ UF_IMMUTABLE ,
253+ 0x00000002
254+ ) ;
180255
181256 #[ pyattr]
182- pub const UF_APPEND : u32 = macos_libc_get ! ( UF_APPEND , 0x00000004 ) ;
257+ pub const UF_APPEND : u32 = libc_const ! (
258+ #[ cfg( target_os = "macos" ) ]
259+ UF_APPEND ,
260+ 0x00000004
261+ ) ;
183262
184263 #[ pyattr]
185- pub const UF_OPAQUE : u32 = macos_libc_get ! ( UF_OPAQUE , 0x00000008 ) ;
264+ pub const UF_OPAQUE : u32 = libc_const ! (
265+ #[ cfg( target_os = "macos" ) ]
266+ UF_OPAQUE ,
267+ 0x00000008
268+ ) ;
186269
187270 #[ pyattr]
188- pub const UF_COMPRESSED : u32 = macos_libc_get ! ( UF_COMPRESSED , 0x00000020 ) ;
271+ pub const UF_COMPRESSED : u32 = libc_const ! (
272+ #[ cfg( target_os = "macos" ) ]
273+ UF_COMPRESSED ,
274+ 0x00000020
275+ ) ;
189276
190277 #[ pyattr]
191- pub const UF_HIDDEN : u32 = macos_libc_get ! ( UF_HIDDEN , 0x00008000 ) ;
278+ pub const UF_HIDDEN : u32 = libc_const ! (
279+ #[ cfg( target_os = "macos" ) ]
280+ UF_HIDDEN ,
281+ 0x00008000
282+ ) ;
192283
193284 #[ pyattr]
194- pub const SF_ARCHIVED : u32 = macos_libc_get ! ( SF_ARCHIVED , 0x00010000 ) ;
285+ pub const SF_ARCHIVED : u32 = libc_const ! (
286+ #[ cfg( target_os = "macos" ) ]
287+ SF_ARCHIVED ,
288+ 0x00010000
289+ ) ;
195290
196291 #[ pyattr]
197- pub const SF_IMMUTABLE : u32 = macos_libc_get ! ( SF_IMMUTABLE , 0x00020000 ) ;
292+ pub const SF_IMMUTABLE : u32 = libc_const ! (
293+ #[ cfg( target_os = "macos" ) ]
294+ SF_IMMUTABLE ,
295+ 0x00020000
296+ ) ;
198297
199298 #[ pyattr]
200- pub const SF_APPEND : u32 = macos_libc_get ! ( SF_APPEND , 0x00040000 ) ;
299+ pub const SF_APPEND : u32 = libc_const ! (
300+ #[ cfg( target_os = "macos" ) ]
301+ SF_APPEND ,
302+ 0x00040000
303+ ) ;
201304
202305 #[ pyattr]
203306 pub const SF_SETTABLE : u32 = if cfg ! ( target_os = "macos" ) {
0 commit comments