diff options
author | Davi Arnaut <davi@apache.org> | 2007-06-29 15:17:09 +0000 |
---|---|---|
committer | Davi Arnaut <davi@apache.org> | 2007-06-29 15:17:09 +0000 |
commit | 79e46385afd94539d1117a7781e0f8e677a1549c (patch) | |
tree | 7269fe89c7ac5e3edca8abc62ea204d7d9702d4a /strings | |
parent | e61d3c5e233eaabb9e0d4d4d5d4d3f0afb85e49d (diff) | |
download | apr-79e46385afd94539d1117a7781e0f8e677a1549c.tar.gz |
Binary size apr_vformatter as bytes, K, M, T, etc, to a four character compacted
human readable form. Based upon apr_strfsize.
git-svn-id: https://svn.apache.org/repos/asf/apr/apr/trunk@551923 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'strings')
-rw-r--r-- | strings/apr_snprintf.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/strings/apr_snprintf.c b/strings/apr_snprintf.c index 478e11263..5710c73c1 100644 --- a/strings/apr_snprintf.c +++ b/strings/apr_snprintf.c @@ -1239,6 +1239,32 @@ APR_DECLARE(int) apr_vformatter(int (*flush_func)(apr_vformatter_buff_t *), #endif break; + case 'B': + case 'F': + case 'S': + { + char buf[5]; + apr_off_t size = 0; + + if (*fmt == 'B') { + apr_uint32_t *arg = va_arg(ap, apr_uint32_t *); + size = (arg) ? *arg : 0; + } + else if (*fmt == 'F') { + apr_off_t *arg = va_arg(ap, apr_off_t *); + size = (arg) ? *arg : 0; + } + else { + apr_size_t *arg = va_arg(ap, apr_size_t *); + size = (arg) ? *arg : 0; + } + + s = apr_strfsize(size, buf); + s_len = strlen(s); + pad_char = ' '; + } + break; + case NUL: /* if %p ends the string, oh well ignore it */ continue; |