From af181b372c2d4966ed23795f04c613bb44315d0c Mon Sep 17 00:00:00 2001 From: Jordan Orelli Date: Wed, 13 Mar 2024 22:40:13 -0500 Subject: [PATCH] ls should use file names, not abs paths --- src/builtin/ls.rs | 9 +++++++-- src/error.rs | 4 ++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/builtin/ls.rs b/src/builtin/ls.rs index cd3725d..45576d3 100644 --- a/src/builtin/ls.rs +++ b/src/builtin/ls.rs @@ -11,8 +11,13 @@ impl Call for Ls { let cwd = env::current_dir()?; let dir = fs::read_dir(&cwd)?; for child in dir { - let child = child?; - _ = write!(ctx.stdout, "{}\n", child.path().display()); + let child_path = child?.path(); + let fname = child_path + .file_name() + .ok_or_else(|| ExecError::new("no file name"))? + .to_str() + .ok_or_else(|| ExecError::new("non-unicode file name"))?; + _ = write!(ctx.stdout, "{}\n", fname); } Ok(Value::None) } diff --git a/src/error.rs b/src/error.rs index e1ce4dc..79a107a 100644 --- a/src/error.rs +++ b/src/error.rs @@ -126,6 +126,10 @@ impl ExecError { pub fn type_error>(msg: S) -> Self { Self::ValueTypeError(msg.into()) } + + pub fn new>(msg: S) -> Self { + Self::Misc(msg.into()) + } } impl Error {