@@ -165,14 +165,16 @@ fn handle_buffer<R: BufRead>(mut input: R, options: &NumfmtOptions) -> UResult<b
165165 Ok ( saw_invalid)
166166}
167167
168- fn parse_unit ( s : & str ) -> Result < Unit > {
168+ fn parse_unit ( s : & str , opt : & str ) -> Result < Unit > {
169169 match s {
170- "auto" => Ok ( Unit :: Auto ) ,
170+ "auto" if opt != TO => Ok ( Unit :: Auto ) ,
171171 "si" => Ok ( Unit :: Si ) ,
172172 "iec" => Ok ( Unit :: Iec ( false ) ) ,
173173 "iec-i" => Ok ( Unit :: Iec ( true ) ) ,
174174 "none" => Ok ( Unit :: None ) ,
175- _ => Err ( translate ! ( "numfmt-error-unsupported-unit" ) ) ,
175+ value => Err (
176+ translate ! ( "numfmt-error-invalid-unit-argument" , "arg" => value, "opt" => format!( "--{opt}" ) ) ,
177+ ) ,
176178 }
177179}
178180
@@ -237,8 +239,8 @@ fn parse_delimiter(arg: &OsString) -> Result<Vec<u8>> {
237239}
238240
239241fn parse_options ( args : & ArgMatches ) -> Result < NumfmtOptions > {
240- let from = parse_unit ( args. get_one :: < String > ( FROM ) . unwrap ( ) ) ?;
241- let to = parse_unit ( args. get_one :: < String > ( TO ) . unwrap ( ) ) ?;
242+ let from = parse_unit ( args. get_one :: < String > ( FROM ) . unwrap ( ) , FROM ) ?;
243+ let to = parse_unit ( args. get_one :: < String > ( TO ) . unwrap ( ) , TO ) ?;
242244 let from_unit = parse_unit_size ( args. get_one :: < String > ( FROM_UNIT ) . unwrap ( ) ) ?;
243245 let to_unit = parse_unit_size ( args. get_one :: < String > ( TO_UNIT ) . unwrap ( ) ) ?;
244246
0 commit comments