From cd7a3088439bca530419f3071c26993b3b7d3478 Mon Sep 17 00:00:00 2001 From: Daniel Hofstetter Date: Mon, 9 Jun 2025 15:27:42 +0200 Subject: [PATCH 1/5] tr: remove "spell-checker:ignore" line --- src/uu/tr/src/tr.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/uu/tr/src/tr.rs b/src/uu/tr/src/tr.rs index 6d0a2784d..d8e97694b 100644 --- a/src/uu/tr/src/tr.rs +++ b/src/uu/tr/src/tr.rs @@ -3,8 +3,6 @@ // For the full copyright and license information, please view the LICENSE // file that was distributed with this source code. -// spell-checker:ignore (ToDO) allocs bset dflag cflag sflag tflag - mod operation; mod unicode_table; From ed70d7bf1600d37afdfe2b3fa9c6409713516f79 Mon Sep 17 00:00:00 2001 From: Daniel Hofstetter Date: Mon, 9 Jun 2025 15:34:16 +0200 Subject: [PATCH 2/5] tr: set "after help" in uu_app instead of uumain --- src/uu/tr/src/tr.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/uu/tr/src/tr.rs b/src/uu/tr/src/tr.rs index d8e97694b..17f893006 100644 --- a/src/uu/tr/src/tr.rs +++ b/src/uu/tr/src/tr.rs @@ -31,9 +31,7 @@ mod options { #[uucore::main] pub fn uumain(args: impl uucore::Args) -> UResult<()> { - let matches = uu_app() - .after_help(get_message("tr-after-help")) - .try_get_matches_from(args)?; + let matches = uu_app().try_get_matches_from(args)?; let delete_flag = matches.get_flag(options::DELETE); let complement_flag = matches.get_flag(options::COMPLEMENT); @@ -171,6 +169,7 @@ pub fn uu_app() -> Command { .version(uucore::crate_version!()) .about(get_message("tr-about")) .override_usage(format_usage(&get_message("tr-usage"))) + .after_help(get_message("tr-after-help")) .infer_long_args(true) .trailing_var_arg(true) .arg( From 4cb749024627f10b7fe9357792f32b426edf289e Mon Sep 17 00:00:00 2001 From: Daniel Hofstetter Date: Mon, 9 Jun 2025 15:41:22 +0200 Subject: [PATCH 3/5] tr: use "sets_len == 1" instead of "sets_len < 2" because sets_len can never be 0 --- src/uu/tr/src/tr.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/uu/tr/src/tr.rs b/src/uu/tr/src/tr.rs index 17f893006..422cf972a 100644 --- a/src/uu/tr/src/tr.rs +++ b/src/uu/tr/src/tr.rs @@ -47,13 +47,13 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { .map(ToOwned::to_owned) .collect(); - let sets_len = sets.len(); - if sets.is_empty() { return Err(UUsageError::new(1, get_message("tr-error-missing-operand"))); } - if !(delete_flag || squeeze_flag) && sets_len < 2 { + let sets_len = sets.len(); + + if !(delete_flag || squeeze_flag) && sets_len == 1 { return Err(UUsageError::new( 1, get_message_with_args( @@ -63,7 +63,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { )); } - if delete_flag & squeeze_flag && sets_len < 2 { + if delete_flag & squeeze_flag && sets_len == 1 { return Err(UUsageError::new( 1, get_message_with_args( @@ -143,7 +143,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { translate_input(&mut locked_stdin, &mut buffered_stdout, op)?; } } else if squeeze_flag { - if sets_len < 2 { + if sets_len == 1 { let op = SqueezeOperation::new(set1); translate_input(&mut locked_stdin, &mut buffered_stdout, op)?; } else { From ded2034eb75de86238600b6af0f9f2571f339c53 Mon Sep 17 00:00:00 2001 From: Daniel Hofstetter Date: Mon, 9 Jun 2025 16:00:59 +0200 Subject: [PATCH 4/5] tr: merge imports --- src/uu/tr/src/tr.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/uu/tr/src/tr.rs b/src/uu/tr/src/tr.rs index 422cf972a..797fe7d8a 100644 --- a/src/uu/tr/src/tr.rs +++ b/src/uu/tr/src/tr.rs @@ -6,10 +6,10 @@ mod operation; mod unicode_table; -use crate::operation::DeleteOperation; use clap::{Arg, ArgAction, Command, value_parser}; use operation::{ - Sequence, SqueezeOperation, SymbolTranslator, TranslateOperation, translate_input, + DeleteOperation, Sequence, SqueezeOperation, SymbolTranslator, TranslateOperation, + translate_input, }; use std::collections::HashMap; use std::ffi::OsString; From 74d7cd123f1de9b068ba99657ef9dbf952bfee8c Mon Sep 17 00:00:00 2001 From: Daniel Hofstetter Date: Mon, 9 Jun 2025 16:15:20 +0200 Subject: [PATCH 5/5] tr: use logical AND instead of bitwise AND --- src/uu/tr/src/tr.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/uu/tr/src/tr.rs b/src/uu/tr/src/tr.rs index 797fe7d8a..1ae9ddadf 100644 --- a/src/uu/tr/src/tr.rs +++ b/src/uu/tr/src/tr.rs @@ -63,7 +63,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { )); } - if delete_flag & squeeze_flag && sets_len == 1 { + if delete_flag && squeeze_flag && sets_len == 1 { return Err(UUsageError::new( 1, get_message_with_args(