From d7a297449453d29fc0342611232225a57a5b9a86 Mon Sep 17 00:00:00 2001 From: Ben S Date: Sun, 3 May 2015 11:55:10 +0100 Subject: Permissions are back! --- src/file.rs | 33 +++++++++++---------------------- 1 file changed, 11 insertions(+), 22 deletions(-) (limited to 'src/file.rs') diff --git a/src/file.rs b/src/file.rs index bdefbb2..02a1f81 100644 --- a/src/file.rs +++ b/src/file.rs @@ -2,6 +2,7 @@ use std::ascii::AsciiExt; use std::env::current_dir; use std::fs; use std::io; +use std::os::unix; use std::os::unix::fs::PermissionsExt; use std::path::{Component, Path, PathBuf}; @@ -409,15 +410,15 @@ impl<'a> File<'a> { let string = ANSIStrings(&[ self.type_char(), - File::permission_bit(bits, Permission::UserRead, "r", Yellow.bold()), - File::permission_bit(bits, Permission::UserWrite, "w", Red.bold()), - File::permission_bit(bits, Permission::UserExecute, "x", executable_colour), - File::permission_bit(bits, Permission::GroupRead, "r", Yellow.normal()), - File::permission_bit(bits, Permission::GroupWrite, "w", Red.normal()), - File::permission_bit(bits, Permission::GroupExecute, "x", Green.normal()), - File::permission_bit(bits, Permission::OtherRead, "r", Yellow.normal()), - File::permission_bit(bits, Permission::OtherWrite, "w", Red.normal()), - File::permission_bit(bits, Permission::OtherExecute, "x", Green.normal()), + File::permission_bit(bits, unix::fs::USER_READ, "r", Yellow.bold()), + File::permission_bit(bits, unix::fs::USER_WRITE, "w", Red.bold()), + File::permission_bit(bits, unix::fs::USER_EXECUTE, "x", executable_colour), + File::permission_bit(bits, unix::fs::GROUP_READ, "r", Yellow.normal()), + File::permission_bit(bits, unix::fs::GROUP_WRITE, "w", Red.normal()), + File::permission_bit(bits, unix::fs::GROUP_EXECUTE, "x", Green.normal()), + File::permission_bit(bits, unix::fs::OTHER_READ, "r", Yellow.normal()), + File::permission_bit(bits, unix::fs::OTHER_WRITE, "w", Red.normal()), + File::permission_bit(bits, unix::fs::OTHER_EXECUTE, "x", Green.normal()), self.attribute_marker() ]).to_string(); @@ -425,7 +426,7 @@ impl<'a> File<'a> { } /// Helper method for the permissions string. - fn permission_bit(bits: u16, bit: Permission, character: &'static str, style: Style) -> ANSIString<'static> { + fn permission_bit(bits: u16, bit: u16, character: &'static str, style: Style) -> ANSIString<'static> { let bi32 = bit as u16; if bits & bi32 == bi32 { style.paint(character) @@ -512,18 +513,6 @@ fn ext<'a>(name: &'a str) -> Option { name.rfind('.').map(|p| name[p+1..].to_ascii_lowercase()) } -enum Permission { - UserRead = 0o400, - UserWrite = 0o200, - UserExecute = 0o100, - GroupRead = 0o040, - GroupWrite = 0o020, - GroupExecute = 0o010, - OtherRead = 0o004, - OtherWrite = 0o002, - OtherExecute = 0o001, -} - #[cfg(broken_test)] pub mod test { pub use super::*; -- cgit v1.2.3