From 4d7708a0f181f6e326bb3b7455c3806da53912eb Mon Sep 17 00:00:00 2001 From: Boris Faure Date: Thu, 26 Feb 2015 23:46:58 +0100 Subject: tyls: rewrite size_print to avoid arithmetic exception --- src/bin/tyls.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/bin/tyls.c b/src/bin/tyls.c index 84761da..f381b32 100644 --- a/src/bin/tyls.c +++ b/src/bin/tyls.c @@ -44,20 +44,20 @@ echo_on(void) } static void -size_print(char *buf, int bufsz, char *sz, unsigned long long size) +size_print(char *buf, int bufsz, char *sz, long long size) { - char prefixes[] = " KMGTPEZY"; - int i = 0; + char *prefix = " KMGTPEZY"; - while (prefixes[i]) + while (*prefix) { - if (size < (1024ULL << 10 * i) || !prefixes[i]) + if ((size < 1024) || (*prefix == 'Y')) { - snprintf(buf, bufsz, "%4lld", size / (1024 << 10 * (i - 1))); - *sz = prefixes[i]; + snprintf(buf, bufsz, "%4lld", size); + *sz = *prefix; return; } - ++i; + size >>= 10; + prefix++; } } -- cgit v1.2.1