From 52e2da92199f3db2b5259518c7343644ca2e62df Mon Sep 17 00:00:00 2001 From: Martin Kunkel Date: Sun, 30 Nov 2025 10:41:29 +0000 Subject: [PATCH 1/2] dd: Handle slow transfer rates in progress display --- src/uu/dd/src/progress.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/uu/dd/src/progress.rs b/src/uu/dd/src/progress.rs index b8bfe327c68..421676a3385 100644 --- a/src/uu/dd/src/progress.rs +++ b/src/uu/dd/src/progress.rs @@ -147,7 +147,7 @@ impl ProgUpdate { // Compute the throughput (bytes per second) as a string. let duration = self.duration.as_secs_f64(); let safe_millis = std::cmp::max(1, self.duration.as_millis()); - let rate = 1000 * (btotal / safe_millis); + let rate = 1000 * btotal / safe_millis; let transfer_rate = to_magnitude_and_suffix(rate, SuffixType::Si); // If we are rewriting the progress line, do write a carriage @@ -644,7 +644,7 @@ mod tests { prog_update.write_prog_line(&mut cursor, rewrite).unwrap(); assert_eq!( std::str::from_utf8(cursor.get_ref()).unwrap(), - "1 byte copied, 1 s, 0.0 B/s\n" + "1 byte copied, 1 s, 1.0 B/s\n" ); let prog_update = prog_update_write(999); @@ -652,7 +652,7 @@ mod tests { prog_update.write_prog_line(&mut cursor, rewrite).unwrap(); assert_eq!( std::str::from_utf8(cursor.get_ref()).unwrap(), - "999 bytes copied, 1 s, 0.0 B/s\n" + "999 bytes copied, 1 s, 999 B/s\n" ); let prog_update = prog_update_write(1000); From bb58a69a2fe9ee18d5b1f1f175b8d203e1ffc4da Mon Sep 17 00:00:00 2001 From: Martin Kunkel Date: Mon, 1 Dec 2025 19:36:21 +0000 Subject: [PATCH 2/2] dd: Fix review findings --- src/uu/dd/src/progress.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/uu/dd/src/progress.rs b/src/uu/dd/src/progress.rs index 421676a3385..2ad61cf1b30 100644 --- a/src/uu/dd/src/progress.rs +++ b/src/uu/dd/src/progress.rs @@ -147,7 +147,7 @@ impl ProgUpdate { // Compute the throughput (bytes per second) as a string. let duration = self.duration.as_secs_f64(); let safe_millis = std::cmp::max(1, self.duration.as_millis()); - let rate = 1000 * btotal / safe_millis; + let rate = (1000u128 * btotal) / safe_millis; let transfer_rate = to_magnitude_and_suffix(rate, SuffixType::Si); // If we are rewriting the progress line, do write a carriage