@@ -11,7 +11,6 @@ use std::path::Path;
1111
1212#[ cfg( not( any( target_os = "netbsd" , target_os = "redox" ) ) ) ]
1313use libc:: { S_IFMT , S_IFLNK } ;
14- #[ cfg( not( target_os = "redox" ) ) ]
1514use libc:: mode_t;
1615
1716#[ cfg( not( target_os = "redox" ) ) ]
@@ -312,39 +311,47 @@ fn test_mkdirat_fail() {
312311 target_os = "ios" ,
313312 target_os = "macos" ,
314313 target_os = "redox" ) ) ) ]
315- fn test_mknod_family ( ) {
314+ fn test_mknod ( ) {
315+ use stat:: { lstat, mknod, SFlag } ;
316+
317+ let file_name = "test_file" ;
318+ let tempdir = tempfile:: tempdir ( ) . unwrap ( ) ;
319+ let target = tempdir. path ( ) . join ( file_name) ;
320+ mknod ( & target, SFlag :: S_IFREG , Mode :: S_IRWXU , 0 ) . unwrap ( ) ;
321+ let mode = lstat ( & target) . unwrap ( ) . st_mode as mode_t ;
322+ assert ! ( mode & libc:: S_IFREG == libc:: S_IFREG ) ;
323+ assert ! ( mode & libc:: S_IRWXU == libc:: S_IRWXU ) ;
324+ }
325+
326+ #[ test]
327+ #[ cfg( not( any( target_os = "freebsd" ,
328+ target_os = "illumos" ,
329+ target_os = "ios" ,
330+ target_os = "macos" ,
331+ target_os = "redox" ) ) ) ]
332+ fn test_mknodat ( ) {
316333 use fcntl:: { AtFlags , OFlag } ;
317334 use nix:: dir:: Dir ;
318- use stat:: { fstatat, lstat , mknod , mknodat, SFlag } ;
335+ use stat:: { fstatat, mknodat, SFlag } ;
319336
320337 let file_name = "test_file" ;
321- {
322- let tempdir = tempfile:: tempdir ( ) . unwrap ( ) ;
323- let target = tempdir. path ( ) . join ( file_name) ;
324- mknod ( & target, SFlag :: S_IFREG , Mode :: S_IRWXU , 0 ) . unwrap ( ) ;
325- let mode = lstat ( & target) . unwrap ( ) . st_mode as mode_t ;
326- assert ! ( mode & libc:: S_IFREG == libc:: S_IFREG ) ;
327- assert ! ( mode & libc:: S_IRWXU == libc:: S_IRWXU ) ;
328- }
329- {
330- let tempdir = tempfile:: tempdir ( ) . unwrap ( ) ;
331- let target_dir = Dir :: open ( tempdir. path ( ) , OFlag :: O_DIRECTORY , Mode :: S_IRWXU ) . unwrap ( ) ;
332- mknodat (
333- target_dir. as_raw_fd ( ) ,
334- file_name,
335- SFlag :: S_IFREG ,
336- Mode :: S_IRWXU ,
337- 0 ,
338- )
339- . unwrap ( ) ;
340- let mode = fstatat (
341- target_dir. as_raw_fd ( ) ,
342- file_name,
343- AtFlags :: AT_SYMLINK_NOFOLLOW ,
344- )
345- . unwrap ( )
346- . st_mode as mode_t ;
347- assert ! ( mode & libc:: S_IFREG == libc:: S_IFREG ) ;
348- assert ! ( mode & libc:: S_IRWXU == libc:: S_IRWXU ) ;
349- }
338+ let tempdir = tempfile:: tempdir ( ) . unwrap ( ) ;
339+ let target_dir = Dir :: open ( tempdir. path ( ) , OFlag :: O_DIRECTORY , Mode :: S_IRWXU ) . unwrap ( ) ;
340+ mknodat (
341+ target_dir. as_raw_fd ( ) ,
342+ file_name,
343+ SFlag :: S_IFREG ,
344+ Mode :: S_IRWXU ,
345+ 0 ,
346+ )
347+ . unwrap ( ) ;
348+ let mode = fstatat (
349+ target_dir. as_raw_fd ( ) ,
350+ file_name,
351+ AtFlags :: AT_SYMLINK_NOFOLLOW ,
352+ )
353+ . unwrap ( )
354+ . st_mode as mode_t ;
355+ assert ! ( mode & libc:: S_IFREG == libc:: S_IFREG ) ;
356+ assert ! ( mode & libc:: S_IRWXU == libc:: S_IRWXU ) ;
350357}
0 commit comments