diff --git a/src/app.rs b/src/app.rs index cd7066e..9eb2592 100644 --- a/src/app.rs +++ b/src/app.rs @@ -258,8 +258,7 @@ fn usage() -> HashMap<&'static str, Help> { , "Shows the full path starting from the root as opposed to relative paths."); doc!(h, "path-separator" , "Set the path separator to use when printing file paths." - , "Set the path separator to use when printing file paths. \ - A path separator is limited to a single byte."); + , "Set the path separator to use when printing file paths."); doc!(h, "follow" , "Follow symbolic links" , "By default, fd does not descend into symlinked directories. Using this flag, symbolic \ diff --git a/src/internal/opts.rs b/src/internal/opts.rs index 6c509d3..9775c3b 100644 --- a/src/internal/opts.rs +++ b/src/internal/opts.rs @@ -77,5 +77,5 @@ pub struct FdOptions { pub show_filesystem_errors: bool, /// The separator used to print file paths. - pub path_separator: Option, + pub path_separator: Option, } diff --git a/src/main.rs b/src/main.rs index 306181c..d66ce45 100644 --- a/src/main.rs +++ b/src/main.rs @@ -114,19 +114,8 @@ fn main() { _ => atty::is(Stream::Stdout), }; - let path_separator: Option = match matches.value_of("path-separator") { - Some(sep_str) => { - let sep = sep_str.as_bytes(); - if sep.len() != 1 { - print_error_and_exit!( - "'{}' is not a valid path separator. See 'fd --help'.", - sep_str - ); - } - Some(sep[0]) - } - None => None, - }; + let path_separator: Option = + matches.value_of("path-separator").map(|str| str.to_owned()); #[cfg(windows)] let colored_output = colored_output && ansi_term::enable_ansi_support().is_ok(); diff --git a/src/output.rs b/src/output.rs index 414a296..fdb1ceb 100644 --- a/src/output.rs +++ b/src/output.rs @@ -69,16 +69,10 @@ fn print_entry_colorized( let path_string = component.to_string_lossy(); - match config.path_separator { + match &config.path_separator { None => write!(stdout, "{}", style.paint(path_string))?, Some(sep) => { - let mut path_bytes = path_string.as_bytes().to_vec(); - for b in &mut path_bytes { - if *b == b'/' || (cfg!(windows) && *b == b'\\') { - *b = sep; - } - } - let path_string = String::from_utf8_lossy(&path_bytes); + let path_string = path_string.replace(std::path::MAIN_SEPARATOR, &sep); write!(stdout, "{}", style.paint(path_string))? } }