@@ -492,13 +492,14 @@ fn get_path_from_fd(fd: c_int) -> Option<PathBuf> {
492
492
let mut buf = vec ! [ 0 ; libc:: PATH_MAX as usize ] ;
493
493
let n = unsafe { libc:: fcntl ( fd, libc:: F_GETPATH , buf. as_ptr ( ) ) } ;
494
494
if n == -1 {
495
- cfg_if :: cfg_if ! {
496
- if # [ cfg ( target_os = "netbsd" ) ] {
495
+ cfg_select ! {
496
+ target_os = "netbsd" => {
497
497
// fallback to procfs as last resort
498
498
let mut p = PathBuf :: from( "/proc/self/fd" ) ;
499
499
p. push( & fd. to_string( ) ) ;
500
500
return run_path_with_cstr( & p, & readlink) . ok( )
501
- } else {
501
+ }
502
+ _ => {
502
503
return None ;
503
504
}
504
505
}
@@ -2162,80 +2163,6 @@ impl FromRawFd for File {
2162
2163
2163
2164
impl fmt:: Debug for File {
2164
2165
fn fmt ( & self , f : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
2165
- #[ cfg( any( target_os = "linux" , target_os = "illumos" , target_os = "solaris" ) ) ]
2166
- fn get_path ( fd : c_int ) -> Option < PathBuf > {
2167
- let mut p = PathBuf :: from ( "/proc/self/fd" ) ;
2168
- p. push ( & fd. to_string ( ) ) ;
2169
- run_path_with_cstr ( & p, & readlink) . ok ( )
2170
- }
2171
-
2172
- #[ cfg( any( target_vendor = "apple" , target_os = "netbsd" ) ) ]
2173
- fn get_path ( fd : c_int ) -> Option < PathBuf > {
2174
- // FIXME: The use of PATH_MAX is generally not encouraged, but it
2175
- // is inevitable in this case because Apple targets and NetBSD define `fcntl`
2176
- // with `F_GETPATH` in terms of `MAXPATHLEN`, and there are no
2177
- // alternatives. If a better method is invented, it should be used
2178
- // instead.
2179
- let mut buf = vec ! [ 0 ; libc:: PATH_MAX as usize ] ;
2180
- let n = unsafe { libc:: fcntl ( fd, libc:: F_GETPATH , buf. as_ptr ( ) ) } ;
2181
- if n == -1 {
2182
- cfg_select ! {
2183
- target_os = "netbsd" => {
2184
- // fallback to procfs as last resort
2185
- let mut p = PathBuf :: from( "/proc/self/fd" ) ;
2186
- p. push( & fd. to_string( ) ) ;
2187
- return run_path_with_cstr( & p, & readlink) . ok( )
2188
- }
2189
- _ => {
2190
- return None ;
2191
- }
2192
- }
2193
- }
2194
- let l = buf. iter ( ) . position ( |& c| c == 0 ) . unwrap ( ) ;
2195
- buf. truncate ( l as usize ) ;
2196
- buf. shrink_to_fit ( ) ;
2197
- Some ( PathBuf :: from ( OsString :: from_vec ( buf) ) )
2198
- }
2199
-
2200
- #[ cfg( target_os = "freebsd" ) ]
2201
- fn get_path ( fd : c_int ) -> Option < PathBuf > {
2202
- let info = Box :: < libc:: kinfo_file > :: new_zeroed ( ) ;
2203
- let mut info = unsafe { info. assume_init ( ) } ;
2204
- info. kf_structsize = size_of :: < libc:: kinfo_file > ( ) as libc:: c_int ;
2205
- let n = unsafe { libc:: fcntl ( fd, libc:: F_KINFO , & mut * info) } ;
2206
- if n == -1 {
2207
- return None ;
2208
- }
2209
- let buf = unsafe { CStr :: from_ptr ( info. kf_path . as_mut_ptr ( ) ) . to_bytes ( ) . to_vec ( ) } ;
2210
- Some ( PathBuf :: from ( OsString :: from_vec ( buf) ) )
2211
- }
2212
-
2213
- #[ cfg( target_os = "vxworks" ) ]
2214
- fn get_path ( fd : c_int ) -> Option < PathBuf > {
2215
- let mut buf = vec ! [ 0 ; libc:: PATH_MAX as usize ] ;
2216
- let n = unsafe { libc:: ioctl ( fd, libc:: FIOGETNAME , buf. as_ptr ( ) ) } ;
2217
- if n == -1 {
2218
- return None ;
2219
- }
2220
- let l = buf. iter ( ) . position ( |& c| c == 0 ) . unwrap ( ) ;
2221
- buf. truncate ( l as usize ) ;
2222
- Some ( PathBuf :: from ( OsString :: from_vec ( buf) ) )
2223
- }
2224
-
2225
- #[ cfg( not( any(
2226
- target_os = "linux" ,
2227
- target_os = "vxworks" ,
2228
- target_os = "freebsd" ,
2229
- target_os = "netbsd" ,
2230
- target_os = "illumos" ,
2231
- target_os = "solaris" ,
2232
- target_vendor = "apple" ,
2233
- ) ) ) ]
2234
- fn get_path ( _fd : c_int ) -> Option < PathBuf > {
2235
- // FIXME(#24570): implement this for other Unix platforms
2236
- None
2237
- }
2238
-
2239
2166
fn get_mode ( fd : c_int ) -> Option < ( bool , bool ) > {
2240
2167
let mode = unsafe { libc:: fcntl ( fd, libc:: F_GETFL ) } ;
2241
2168
if mode == -1 {
0 commit comments