Skip to content

Commit

Permalink
Merge pull request #4983 from TheDcoder/parse-hex
Browse files Browse the repository at this point in the history
od: fix parsing of hex input ending with `E`
  • Loading branch information
sylvestre committed Jun 20, 2023
2 parents b09284c + b7154a8 commit 8debc96
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 1 deletion.
3 changes: 2 additions & 1 deletion src/uu/od/src/parse_nrofbytes.rs
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ pub fn parse_number_of_bytes(s: &str) -> Result<u64, ParseSizeError> {
len -= 1;
}
#[cfg(target_pointer_width = "64")]
Some('E') => {
Some('E') if radix != 16 => {
multiply = 1024 * 1024 * 1024 * 1024 * 1024 * 1024;
len -= 1;
}
Expand Down Expand Up @@ -84,6 +84,7 @@ fn test_parse_number_of_bytes() {

// hex input
assert_eq!(15, parse_number_of_bytes("0xf").unwrap());
assert_eq!(14, parse_number_of_bytes("0XE").unwrap());
assert_eq!(15, parse_number_of_bytes("0XF").unwrap());
assert_eq!(27, parse_number_of_bytes("0x1b").unwrap());
assert_eq!(16 * 1024, parse_number_of_bytes("0x10k").unwrap());
Expand Down
29 changes: 29 additions & 0 deletions tests/by-util/test_od.rs
Original file line number Diff line number Diff line change
Expand Up @@ -627,6 +627,35 @@ fn test_skip_bytes() {
));
}

#[test]
fn test_skip_bytes_hex() {
let input = "abcdefghijklmnopq"; // spell-checker:disable-line
new_ucmd!()
.arg("-c")
.arg("--skip-bytes=0xB")
.run_piped_stdin(input.as_bytes())
.no_stderr()
.success()
.stdout_is(unindent(
"
0000013 l m n o p q
0000021
",
));
new_ucmd!()
.arg("-c")
.arg("--skip-bytes=0xE")
.run_piped_stdin(input.as_bytes())
.no_stderr()
.success()
.stdout_is(unindent(
"
0000016 o p q
0000021
",
));
}

#[test]
fn test_skip_bytes_error() {
let input = "12345";
Expand Down

0 comments on commit 8debc96

Please sign in to comment.