mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-07-28 11:37:44 +00:00
dircolors: move the FILE_ATTRIBUTE_CODES datastructures and use it
This commit is contained in:
parent
13a4c9114c
commit
0e8c171c80
5 changed files with 273 additions and 233 deletions
|
@ -16,7 +16,7 @@ path = "src/dircolors.rs"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
clap = { workspace = true }
|
clap = { workspace = true }
|
||||||
uucore = { workspace = true }
|
uucore = { workspace = true, features = ["colors"] }
|
||||||
|
|
||||||
[[bin]]
|
[[bin]]
|
||||||
name = "dircolors"
|
name = "dircolors"
|
||||||
|
|
|
@ -12,6 +12,7 @@ use std::io::{BufRead, BufReader};
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
|
|
||||||
use clap::{crate_version, Arg, ArgAction, Command};
|
use clap::{crate_version, Arg, ArgAction, Command};
|
||||||
|
use uucore::colors::FILE_ATTRIBUTE_CODES;
|
||||||
use uucore::display::Quotable;
|
use uucore::display::Quotable;
|
||||||
use uucore::error::{UResult, USimpleError, UUsageError};
|
use uucore::error::{UResult, USimpleError, UUsageError};
|
||||||
use uucore::{help_about, help_section, help_usage};
|
use uucore::{help_about, help_section, help_usage};
|
||||||
|
@ -276,7 +277,6 @@ enum ParseState {
|
||||||
Pass,
|
Pass,
|
||||||
}
|
}
|
||||||
|
|
||||||
use std::collections::HashMap;
|
|
||||||
use uucore::{format_usage, parse_glob};
|
use uucore::{format_usage, parse_glob};
|
||||||
|
|
||||||
#[allow(clippy::cognitive_complexity)]
|
#[allow(clippy::cognitive_complexity)]
|
||||||
|
@ -294,45 +294,6 @@ where
|
||||||
OutputFmt::Unknown => unreachable!(),
|
OutputFmt::Unknown => unreachable!(),
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut table: HashMap<&str, &str> = HashMap::with_capacity(48);
|
|
||||||
table.insert("normal", "no");
|
|
||||||
table.insert("norm", "no");
|
|
||||||
table.insert("file", "fi");
|
|
||||||
table.insert("reset", "rs");
|
|
||||||
table.insert("dir", "di");
|
|
||||||
table.insert("lnk", "ln");
|
|
||||||
table.insert("link", "ln");
|
|
||||||
table.insert("symlink", "ln");
|
|
||||||
table.insert("orphan", "or");
|
|
||||||
table.insert("missing", "mi");
|
|
||||||
table.insert("fifo", "pi");
|
|
||||||
table.insert("pipe", "pi");
|
|
||||||
table.insert("sock", "so");
|
|
||||||
table.insert("blk", "bd");
|
|
||||||
table.insert("block", "bd");
|
|
||||||
table.insert("chr", "cd");
|
|
||||||
table.insert("char", "cd");
|
|
||||||
table.insert("door", "do");
|
|
||||||
table.insert("exec", "ex");
|
|
||||||
table.insert("left", "lc");
|
|
||||||
table.insert("leftcode", "lc");
|
|
||||||
table.insert("right", "rc");
|
|
||||||
table.insert("rightcode", "rc");
|
|
||||||
table.insert("end", "ec");
|
|
||||||
table.insert("endcode", "ec");
|
|
||||||
table.insert("suid", "su");
|
|
||||||
table.insert("setuid", "su");
|
|
||||||
table.insert("sgid", "sg");
|
|
||||||
table.insert("setgid", "sg");
|
|
||||||
table.insert("sticky", "st");
|
|
||||||
table.insert("other_writable", "ow");
|
|
||||||
table.insert("owr", "ow");
|
|
||||||
table.insert("sticky_other_writable", "tw");
|
|
||||||
table.insert("owt", "tw");
|
|
||||||
table.insert("capability", "ca");
|
|
||||||
table.insert("multihardlink", "mh");
|
|
||||||
table.insert("clrtoeol", "cl");
|
|
||||||
|
|
||||||
let term = env::var("TERM").unwrap_or_else(|_| "none".to_owned());
|
let term = env::var("TERM").unwrap_or_else(|_| "none".to_owned());
|
||||||
let term = term.as_str();
|
let term = term.as_str();
|
||||||
|
|
||||||
|
@ -384,7 +345,7 @@ where
|
||||||
}
|
}
|
||||||
} else if lower == "options" || lower == "color" || lower == "eightbit" {
|
} else if lower == "options" || lower == "color" || lower == "eightbit" {
|
||||||
// Slackware only. Ignore
|
// Slackware only. Ignore
|
||||||
} else if let Some(s) = table.get(lower.as_str()) {
|
} else if let Some(s) = FILE_ATTRIBUTE_CODES.get(lower.as_str()) {
|
||||||
if *fmt == OutputFmt::Display {
|
if *fmt == OutputFmt::Display {
|
||||||
result.push_str(format!("\x1b[{val}m{s}\t{val}\x1b[0m\n").as_str());
|
result.push_str(format!("\x1b[{val}m{s}\t{val}\x1b[0m\n").as_str());
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -72,6 +72,7 @@ windows-sys = { workspace = true, optional = true, default-features = false, fea
|
||||||
default = []
|
default = []
|
||||||
# * non-default features
|
# * non-default features
|
||||||
backup-control = []
|
backup-control = []
|
||||||
|
colors = []
|
||||||
encoding = ["data-encoding", "data-encoding-macro", "z85", "thiserror"]
|
encoding = ["data-encoding", "data-encoding-macro", "z85", "thiserror"]
|
||||||
entries = ["libc"]
|
entries = ["libc"]
|
||||||
fs = ["dunce", "libc", "winapi-util", "windows-sys"]
|
fs = ["dunce", "libc", "winapi-util", "windows-sys"]
|
||||||
|
|
|
@ -3,6 +3,9 @@
|
||||||
// For the full copyright and license information, please view the LICENSE
|
// For the full copyright and license information, please view the LICENSE
|
||||||
// file that was distributed with this source code.
|
// file that was distributed with this source code.
|
||||||
|
|
||||||
|
use once_cell::sync::Lazy;
|
||||||
|
use std::collections::HashMap;
|
||||||
|
|
||||||
/* The keywords COLOR, OPTIONS, and EIGHTBIT (honored by the
|
/* The keywords COLOR, OPTIONS, and EIGHTBIT (honored by the
|
||||||
* slackware version of dircolors) are recognized but ignored.
|
* slackware version of dircolors) are recognized but ignored.
|
||||||
* Global config options can be specified before TERM or COLORTERM entries
|
* Global config options can be specified before TERM or COLORTERM entries
|
||||||
|
@ -11,33 +14,41 @@
|
||||||
* COLORTERM ?*
|
* COLORTERM ?*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static TERMS: &[&str] = &[
|
pub static TERMS: Lazy<HashMap<&str, &str>> = Lazy::new(|| {
|
||||||
"Eterm",
|
let mut m = HashMap::new();
|
||||||
"ansi",
|
[
|
||||||
"*color*",
|
"Eterm",
|
||||||
"con[0-9]*x[0-9]*",
|
"ansi",
|
||||||
"cons25",
|
"*color*",
|
||||||
"console",
|
"con[0-9]*x[0-9]*",
|
||||||
"cygwin",
|
"cons25",
|
||||||
"*direct*",
|
"console",
|
||||||
"dtterm",
|
"cygwin",
|
||||||
"gnome",
|
"*direct*",
|
||||||
"hurd",
|
"dtterm",
|
||||||
"jfbterm",
|
"gnome",
|
||||||
"konsole",
|
"hurd",
|
||||||
"kterm",
|
"jfbterm",
|
||||||
"linux",
|
"konsole",
|
||||||
"linux-c",
|
"kterm",
|
||||||
"mlterm",
|
"linux",
|
||||||
"putty",
|
"linux-c",
|
||||||
"rxvt*",
|
"mlterm",
|
||||||
"screen*",
|
"putty",
|
||||||
"st",
|
"rxvt*",
|
||||||
"terminator",
|
"screen*",
|
||||||
"tmux*",
|
"st",
|
||||||
"vt100",
|
"terminator",
|
||||||
"xterm*",
|
"tmux*",
|
||||||
];
|
"vt100",
|
||||||
|
"xterm*",
|
||||||
|
]
|
||||||
|
.iter()
|
||||||
|
.for_each(|&term| {
|
||||||
|
m.insert(term, "");
|
||||||
|
});
|
||||||
|
m
|
||||||
|
});
|
||||||
|
|
||||||
/*
|
/*
|
||||||
# Below are the color init strings for the basic file types.
|
# Below are the color init strings for the basic file types.
|
||||||
|
@ -53,173 +64,238 @@ static TERMS: &[&str] = &[
|
||||||
#NORMAL 00 # no color code at all
|
#NORMAL 00 # no color code at all
|
||||||
#FILE 00 # regular file: use no color at all
|
#FILE 00 # regular file: use no color at all
|
||||||
*/
|
*/
|
||||||
static FILE_TYPES: &[(&str, &str)] = &[
|
// FILE_TYPES with Lazy initialization
|
||||||
("RESET", "0"), // reset to "normal" color
|
pub static FILE_TYPES: Lazy<HashMap<&str, &str>> = Lazy::new(|| {
|
||||||
("DIR", "01;34"), // directory
|
let mut m = HashMap::new();
|
||||||
("LINK", "01;36"), // symbolic link
|
[
|
||||||
("MULTIHARDLINK", "00"), // regular file with more than one link
|
("RESET", "0"), // reset to "normal" color
|
||||||
("FIFO", "40;33"), // pipe
|
("DIR", "01;34"), // directory
|
||||||
("SOCK", "01;35"), // socket
|
("LINK", "01;36"), // symbolic link
|
||||||
("DOOR", "01;35"), // door
|
("MULTIHARDLINK", "00"), // regular file with more than one link
|
||||||
("BLK", "40;33;01"), // block device driver
|
("FIFO", "40;33"), // pipe
|
||||||
("CHR", "40;33;01"), // character device driver
|
("SOCK", "01;35"), // socket
|
||||||
("ORPHAN", "40;31;01"), // symlink to nonexistent file, or non-stat'able file
|
("DOOR", "01;35"), // door
|
||||||
("MISSING", "00"), // ... and the files they point to
|
("BLK", "40;33;01"), // block device driver
|
||||||
("SETUID", "37;41"), // file that is setuid (u+s)
|
("CHR", "40;33;01"), // character device driver
|
||||||
("SETGID", "30;43"), // file that is setgid (g+s)
|
("ORPHAN", "40;31;01"), // symlink to nonexistent file, or non-stat'able file
|
||||||
("CAPABILITY", "00"), // file with capability
|
("MISSING", "00"), // ... and the files they point to
|
||||||
("STICKY_OTHER_WRITABLE", "30;42"), // dir that is sticky and other-writable (+t,o+w)
|
("SETUID", "37;41"), // file that is setuid (u+s)
|
||||||
("OTHER_WRITABLE", "34;42"), // dir that is other-writable (o+w) and not sticky
|
("SETGID", "30;43"), // file that is setgid (g+s)
|
||||||
("STICKY", "37;44"), // dir with the sticky bit set (+t) and not other-writable
|
("CAPABILITY", "00"), // file with capability
|
||||||
("EXEC", "01;32"), // files with execute permission
|
("STICKY_OTHER_WRITABLE", "30;42"), // dir that is sticky and other-writable (+t,o+w)
|
||||||
];
|
("OTHER_WRITABLE", "34;42"), // dir that is other-writable (o+w) and not sticky
|
||||||
|
("STICKY", "37;44"), // dir with the sticky bit set (+t) and not other-writable
|
||||||
|
("EXEC", "01;32"), // files with execute permission
|
||||||
|
]
|
||||||
|
.iter()
|
||||||
|
.for_each(|&(k, v)| {
|
||||||
|
m.insert(k, v);
|
||||||
|
});
|
||||||
|
m
|
||||||
|
});
|
||||||
|
|
||||||
/*
|
/*
|
||||||
# List any file extensions like '.gz' or '.tar' that you would like ls
|
# List any file extensions like '.gz' or '.tar' that you would like ls
|
||||||
# to color below. Put the extension, a space, and the color init string.
|
# to color below. Put the extension, a space, and the color init string.
|
||||||
# (and any comments you want to add after a '#')
|
# (and any comments you want to add after a '#')
|
||||||
*/
|
*/
|
||||||
static FILE_COLORS: &[(&str, &str)] = &[
|
pub static FILE_COLORS: Lazy<HashMap<&str, &str>> = Lazy::new(|| {
|
||||||
// Executables (Windows)
|
let mut m = HashMap::new();
|
||||||
(".cmd", "01;32"),
|
[
|
||||||
(".exe", "01;32"),
|
// Executables (Windows)
|
||||||
(".com", "01;32"),
|
(".cmd", "01;32"),
|
||||||
(".btm", "01;32"),
|
(".exe", "01;32"),
|
||||||
(".bat", "01;32"),
|
(".com", "01;32"),
|
||||||
(".sh", "01;32"),
|
(".btm", "01;32"),
|
||||||
(".csh", "01;32"),
|
(".bat", "01;32"),
|
||||||
// Archives or compressed
|
(".sh", "01;32"),
|
||||||
(".tar", "01;31"),
|
(".csh", "01;32"),
|
||||||
(".tgz", "01;31"),
|
// Archives or compressed
|
||||||
(".arc", "01;31"),
|
(".tar", "01;31"),
|
||||||
(".arj", "01;31"),
|
(".tgz", "01;31"),
|
||||||
(".taz", "01;31"),
|
(".arc", "01;31"),
|
||||||
(".lha", "01;31"),
|
(".arj", "01;31"),
|
||||||
(".lz4", "01;31"),
|
(".taz", "01;31"),
|
||||||
(".lzh", "01;31"),
|
(".lha", "01;31"),
|
||||||
(".lzma", "01;31"),
|
(".lz4", "01;31"),
|
||||||
(".tlz", "01;31"),
|
(".lzh", "01;31"),
|
||||||
(".txz", "01;31"),
|
(".lzma", "01;31"),
|
||||||
(".tzo", "01;31"),
|
(".tlz", "01;31"),
|
||||||
(".t7z", "01;31"),
|
(".txz", "01;31"),
|
||||||
(".zip", "01;31"),
|
(".tzo", "01;31"),
|
||||||
(".z", "01;31"),
|
(".t7z", "01;31"),
|
||||||
(".dz", "01;31"),
|
(".zip", "01;31"),
|
||||||
(".gz", "01;31"),
|
(".z", "01;31"),
|
||||||
(".lrz", "01;31"),
|
(".dz", "01;31"),
|
||||||
(".lz", "01;31"),
|
(".gz", "01;31"),
|
||||||
(".lzo", "01;31"),
|
(".lrz", "01;31"),
|
||||||
(".xz", "01;31"),
|
(".lz", "01;31"),
|
||||||
(".zst", "01;31"),
|
(".lzo", "01;31"),
|
||||||
(".tzst", "01;31"),
|
(".xz", "01;31"),
|
||||||
(".bz2", "01;31"),
|
(".zst", "01;31"),
|
||||||
(".bz", "01;31"),
|
(".tzst", "01;31"),
|
||||||
(".tbz", "01;31"),
|
(".bz2", "01;31"),
|
||||||
(".tbz2", "01;31"),
|
(".bz", "01;31"),
|
||||||
(".tz", "01;31"),
|
(".tbz", "01;31"),
|
||||||
(".deb", "01;31"),
|
(".tbz2", "01;31"),
|
||||||
(".rpm", "01;31"),
|
(".tz", "01;31"),
|
||||||
(".jar", "01;31"),
|
(".deb", "01;31"),
|
||||||
(".war", "01;31"),
|
(".rpm", "01;31"),
|
||||||
(".ear", "01;31"),
|
(".jar", "01;31"),
|
||||||
(".sar", "01;31"),
|
(".war", "01;31"),
|
||||||
(".rar", "01;31"),
|
(".ear", "01;31"),
|
||||||
(".alz", "01;31"),
|
(".sar", "01;31"),
|
||||||
(".ace", "01;31"),
|
(".rar", "01;31"),
|
||||||
(".zoo", "01;31"),
|
(".alz", "01;31"),
|
||||||
(".cpio", "01;31"),
|
(".ace", "01;31"),
|
||||||
(".7z", "01;31"),
|
(".zoo", "01;31"),
|
||||||
(".rz", "01;31"),
|
(".cpio", "01;31"),
|
||||||
(".cab", "01;31"),
|
(".7z", "01;31"),
|
||||||
(".wim", "01;31"),
|
(".rz", "01;31"),
|
||||||
(".swm", "01;31"),
|
(".cab", "01;31"),
|
||||||
(".dwm", "01;31"),
|
(".wim", "01;31"),
|
||||||
(".esd", "01;31"),
|
(".swm", "01;31"),
|
||||||
// Image formats
|
(".dwm", "01;31"),
|
||||||
(".avif", "01;35"),
|
(".esd", "01;31"),
|
||||||
(".jpg", "01;35"),
|
// Image formats
|
||||||
(".jpeg", "01;35"),
|
(".avif", "01;35"),
|
||||||
(".mjpg", "01;35"),
|
(".jpg", "01;35"),
|
||||||
(".mjpeg", "01;35"),
|
(".jpeg", "01;35"),
|
||||||
(".gif", "01;35"),
|
(".mjpg", "01;35"),
|
||||||
(".bmp", "01;35"),
|
(".mjpeg", "01;35"),
|
||||||
(".pbm", "01;35"),
|
(".gif", "01;35"),
|
||||||
(".pgm", "01;35"),
|
(".bmp", "01;35"),
|
||||||
(".ppm", "01;35"),
|
(".pbm", "01;35"),
|
||||||
(".tga", "01;35"),
|
(".pgm", "01;35"),
|
||||||
(".xbm", "01;35"),
|
(".ppm", "01;35"),
|
||||||
(".xpm", "01;35"),
|
(".tga", "01;35"),
|
||||||
(".tif", "01;35"),
|
(".xbm", "01;35"),
|
||||||
(".tiff", "01;35"),
|
(".xpm", "01;35"),
|
||||||
(".png", "01;35"),
|
(".tif", "01;35"),
|
||||||
(".svg", "01;35"),
|
(".tiff", "01;35"),
|
||||||
(".svgz", "01;35"),
|
(".png", "01;35"),
|
||||||
(".mng", "01;35"),
|
(".svg", "01;35"),
|
||||||
(".pcx", "01;35"),
|
(".svgz", "01;35"),
|
||||||
(".mov", "01;35"),
|
(".mng", "01;35"),
|
||||||
(".mpg", "01;35"),
|
(".pcx", "01;35"),
|
||||||
(".mpeg", "01;35"),
|
(".mov", "01;35"),
|
||||||
(".m2v", "01;35"),
|
(".mpg", "01;35"),
|
||||||
(".mkv", "01;35"),
|
(".mpeg", "01;35"),
|
||||||
(".webm", "01;35"),
|
(".m2v", "01;35"),
|
||||||
(".webp", "01;35"),
|
(".mkv", "01;35"),
|
||||||
(".ogm", "01;35"),
|
(".webm", "01;35"),
|
||||||
(".mp4", "01;35"),
|
(".webp", "01;35"),
|
||||||
(".m4v", "01;35"),
|
(".ogm", "01;35"),
|
||||||
(".mp4v", "01;35"),
|
(".mp4", "01;35"),
|
||||||
(".vob", "01;35"),
|
(".m4v", "01;35"),
|
||||||
(".qt", "01;35"),
|
(".mp4v", "01;35"),
|
||||||
(".nuv", "01;35"),
|
(".vob", "01;35"),
|
||||||
(".wmv", "01;35"),
|
(".qt", "01;35"),
|
||||||
(".asf", "01;35"),
|
(".nuv", "01;35"),
|
||||||
(".rm", "01;35"),
|
(".wmv", "01;35"),
|
||||||
(".rmvb", "01;35"),
|
(".asf", "01;35"),
|
||||||
(".flc", "01;35"),
|
(".rm", "01;35"),
|
||||||
(".avi", "01;35"),
|
(".rmvb", "01;35"),
|
||||||
(".fli", "01;35"),
|
(".flc", "01;35"),
|
||||||
(".flv", "01;35"),
|
(".avi", "01;35"),
|
||||||
(".gl", "01;35"),
|
(".fli", "01;35"),
|
||||||
(".dl", "01;35"),
|
(".flv", "01;35"),
|
||||||
(".xcf", "01;35"),
|
(".gl", "01;35"),
|
||||||
(".xwd", "01;35"),
|
(".dl", "01;35"),
|
||||||
(".yuv", "01;35"),
|
(".xcf", "01;35"),
|
||||||
(".cgm", "01;35"),
|
(".xwd", "01;35"),
|
||||||
(".emf", "01;35"),
|
(".yuv", "01;35"),
|
||||||
(".ogv", "01;35"),
|
(".cgm", "01;35"),
|
||||||
(".ogx", "01;35"),
|
(".emf", "01;35"),
|
||||||
// Audio formats
|
(".ogv", "01;35"),
|
||||||
(".aac", "00;36"),
|
(".ogx", "01;35"),
|
||||||
(".au", "00;36"),
|
// Audio formats
|
||||||
(".flac", "00;36"),
|
(".aac", "00;36"),
|
||||||
(".m4a", "00;36"),
|
(".au", "00;36"),
|
||||||
(".mid", "00;36"),
|
(".flac", "00;36"),
|
||||||
(".midi", "00;36"),
|
(".m4a", "00;36"),
|
||||||
(".mka", "00;36"),
|
(".mid", "00;36"),
|
||||||
(".mp3", "00;36"),
|
(".midi", "00;36"),
|
||||||
(".mpc", "00;36"),
|
(".mka", "00;36"),
|
||||||
(".ogg", "00;36"),
|
(".mp3", "00;36"),
|
||||||
(".ra", "00;36"),
|
(".mpc", "00;36"),
|
||||||
(".wav", "00;36"),
|
(".ogg", "00;36"),
|
||||||
(".oga", "00;36"),
|
(".ra", "00;36"),
|
||||||
(".opus", "00;36"),
|
(".wav", "00;36"),
|
||||||
(".spx", "00;36"),
|
(".oga", "00;36"),
|
||||||
(".xspf", "00;36"),
|
(".opus", "00;36"),
|
||||||
// Backup files
|
(".spx", "00;36"),
|
||||||
("*~", "00;90"),
|
(".xspf", "00;36"),
|
||||||
("*#", "00;90"),
|
// Backup files
|
||||||
(".bak", "00;90"),
|
("*~", "00;90"),
|
||||||
(".old", "00;90"),
|
("*#", "00;90"),
|
||||||
(".orig", "00;90"),
|
(".bak", "00;90"),
|
||||||
(".part", "00;90"),
|
(".old", "00;90"),
|
||||||
(".rej", "00;90"),
|
(".orig", "00;90"),
|
||||||
(".swp", "00;90"),
|
(".part", "00;90"),
|
||||||
(".tmp", "00;90"),
|
(".rej", "00;90"),
|
||||||
(".dpkg-dist", "00;90"),
|
(".swp", "00;90"),
|
||||||
(".dpkg-old", "00;90"),
|
(".tmp", "00;90"),
|
||||||
(".ucf-dist", "00;90"),
|
(".dpkg-dist", "00;90"),
|
||||||
(".ucf-new", "00;90"),
|
(".dpkg-old", "00;90"),
|
||||||
(".ucf-old", "00;90"),
|
(".ucf-dist", "00;90"),
|
||||||
(".rpmnew", "00;90"),
|
(".ucf-new", "00;90"),
|
||||||
(".rpmorig", "00;90"),
|
(".ucf-old", "00;90"),
|
||||||
(".rpmsave", "00;90"),
|
(".rpmnew", "00;90"),
|
||||||
];
|
(".rpmorig", "00;90"),
|
||||||
|
(".rpmsave", "00;90"),
|
||||||
|
]
|
||||||
|
.iter()
|
||||||
|
.for_each(|&(k, v)| {
|
||||||
|
m.insert(k, v);
|
||||||
|
});
|
||||||
|
m
|
||||||
|
});
|
||||||
|
|
||||||
|
pub static FILE_ATTRIBUTE_CODES: Lazy<HashMap<&str, &str>> = Lazy::new(|| {
|
||||||
|
let mut m = HashMap::new();
|
||||||
|
[
|
||||||
|
("normal", "no"),
|
||||||
|
("norm", "no"),
|
||||||
|
("file", "fi"),
|
||||||
|
("reset", "rs"),
|
||||||
|
("dir", "di"),
|
||||||
|
("lnk", "ln"),
|
||||||
|
("link", "ln"),
|
||||||
|
("symlink", "ln"),
|
||||||
|
("orphan", "or"),
|
||||||
|
("missing", "mi"),
|
||||||
|
("fifo", "pi"),
|
||||||
|
("pipe", "pi"),
|
||||||
|
("sock", "so"),
|
||||||
|
("blk", "bd"),
|
||||||
|
("block", "bd"),
|
||||||
|
("chr", "cd"),
|
||||||
|
("char", "cd"),
|
||||||
|
("door", "do"),
|
||||||
|
("exec", "ex"),
|
||||||
|
("left", "lc"),
|
||||||
|
("leftcode", "lc"),
|
||||||
|
("right", "rc"),
|
||||||
|
("rightcode", "rc"),
|
||||||
|
("end", "ec"),
|
||||||
|
("endcode", "ec"),
|
||||||
|
("suid", "su"),
|
||||||
|
("setuid", "su"),
|
||||||
|
("sgid", "sg"),
|
||||||
|
("setgid", "sg"),
|
||||||
|
("sticky", "st"),
|
||||||
|
("other_writable", "ow"),
|
||||||
|
("owr", "ow"),
|
||||||
|
("sticky_other_writable", "tw"),
|
||||||
|
("owt", "tw"),
|
||||||
|
("capability", "ca"),
|
||||||
|
("multihardlink", "mh"),
|
||||||
|
("clrtoeol", "cl"),
|
||||||
|
]
|
||||||
|
.iter()
|
||||||
|
.for_each(|&(k, v)| {
|
||||||
|
m.insert(k, v);
|
||||||
|
});
|
||||||
|
m
|
||||||
|
});
|
||||||
|
|
|
@ -35,6 +35,8 @@ pub use crate::parser::shortcut_value_parser;
|
||||||
// * feature-gated modules
|
// * feature-gated modules
|
||||||
#[cfg(feature = "backup-control")]
|
#[cfg(feature = "backup-control")]
|
||||||
pub use crate::features::backup_control;
|
pub use crate::features::backup_control;
|
||||||
|
#[cfg(feature = "colors")]
|
||||||
|
pub use crate::features::colors;
|
||||||
#[cfg(feature = "encoding")]
|
#[cfg(feature = "encoding")]
|
||||||
pub use crate::features::encoding;
|
pub use crate::features::encoding;
|
||||||
#[cfg(feature = "format")]
|
#[cfg(feature = "format")]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue