From fca8a1d1510e8a526981eadd3c3fd221b501e6d6 Mon Sep 17 00:00:00 2001 From: Jonas Hietala <tradet.h@gmail.com> Date: Wed, 3 Sep 2014 23:57:02 +0200 Subject: [PATCH 1/2] Print file permissions in octal form. Closes #16943. --- src/libstd/io/fs.rs | 2 +- src/libstd/io/mod.rs | 23 ++++++++++++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/libstd/io/fs.rs b/src/libstd/io/fs.rs index 725d3b10def85..1313bf5c1054f 100644 --- a/src/libstd/io/fs.rs +++ b/src/libstd/io/fs.rs @@ -1274,7 +1274,7 @@ mod test { error!(result, "couldn't recursively mkdir"); error!(result, "couldn't create directory"); - error!(result, "mode=FilePermission { bits: 448 }"); + error!(result, "mode=700"); error!(result, format!("path={}", file.display())); }) diff --git a/src/libstd/io/mod.rs b/src/libstd/io/mod.rs index 905012b7bf33a..cc51ac8e3baf3 100644 --- a/src/libstd/io/mod.rs +++ b/src/libstd/io/mod.rs @@ -1797,7 +1797,6 @@ pub struct UnstableFileStat { bitflags!( #[doc="A set of permissions for a file or directory is represented by a set of flags which are or'd together."] - #[deriving(Show)] flags FilePermission: u32 { static UserRead = 0o400, static UserWrite = 0o200, @@ -1836,6 +1835,14 @@ impl Default for FilePermission { fn default() -> FilePermission { FilePermission::empty() } } +impl fmt::Show for FilePermission { + fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result { + formatter.fill = '0'; + formatter.width = Some(3); + (&self.bits as &fmt::Octal).fmt(formatter) + } +} + #[cfg(test)] mod tests { use super::{IoResult, Reader, MemReader, NoProgress, InvalidInput}; @@ -1937,4 +1944,18 @@ mod tests { let mut r = MemReader::new(Vec::from_slice(b"hello, world!")); assert_eq!(r.push_at_least(5, 1, &mut buf).unwrap_err().kind, InvalidInput); } + + #[test] + fn test_show() { + use super::*; + + assert_eq!(format!("{}", UserRead), "400".to_string()); + assert_eq!(format!("{}", UserFile), "644".to_string()); + assert_eq!(format!("{}", UserExec), "755".to_string()); + assert_eq!(format!("{}", UserRWX), "700".to_string()); + assert_eq!(format!("{}", GroupRWX), "070".to_string()); + assert_eq!(format!("{}", OtherRWX), "007".to_string()); + assert_eq!(format!("{}", AllPermissions), "777".to_string()); + assert_eq!(format!("{}", UserRead | UserWrite | OtherWrite), "602".to_string()); + } } From 38bf999f4a5337022211c9b990fcb7dfe0bccf32 Mon Sep 17 00:00:00 2001 From: Jonas Hietala <tradet.h@gmail.com> Date: Thu, 4 Sep 2014 09:01:51 +0200 Subject: [PATCH 2/2] Print file permissions with 4 digits. --- src/libstd/io/fs.rs | 2 +- src/libstd/io/mod.rs | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/libstd/io/fs.rs b/src/libstd/io/fs.rs index 1313bf5c1054f..3d6bb96063ee1 100644 --- a/src/libstd/io/fs.rs +++ b/src/libstd/io/fs.rs @@ -1274,7 +1274,7 @@ mod test { error!(result, "couldn't recursively mkdir"); error!(result, "couldn't create directory"); - error!(result, "mode=700"); + error!(result, "mode=0700"); error!(result, format!("path={}", file.display())); }) diff --git a/src/libstd/io/mod.rs b/src/libstd/io/mod.rs index cc51ac8e3baf3..c7996c549f474 100644 --- a/src/libstd/io/mod.rs +++ b/src/libstd/io/mod.rs @@ -1838,7 +1838,7 @@ impl Default for FilePermission { impl fmt::Show for FilePermission { fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result { formatter.fill = '0'; - formatter.width = Some(3); + formatter.width = Some(4); (&self.bits as &fmt::Octal).fmt(formatter) } } @@ -1949,13 +1949,13 @@ mod tests { fn test_show() { use super::*; - assert_eq!(format!("{}", UserRead), "400".to_string()); - assert_eq!(format!("{}", UserFile), "644".to_string()); - assert_eq!(format!("{}", UserExec), "755".to_string()); - assert_eq!(format!("{}", UserRWX), "700".to_string()); - assert_eq!(format!("{}", GroupRWX), "070".to_string()); - assert_eq!(format!("{}", OtherRWX), "007".to_string()); - assert_eq!(format!("{}", AllPermissions), "777".to_string()); - assert_eq!(format!("{}", UserRead | UserWrite | OtherWrite), "602".to_string()); + assert_eq!(format!("{}", UserRead), "0400".to_string()); + assert_eq!(format!("{}", UserFile), "0644".to_string()); + assert_eq!(format!("{}", UserExec), "0755".to_string()); + assert_eq!(format!("{}", UserRWX), "0700".to_string()); + assert_eq!(format!("{}", GroupRWX), "0070".to_string()); + assert_eq!(format!("{}", OtherRWX), "0007".to_string()); + assert_eq!(format!("{}", AllPermissions), "0777".to_string()); + assert_eq!(format!("{}", UserRead | UserWrite | OtherWrite), "0602".to_string()); } }