@@ -74,42 +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- }
112-
11377/// Sanitize the `--length` argument depending on `--algorithm` and `--length`.
11478fn maybe_sanitize_length (
11579 algo_cli : Option < AlgoKind > ,
@@ -208,7 +172,8 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
208172 // Set the default algorithm to CRC when not '--check'ing.
209173 let algo_kind = algo_cli. unwrap_or ( AlgoKind :: Crc ) ;
210174
211- let ( tag, binary) = handle_tag_text_binary_flags ( std:: env:: args_os ( ) ) ?;
175+ let tag = matches. get_flag ( options:: TAG ) ;
176+ let binary = matches. get_flag ( options:: BINARY ) ;
212177
213178 let algo = SizedAlgoKind :: from_unsized ( algo_kind, length) ?;
214179 let line_ending = LineEnding :: from_zero_flag ( matches. get_flag ( options:: ZERO ) ) ;
@@ -265,7 +230,10 @@ pub fn uu_app() -> Command {
265230 . long ( options:: TAG )
266231 . help ( translate ! ( "cksum-help-tag" ) )
267232 . action ( ArgAction :: SetTrue )
268- . overrides_with ( options:: UNTAGGED ) ,
233+ . default_value ( "true" )
234+ . overrides_with ( options:: UNTAGGED )
235+ . overrides_with ( options:: BINARY )
236+ . overrides_with ( options:: TEXT ) ,
269237 )
270238 . arg (
271239 Arg :: new ( options:: LENGTH )
@@ -308,7 +276,8 @@ pub fn uu_app() -> Command {
308276 . short ( 't' )
309277 . hide ( true )
310278 . overrides_with ( options:: BINARY )
311- . action ( ArgAction :: SetTrue ) ,
279+ . action ( ArgAction :: SetTrue )
280+ . requires ( options:: UNTAGGED ) ,
312281 )
313282 . arg (
314283 Arg :: new ( options:: BINARY )
0 commit comments