mirror of
https://github.com/Llewellynvdm/exa.git
synced 2024-11-19 10:45:11 +00:00
Permissions are back!
This commit is contained in:
parent
be8a48ab72
commit
d7a2974494
33
src/file.rs
33
src/file.rs
@ -2,6 +2,7 @@ use std::ascii::AsciiExt;
|
|||||||
use std::env::current_dir;
|
use std::env::current_dir;
|
||||||
use std::fs;
|
use std::fs;
|
||||||
use std::io;
|
use std::io;
|
||||||
|
use std::os::unix;
|
||||||
use std::os::unix::fs::PermissionsExt;
|
use std::os::unix::fs::PermissionsExt;
|
||||||
use std::path::{Component, Path, PathBuf};
|
use std::path::{Component, Path, PathBuf};
|
||||||
|
|
||||||
@ -409,15 +410,15 @@ impl<'a> File<'a> {
|
|||||||
|
|
||||||
let string = ANSIStrings(&[
|
let string = ANSIStrings(&[
|
||||||
self.type_char(),
|
self.type_char(),
|
||||||
File::permission_bit(bits, Permission::UserRead, "r", Yellow.bold()),
|
File::permission_bit(bits, unix::fs::USER_READ, "r", Yellow.bold()),
|
||||||
File::permission_bit(bits, Permission::UserWrite, "w", Red.bold()),
|
File::permission_bit(bits, unix::fs::USER_WRITE, "w", Red.bold()),
|
||||||
File::permission_bit(bits, Permission::UserExecute, "x", executable_colour),
|
File::permission_bit(bits, unix::fs::USER_EXECUTE, "x", executable_colour),
|
||||||
File::permission_bit(bits, Permission::GroupRead, "r", Yellow.normal()),
|
File::permission_bit(bits, unix::fs::GROUP_READ, "r", Yellow.normal()),
|
||||||
File::permission_bit(bits, Permission::GroupWrite, "w", Red.normal()),
|
File::permission_bit(bits, unix::fs::GROUP_WRITE, "w", Red.normal()),
|
||||||
File::permission_bit(bits, Permission::GroupExecute, "x", Green.normal()),
|
File::permission_bit(bits, unix::fs::GROUP_EXECUTE, "x", Green.normal()),
|
||||||
File::permission_bit(bits, Permission::OtherRead, "r", Yellow.normal()),
|
File::permission_bit(bits, unix::fs::OTHER_READ, "r", Yellow.normal()),
|
||||||
File::permission_bit(bits, Permission::OtherWrite, "w", Red.normal()),
|
File::permission_bit(bits, unix::fs::OTHER_WRITE, "w", Red.normal()),
|
||||||
File::permission_bit(bits, Permission::OtherExecute, "x", Green.normal()),
|
File::permission_bit(bits, unix::fs::OTHER_EXECUTE, "x", Green.normal()),
|
||||||
self.attribute_marker()
|
self.attribute_marker()
|
||||||
]).to_string();
|
]).to_string();
|
||||||
|
|
||||||
@ -425,7 +426,7 @@ impl<'a> File<'a> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Helper method for the permissions string.
|
/// 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;
|
let bi32 = bit as u16;
|
||||||
if bits & bi32 == bi32 {
|
if bits & bi32 == bi32 {
|
||||||
style.paint(character)
|
style.paint(character)
|
||||||
@ -512,18 +513,6 @@ fn ext<'a>(name: &'a str) -> Option<String> {
|
|||||||
name.rfind('.').map(|p| name[p+1..].to_ascii_lowercase())
|
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)]
|
#[cfg(broken_test)]
|
||||||
pub mod test {
|
pub mod test {
|
||||||
pub use super::*;
|
pub use super::*;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#![feature(collections, convert, core, exit_status, fs_ext, fs_time, io, libc, os, scoped, std_misc)]
|
#![feature(collections, convert, core, exit_status, fs_ext, fs_mode, fs_time, io, libc, os, scoped, std_misc)]
|
||||||
#![allow(deprecated)]
|
#![allow(deprecated)]
|
||||||
|
|
||||||
// Other platforms than macos don't need std_misc but you can't
|
// Other platforms than macos don't need std_misc but you can't
|
||||||
|
Loading…
Reference in New Issue
Block a user