mirror of
https://github.com/sheumann/hush.git
synced 2024-09-12 00:55:11 +00:00
dd: use correct multiplication factor and simplify code
function old new delta dd_output_status 332 364 +32 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
04bb6b6a5a
commit
7eabffafa5
@ -49,9 +49,9 @@ struct globals {
|
|||||||
static void dd_output_status(int UNUSED_PARAM cur_signal)
|
static void dd_output_status(int UNUSED_PARAM cur_signal)
|
||||||
{
|
{
|
||||||
#if ENABLE_FEATURE_DD_THIRD_STATUS_LINE
|
#if ENABLE_FEATURE_DD_THIRD_STATUS_LINE
|
||||||
unsigned long long total;
|
double seconds;
|
||||||
unsigned long long diff_scaled;
|
unsigned long long bytes_sec;
|
||||||
unsigned long long diff_us = monotonic_us(); /* before fprintf */
|
unsigned long long now_us = monotonic_us(); /* before fprintf */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Deliberately using %u, not %d */
|
/* Deliberately using %u, not %d */
|
||||||
@ -72,24 +72,12 @@ static void dd_output_status(int UNUSED_PARAM cur_signal)
|
|||||||
* (echo DONE) | ./busybox dd >/dev/null
|
* (echo DONE) | ./busybox dd >/dev/null
|
||||||
* (sleep 1; echo DONE) | ./busybox dd >/dev/null
|
* (sleep 1; echo DONE) | ./busybox dd >/dev/null
|
||||||
*/
|
*/
|
||||||
diff_us -= G.begin_time_us;
|
seconds = (now_us - G.begin_time_us) / 1000000.0;
|
||||||
/* We need to calculate "(total * 1000000) / usec" without overflow.
|
bytes_sec = G.total_bytes / seconds;
|
||||||
* this would work too, but is bigger than integer code below.
|
|
||||||
* total = G.total_bytes * (double)1000000 / (diff_us ? diff_us : 1);
|
|
||||||
*/
|
|
||||||
diff_scaled = diff_us;
|
|
||||||
total = G.total_bytes;
|
|
||||||
while (total > MAXINT(unsigned long long) / (1024 * 1024)) {
|
|
||||||
total >>= 1;
|
|
||||||
diff_scaled >>= 1;
|
|
||||||
}
|
|
||||||
total *= (1024 * 1024); /* should be 1000000, but it's +45 bytes */
|
|
||||||
if (diff_scaled > 1)
|
|
||||||
total /= diff_scaled;
|
|
||||||
fprintf(stderr, "%f seconds, %sB/s\n",
|
fprintf(stderr, "%f seconds, %sB/s\n",
|
||||||
diff_us / 1000000.0,
|
seconds,
|
||||||
/* show fractional digit, use suffixes */
|
/* show fractional digit, use suffixes */
|
||||||
make_human_readable_str(total, 1, 0)
|
make_human_readable_str(bytes_sec, 1, 0)
|
||||||
);
|
);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user