1
Fork 0
mirror of https://github.com/RGBCube/uutils-coreutils synced 2025-07-30 12:37:49 +00:00

ls: implement device symbol and id

This commit is contained in:
Terts Diepraam 2021-04-29 18:25:34 +02:00
parent b89978a4c9
commit c69afa00ff

View file

@ -1623,10 +1623,18 @@ fn format_prefixed(prefixed: NumberPrefix<f64>) -> String {
fn display_file_size(metadata: &Metadata, config: &Config) -> String {
// NOTE: The human-readable behaviour deviates from the GNU ls.
// The GNU ls uses binary prefixes by default.
match config.size_format {
SizeFormat::Binary => format_prefixed(NumberPrefix::binary(metadata.len() as f64)),
SizeFormat::Decimal => format_prefixed(NumberPrefix::decimal(metadata.len() as f64)),
SizeFormat::Bytes => metadata.len().to_string(),
let ft = metadata.file_type();
if ft.is_char_device() || ft.is_block_device() {
let dev: u64 = metadata.rdev();
let major = (dev >> 8) as u8;
let minor = dev as u8;
return format!("{}, {}", major, minor);
} else {
match config.size_format {
SizeFormat::Binary => format_prefixed(NumberPrefix::binary(metadata.len() as f64)),
SizeFormat::Decimal => format_prefixed(NumberPrefix::decimal(metadata.len() as f64)),
SizeFormat::Bytes => metadata.len().to_string(),
}
}
}
@ -1635,6 +1643,10 @@ fn display_file_type(file_type: FileType) -> char {
'd'
} else if file_type.is_symlink() {
'l'
} else if file_type.is_block_device() {
'b'
} else if file_type.is_char_device() {
'c'
} else {
'-'
}