@@ -74,41 +74,6 @@ mod options {
7474/// Returns a pair of boolean. The first one indicates if we should use tagged
7575/// output format, the second one indicates if we should use the binary flag in
7676/// the untagged case.
77- fn handle_tag_text_binary_flags < S : AsRef < OsStr > > (
78- args : impl Iterator < Item = S > ,
79- ) -> UResult < ( bool , bool ) > {
80- let mut tag = true ;
81- let mut binary = false ;
82- let mut text = false ;
83-
84- // --binary, --tag and --untagged are tight together: none of them
85- // conflicts with each other but --tag will reset "binary" and "text" and
86- // set "tag".
87-
88- for arg in args {
89- let arg = arg. as_ref ( ) ;
90- if arg == "-b" || arg == "--binary" {
91- text = false ;
92- binary = true ;
93- } else if arg == "--text" {
94- text = true ;
95- binary = false ;
96- } else if arg == "--tag" {
97- tag = true ;
98- binary = false ;
99- text = false ;
100- } else if arg == "--untagged" {
101- tag = false ;
102- }
103- }
104-
105- // Specifying --text without ever mentioning --untagged fails.
106- if text && tag {
107- return Err ( ChecksumError :: TextWithoutUntagged . into ( ) ) ;
108- }
109-
110- Ok ( ( tag, binary) )
111- }
11277
11378/// Sanitize the `--length` argument depending on `--algorithm` and `--length`.
11479fn maybe_sanitize_length (
@@ -208,7 +173,8 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
208173 // Set the default algorithm to CRC when not '--check'ing.
209174 let algo_kind = algo_cli. unwrap_or ( AlgoKind :: Crc ) ;
210175
211- let ( tag, binary) = handle_tag_text_binary_flags ( std:: env:: args_os ( ) ) ?;
176+ let tag = matches. get_flag ( options:: TAG ) ;
177+ let binary = matches. get_flag ( options:: BINARY ) ;
212178
213179 let algo = SizedAlgoKind :: from_unsized ( algo_kind, length) ?;
214180 let line_ending = LineEnding :: from_zero_flag ( matches. get_flag ( options:: ZERO ) ) ;
@@ -265,7 +231,10 @@ pub fn uu_app() -> Command {
265231 . long ( options:: TAG )
266232 . help ( translate ! ( "cksum-help-tag" ) )
267233 . action ( ArgAction :: SetTrue )
268- . overrides_with ( options:: UNTAGGED ) ,
234+ . default_value ( "true" )
235+ . overrides_with ( options:: UNTAGGED )
236+ . overrides_with ( options:: BINARY )
237+ . overrides_with ( options:: TEXT ) ,
269238 )
270239 . arg (
271240 Arg :: new ( options:: LENGTH )
@@ -308,7 +277,8 @@ pub fn uu_app() -> Command {
308277 . short ( 't' )
309278 . hide ( true )
310279 . overrides_with ( options:: BINARY )
311- . action ( ArgAction :: SetTrue ) ,
280+ . action ( ArgAction :: SetTrue )
281+ . requires ( options:: UNTAGGED ) ,
312282 )
313283 . arg (
314284 Arg :: new ( options:: BINARY )
0 commit comments