diff options
author | johannst <johannes.stoelp@gmail.com> | 2020-11-29 16:17:28 +0100 |
---|---|---|
committer | johannst <johannes.stoelp@gmail.com> | 2020-11-29 16:17:28 +0100 |
commit | 6b6c7ca4f4cce33595b4187f23d4003aecef47f6 (patch) | |
tree | 2b0f790fd3577c63ffaa7a19ac14bdff8ff22610 /include | |
parent | d103cc99e36e0579c3891f6f8e9666bf9fa0f44d (diff) | |
download | dynld-6b6c7ca4f4cce33595b4187f23d4003aecef47f6.tar.gz dynld-6b6c7ca4f4cce33595b4187f23d4003aecef47f6.zip |
rename fmt & print functions
Diffstat (limited to 'include')
-rw-r--r-- | include/fmt.h | 77 | ||||
-rw-r--r-- | include/io.h | 10 |
2 files changed, 46 insertions, 41 deletions
diff --git a/include/fmt.h b/include/fmt.h index c74ac4c..f4be0b1 100644 --- a/include/fmt.h +++ b/include/fmt.h @@ -6,42 +6,11 @@ #define ALLOW_UNUSED __attribute__((unused)) -ALLOW_UNUSED -static const char* num2dec(char* buf, unsigned long len, unsigned long long num) { - char* pbuf = buf + len - 1; - *pbuf = '\0'; - - if (num == 0) { - *(--pbuf) = '0'; - } - - while (num > 0 && pbuf != buf) { - char d = (num % 10) + '0'; - *(--pbuf) = d; - num /= 10; - } - return pbuf; -} - -ALLOW_UNUSED -static const char* num2hex(char* buf, unsigned long len, unsigned long long num) { - char* pbuf = buf + len - 1; - *pbuf = '\0'; - - if (num == 0) { - *(--pbuf) = '0'; - } - - while (num > 0 && pbuf != buf) { - char d = (num & 0xf); - *(--pbuf) = d + (d > 9 ? 'a' - 10 : '0'); - num >>= 4; - } - return pbuf; -} +static const char* num2dec(char* buf, unsigned long len, unsigned long long num); +static const char* num2hex(char* buf, unsigned long len, unsigned long long num); ALLOW_UNUSED -static int dynld_vsnprintf(char* buf, unsigned long len, const char* fmt, va_list ap) { +static int vfmt(char* buf, unsigned long len, const char* fmt, va_list ap) { unsigned i = 0; #define put(c) \ @@ -116,10 +85,46 @@ static int dynld_vsnprintf(char* buf, unsigned long len, const char* fmt, va_lis } ALLOW_UNUSED -static int dynld_snprintf(char* buf, unsigned long len, const char* fmt, ...) { +static int fmt(char* buf, unsigned long len, const char* fmt, ...) { va_list ap; va_start(ap, fmt); - int ret = dynld_vsnprintf(buf, len, fmt, ap); + int ret = vfmt(buf, len, fmt, ap); va_end(ap); return ret; } + +/// Internal Helper + +ALLOW_UNUSED +static const char* num2dec(char* buf, unsigned long len, unsigned long long num) { + char* pbuf = buf + len - 1; + *pbuf = '\0'; + + if (num == 0) { + *(--pbuf) = '0'; + } + + while (num > 0 && pbuf != buf) { + char d = (num % 10) + '0'; + *(--pbuf) = d; + num /= 10; + } + return pbuf; +} + +ALLOW_UNUSED +static const char* num2hex(char* buf, unsigned long len, unsigned long long num) { + char* pbuf = buf + len - 1; + *pbuf = '\0'; + + if (num == 0) { + *(--pbuf) = '0'; + } + + while (num > 0 && pbuf != buf) { + char d = (num & 0xf); + *(--pbuf) = d + (d > 9 ? 'a' - 10 : '0'); + num >>= 4; + } + return pbuf; +} diff --git a/include/io.h b/include/io.h index 4b3ea4b..d9a1ae1 100644 --- a/include/io.h +++ b/include/io.h @@ -7,7 +7,7 @@ #include <asm/unistd.h> -// `dynld_printf` uses fixed-size buffer on the stack for formating the message +// `pfmt` uses fixed-size buffer on the stack for formating the message // (since we don't impl buffered I/O). // // Size can be re-configured by defining `MAX_PRINTF_LEN` before including @@ -16,24 +16,24 @@ // NOTE: This allows to specify an arbitrarily large buffer on the stack, but // for the purpose of this study that's fine, we are cautious. #if !defined(MAX_PRINTF_LEN) -# define MAX_PRINTF_LEN 64 +# define MAX_PRINTF_LEN 128 #endif #define FD_STDOUT 1 #define FD_STDERR 2 -int dynld_printf(const char* fmt, ...) { +static int pfmt(const char* fmt, ...) { char buf[MAX_PRINTF_LEN]; va_list ap; va_start(ap, fmt); - int ret = dynld_vsnprintf(buf, sizeof(buf), fmt, ap); + int ret = vfmt(buf, sizeof(buf), fmt, ap); va_end(ap); if (ret > MAX_PRINTF_LEN - 1) { syscall3(__NR_write, FD_STDERR, buf, MAX_PRINTF_LEN - 1); - static const char warn[] = "\ndynld_printf: Message truncated, max length can be configured by defining MAX_PRINTF_LEN\n"; + static const char warn[] = "\npfmt: Message truncated, max length can be configured by defining MAX_PRINTF_LEN\n"; syscall3(__NR_write, FD_STDOUT, warn, sizeof(warn)); return MAX_PRINTF_LEN - 1; } |