summaryrefslogtreecommitdiff
path: root/strings/apr_snprintf.c
diff options
context:
space:
mode:
authorDavi Arnaut <davi@apache.org>2007-06-29 15:17:09 +0000
committerDavi Arnaut <davi@apache.org>2007-06-29 15:17:09 +0000
commit79e46385afd94539d1117a7781e0f8e677a1549c (patch)
tree7269fe89c7ac5e3edca8abc62ea204d7d9702d4a /strings/apr_snprintf.c
parente61d3c5e233eaabb9e0d4d4d5d4d3f0afb85e49d (diff)
downloadapr-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/apr_snprintf.c')
-rw-r--r--strings/apr_snprintf.c26
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;