diff --git a/src/uu/pmap/src/pmap.rs b/src/uu/pmap/src/pmap.rs index 93c133f1..6970fd9a 100644 --- a/src/uu/pmap/src/pmap.rs +++ b/src/uu/pmap/src/pmap.rs @@ -33,6 +33,9 @@ mod options { #[uucore::main] pub fn uumain(args: impl uucore::Args) -> UResult<()> { + // procps-ng accepts -XX as a distinct short option. clap cannot represent a + // two-character short flag next to -X, so map the GNU spelling to --XX. + let args = args.map(|arg| if arg == "-XX" { "--XX".into() } else { arg }); let matches = uu_app().try_get_matches_from(args)?; if matches.get_flag(options::CREATE_RC) { diff --git a/tests/by-util/test_pmap.rs b/tests/by-util/test_pmap.rs index b4d55b29..2de05b3d 100644 --- a/tests/by-util/test_pmap.rs +++ b/tests/by-util/test_pmap.rs @@ -199,14 +199,15 @@ fn test_more_extended() { fn test_most_extended() { let pid = process::id(); - let arg = "--XX"; - let result = new_ucmd!() - .arg(arg) - .arg(pid.to_string()) - .succeeds() - .stdout_move_str(); + for arg in ["--XX", "-XX"] { + let result = new_ucmd!() + .arg(arg) + .arg(pid.to_string()) + .succeeds() + .stdout_move_str(); - assert_most_extended_format(pid, &result, false, false); + assert_most_extended_format(pid, &result, false, false); + } } #[test]