From 452c619e97c66698112641503d4a1bb419461e57 Mon Sep 17 00:00:00 2001 From: FreeBear Date: Wed, 22 May 2024 12:44:36 +0100 Subject: [PATCH] Use a const char* array for format_bytes suffixes at the expense of a little more system memory. --- src/hasp/hasp_parser.cpp | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/src/hasp/hasp_parser.cpp b/src/hasp/hasp_parser.cpp index fb557cc5..ae5fe88c 100644 --- a/src/hasp/hasp_parser.cpp +++ b/src/hasp/hasp_parser.cpp @@ -203,22 +203,14 @@ int Parser::format_bytes(uint64_t filesize, char* buf, size_t len) uint32_t tmp = (uint32_t) filesize; // cast to unsigned int here to saye ugly casts in next line if(filesize < D_FILE_SIZE_DIVIDER) return snprintf_P(buf, len, PSTR("%u " D_FILE_SIZE_BYTES), tmp); - filesize /= D_FILE_SIZE_DIVIDER; + const char* suffix[] = {D_FILE_SIZE_KILOBYTES, D_FILE_SIZE_MEGABYTES, D_FILE_SIZE_GIGABYTES}; + int n = -1; + while (filesize > D_FILE_SIZE_DIVIDER * 100) { + n += 1; + filesize /= D_FILE_SIZE_DIVIDER; + } tmp = (uint32_t) filesize; - if(filesize < D_FILE_SIZE_DIVIDER * 100) - return snprintf_P(buf, len, PSTR("%u" D_DECIMAL_POINT "%02u " D_FILE_SIZE_KILOBYTES), tmp / 100, - tmp % 100); - - filesize /= D_FILE_SIZE_DIVIDER; - tmp = (uint32_t) filesize; - if(filesize < D_FILE_SIZE_DIVIDER * 100) - return snprintf_P(buf, len, PSTR("%u" D_DECIMAL_POINT "%02u " D_FILE_SIZE_MEGABYTES), tmp / 100, - tmp % 100); - - filesize /= D_FILE_SIZE_DIVIDER; - tmp = (uint32_t) filesize; - return snprintf_P(buf, len, PSTR("%u" D_DECIMAL_POINT "%02u " D_FILE_SIZE_GIGABYTES), tmp / 100, - tmp % 100); + return snprintf_P(buf, len, PSTR("%u" D_DECIMAL_POINT "%02u %s"), tmp / 100, tmp % 100, suffix[n]); } uint8_t Parser::get_action_id(const char* action)