Escape path that could be a flag (#10721)

# Description
Files that begin with dashes can be ambiguous when passed to commands
like `ls`. For example if there exists a file `--help`, it might be
considered a flag if not properly escaped. This PR escapes any file that
begins with a dash.

# User-Facing Changes

Files beginning with dashes will be escaped.

# Tests + Formatting

Tests are added.
This commit is contained in:
Himadri Bhattacharjee
2023-10-19 02:32:11 +05:30
committed by GitHub
parent 9c70c68914
commit 7162d4d9aa
6 changed files with 7 additions and 1 deletions

View File

@ -152,7 +152,9 @@ pub fn complete_item(
pub fn escape_path(path: String, dir: bool) -> String {
let filename_contaminated = !dir && path.contains(['\'', '"', ' ', '#', '(', ')']);
let dirname_contaminated = dir && path.contains(['\'', '"', ' ', '#']);
if filename_contaminated || dirname_contaminated || path.parse::<f64>().is_ok() {
let maybe_flag = path.starts_with('-');
let maybe_number = path.parse::<f64>().is_ok();
if filename_contaminated || dirname_contaminated || maybe_flag || maybe_number {
format!("`{path}`")
} else {
path