mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-07-28 19:47:45 +00:00
cut: fix -d=
(#2424)
This commit is contained in:
parent
439b7e0ca5
commit
65f47be5ee
2 changed files with 19 additions and 1 deletions
|
@ -531,7 +531,16 @@ pub fn uumain(args: impl uucore::Args) -> i32 {
|
||||||
let zero_terminated = matches.is_present(options::ZERO_TERMINATED);
|
let zero_terminated = matches.is_present(options::ZERO_TERMINATED);
|
||||||
|
|
||||||
match matches.value_of(options::DELIMITER) {
|
match matches.value_of(options::DELIMITER) {
|
||||||
Some(delim) => {
|
Some(mut delim) => {
|
||||||
|
// GNU's `cut` supports `-d=` to set the delimiter to `=`.
|
||||||
|
// Clap parsing is limited in this situation, see:
|
||||||
|
// https://github.com/uutils/coreutils/issues/2424#issuecomment-863825242
|
||||||
|
// Since clap parsing handles `-d=` as delimiter explicitly set to "" and
|
||||||
|
// an empty delimiter is not accepted by GNU's `cut` (and makes no sense),
|
||||||
|
// we can use this as basis for a simple workaround:
|
||||||
|
if delim.is_empty() {
|
||||||
|
delim = "=";
|
||||||
|
}
|
||||||
if delim.chars().count() > 1 {
|
if delim.chars().count() > 1 {
|
||||||
Err(msg_opt_invalid_should_be!(
|
Err(msg_opt_invalid_should_be!(
|
||||||
"empty or 1 character long",
|
"empty or 1 character long",
|
||||||
|
|
|
@ -157,3 +157,12 @@ fn test_directory_and_no_such_file() {
|
||||||
.run()
|
.run()
|
||||||
.stderr_is("cut: some: No such file or directory\n");
|
.stderr_is("cut: some: No such file or directory\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_equal_as_delimiter() {
|
||||||
|
new_ucmd!()
|
||||||
|
.args(&["-f", "2", "-d="])
|
||||||
|
.pipe_in("--libdir=./out/lib")
|
||||||
|
.succeeds()
|
||||||
|
.stdout_only("./out/lib\n");
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue