summaryrefslogtreecommitdiff
path: root/progressmeter.c
diff options
context:
space:
mode:
Diffstat (limited to 'progressmeter.c')
-rw-r--r--progressmeter.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/progressmeter.c b/progressmeter.c
index e7380a8f..948d361d 100644
--- a/progressmeter.c
+++ b/progressmeter.c
@@ -203,6 +203,7 @@ draw_progress_meter()
nspaces = MIN(get_tty_width() - 79, sizeof(spaces) - 1);
+#ifdef HAVE_LONG_LONG_INT
snprintf(buf, sizeof(buf),
"\r%-45.45s%.*s%3d%% %4lld%c%c %3lld.%01d%cB/s",
curfile,
@@ -216,6 +217,22 @@ draw_progress_meter()
(int)((bytespersec % 1024) * 10 / 1024),
prefixes[bi]
);
+#else
+ /* XXX: Handle integer overflow? */
+ snprintf(buf, sizeof(buf),
+ "\r%-45.45s%.*s%3d%% %4lu%c%c %3lu.%01d%cB/s",
+ curfile,
+ nspaces,
+ spaces,
+ ratio,
+ (u_long)abbrevsize,
+ prefixes[ai],
+ ai == 0 ? ' ' : 'B',
+ (u_long)(bytespersec / 1024),
+ (int)((bytespersec % 1024) * 10 / 1024),
+ prefixes[bi]
+ );
+#endif
if (cursize <= 0 || elapsed <= 0.0 || cursize > totalbytes) {
snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf),