diff options
author | reinelt <reinelt@3ae390bd-cb1e-0410-b409-cd5a39f66f1f> | 2004-04-12 11:12:26 +0000 |
---|---|---|
committer | reinelt <reinelt@3ae390bd-cb1e-0410-b409-cd5a39f66f1f> | 2004-04-12 11:12:26 +0000 |
commit | bbfa7a3b4f1c2d7ec0261eda29154fa6c9849e93 (patch) | |
tree | 7b40872382dd0a5955db5b5aa8371c9d0daff430 /qprintf.c | |
parent | 938a093e5f0b37e95b57f970bbd64f02c7cf57e0 (diff) | |
download | lcd4linux-bbfa7a3b4f1c2d7ec0261eda29154fa6c9849e93.tar.gz |
[lcd4linux @ 2004-04-12 11:12:24 by reinelt]
added plugin_isdn, removed old ISDN client
fixed some real bad bugs in the evaluator
git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@418 3ae390bd-cb1e-0410-b409-cd5a39f66f1f
Diffstat (limited to 'qprintf.c')
-rw-r--r-- | qprintf.c | 41 |
1 files changed, 38 insertions, 3 deletions
@@ -1,4 +1,4 @@ -/* $Id: qprintf.c,v 1.2 2004/04/08 10:48:25 reinelt Exp $ +/* $Id: qprintf.c,v 1.3 2004/04/12 11:12:26 reinelt Exp $ * * simple but quick snprintf() replacement * @@ -26,6 +26,10 @@ * * * $Log: qprintf.c,v $ + * Revision 1.3 2004/04/12 11:12:26 reinelt + * added plugin_isdn, removed old ISDN client + * fixed some real bad bugs in the evaluator + * * Revision 1.2 2004/04/08 10:48:25 reinelt * finished plugin_exec * modified thread handling @@ -84,7 +88,29 @@ static char *itoa(char* buffer, size_t size, int value) } -static char *itox(char* buffer, size_t size, unsigned int value) +static char *utoa(char* buffer, size_t size, unsigned int value) +{ + char *p; + + // sanity checks + if (buffer==NULL || size<2) return (NULL); + + // p points to last char + p = buffer+size-1; + + // set terminating zero + *p='\0'; + + do { + *--p = value%10 + '0'; + value = value/10; + } while (value!=0 && p>buffer); + + return p; +} + + +static char *utox(char* buffer, size_t size, unsigned int value) { char *p; int digit; @@ -148,10 +174,19 @@ int qprintf(char *str, size_t size, const char *format, ...) { *dst++ = *s++; } break; + case 'u': + src++; + u = va_arg(ap, unsigned int); + s = utoa (buf, sizeof(buf), u); + while (len < size && *s != '\0') { + len++; + *dst++ = *s++; + } + break; case 'x': src++; u = va_arg(ap, unsigned int); - s = itox (buf, sizeof(buf), u); + s = utox (buf, sizeof(buf), u); while (len < size && *s != '\0') { len++; *dst++ = *s++; |