From f1b38e94cd059ecdd4c0bd19191ab8f06071c177 Mon Sep 17 00:00:00 2001 From: Jan Scheer Date: Fri, 3 Jun 2022 02:08:09 +0200 Subject: [PATCH] dircolors: add support for stdin "-" (fix: #3589) --- src/uu/dircolors/src/dircolors.rs | 14 ++++++++------ tests/by-util/test_dircolors.rs | 10 ++++++++++ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/uu/dircolors/src/dircolors.rs b/src/uu/dircolors/src/dircolors.rs index 6bc96adbf38..4062b0b7a3a 100644 --- a/src/uu/dircolors/src/dircolors.rs +++ b/src/uu/dircolors/src/dircolors.rs @@ -135,13 +135,15 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { let result; if files.is_empty() { result = parse(INTERNAL_DB.lines(), &out_format, ""); + } else if files.len() > 1 { + return Err(UUsageError::new( + 1, + format!("extra operand {}", files[1].quote()), + )); + } else if files[0].eq("-") { + let fin = BufReader::new(std::io::stdin()); + result = parse(fin.lines().filter_map(Result::ok), &out_format, files[0]); } else { - if files.len() > 1 { - return Err(UUsageError::new( - 1, - format!("extra operand {}", files[1].quote()), - )); - } match File::open(files[0]) { Ok(f) => { let fin = BufReader::new(f); diff --git a/tests/by-util/test_dircolors.rs b/tests/by-util/test_dircolors.rs index a4ad0df32bd..8ddbac9f479 100644 --- a/tests/by-util/test_dircolors.rs +++ b/tests/by-util/test_dircolors.rs @@ -131,6 +131,16 @@ fn test_exclusive_option() { .stderr_contains("mutually exclusive"); } +#[test] +fn test_stdin() { + new_ucmd!() + .pipe_in("owt 40;33\n") + .args(&["-b", "-"]) + .succeeds() + .stdout_is("LS_COLORS='tw=40;33:';\nexport LS_COLORS\n") + .no_stderr(); +} + fn test_helper(file_name: &str, term: &str) { new_ucmd!() .env("TERM", term)