1
Fork 0
mirror of https://github.com/RGBCube/uutils-coreutils synced 2025-08-02 05:57:46 +00:00

mkdir: skip setting dir permissions on windows

This commit is contained in:
John Shin 2023-05-18 19:23:08 -07:00
parent 5e1a6c1f13
commit f592dff46a
2 changed files with 7 additions and 5 deletions

View file

@ -179,6 +179,7 @@ fn chmod(_path: &Path, _mode: u32) -> UResult<()> {
Ok(()) Ok(())
} }
#[allow(unused_variables)]
fn create_dir(path: &Path, recursive: bool, verbose: bool, is_parent: bool) -> UResult<()> { fn create_dir(path: &Path, recursive: bool, verbose: bool, is_parent: bool) -> UResult<()> {
if path.exists() && !recursive { if path.exists() && !recursive {
return Err(USimpleError::new( return Err(USimpleError::new(
@ -207,6 +208,7 @@ fn create_dir(path: &Path, recursive: bool, verbose: bool, is_parent: bool) -> U
path.quote() path.quote()
); );
} }
#[cfg(not(windows))]
if is_parent { if is_parent {
// directories created by -p have permission bits set to '=rwx,u+wx', // directories created by -p have permission bits set to '=rwx,u+wx',
// which is umask modified by 'u+wx' // which is umask modified by 'u+wx'

View file

@ -84,13 +84,13 @@ fn test_mkdir_parent_mode() {
assert!(at.dir_exists("a")); assert!(at.dir_exists("a"));
// parents created by -p have permissions set to "=rwx,u+wx" // parents created by -p have permissions set to "=rwx,u+wx"
assert_eq!( assert_eq!(
at.metadata("a").permissions().mode(), at.metadata("a").permissions().mode() as mode_t,
((!default_umask & 0o777) | 0o300) + 0o40000 ((!default_umask & 0o777) | 0o300) + 0o40000
); );
assert!(at.dir_exists("a/b")); assert!(at.dir_exists("a/b"));
// sub directory's permission is determined only by the umask // sub directory's permission is determined only by the umask
assert_eq!( assert_eq!(
at.metadata("a/b").permissions().mode(), at.metadata("a/b").permissions().mode() as mode_t,
(!default_umask & 0o777) + 0o40000 (!default_umask & 0o777) + 0o40000
); );
@ -118,17 +118,17 @@ fn test_mkdir_parent_mode_check_existing_parent() {
assert!(at.dir_exists("a")); assert!(at.dir_exists("a"));
// parent dirs that already exist do not get their permissions modified // parent dirs that already exist do not get their permissions modified
assert_eq!( assert_eq!(
at.metadata("a").permissions().mode(), at.metadata("a").permissions().mode() as mode_t,
(!default_umask & 0o777) + 0o40000 (!default_umask & 0o777) + 0o40000
); );
assert!(at.dir_exists("a/b")); assert!(at.dir_exists("a/b"));
assert_eq!( assert_eq!(
at.metadata("a/b").permissions().mode(), at.metadata("a/b").permissions().mode() as mode_t,
((!default_umask & 0o777) | 0o300) + 0o40000 ((!default_umask & 0o777) | 0o300) + 0o40000
); );
assert!(at.dir_exists("a/b/c")); assert!(at.dir_exists("a/b/c"));
assert_eq!( assert_eq!(
at.metadata("a/b/c").permissions().mode(), at.metadata("a/b/c").permissions().mode() as mode_t,
(!default_umask & 0o777) + 0o40000 (!default_umask & 0o777) + 0o40000
); );