diff options
author | reinelt <reinelt@3ae390bd-cb1e-0410-b409-cd5a39f66f1f> | 2004-04-08 10:48:25 +0000 |
---|---|---|
committer | reinelt <reinelt@3ae390bd-cb1e-0410-b409-cd5a39f66f1f> | 2004-04-08 10:48:25 +0000 |
commit | 9164b31d32e1bf9724a5d6a3b0a3420497a3c8f5 (patch) | |
tree | 9a63ca7ca5300028f833debc12494b2bd70aacbb /qprintf.c | |
parent | 74bdf66969f00d1398c971a7756426e055c24f1a (diff) | |
download | lcd4linux-9164b31d32e1bf9724a5d6a3b0a3420497a3c8f5.tar.gz |
[lcd4linux @ 2004-04-08 10:48:23 by reinelt]
finished plugin_exec
modified thread handling
added '%x' format to qprintf (hexadecimal)
git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@410 3ae390bd-cb1e-0410-b409-cd5a39f66f1f
Diffstat (limited to 'qprintf.c')
-rw-r--r-- | qprintf.c | 41 |
1 files changed, 40 insertions, 1 deletions
@@ -1,4 +1,4 @@ -/* $Id: qprintf.c,v 1.1 2004/02/27 07:06:26 reinelt Exp $ +/* $Id: qprintf.c,v 1.2 2004/04/08 10:48:25 reinelt Exp $ * * simple but quick snprintf() replacement * @@ -26,6 +26,11 @@ * * * $Log: qprintf.c,v $ + * Revision 1.2 2004/04/08 10:48:25 reinelt + * finished plugin_exec + * modified thread handling + * added '%x' format to qprintf (hexadecimal) + * * Revision 1.1 2004/02/27 07:06:26 reinelt * new function 'qprintf()' (simple but quick snprintf() replacement) * @@ -79,6 +84,30 @@ static char *itoa(char* buffer, size_t size, int value) } +static char *itox(char* buffer, size_t size, unsigned int value) +{ + char *p; + int digit; + + // sanity checks + if (buffer==NULL || size<2) return (NULL); + + // p points to last char + p = buffer+size-1; + + // set terminating zero + *p='\0'; + + do { + digit = value%16; + value = value/16; + *--p = (digit < 10 ? '0' : 'a'-10) + digit; + } while (value!=0 && p>buffer); + + return p; +} + + int qprintf(char *str, size_t size, const char *format, ...) { va_list ap; @@ -100,6 +129,7 @@ int qprintf(char *str, size_t size, const char *format, ...) { if (*src=='%') { char buf[12], *s; int d; + unsigned int u; switch (*++src) { case 's': src++; @@ -118,6 +148,15 @@ int qprintf(char *str, size_t size, const char *format, ...) { *dst++ = *s++; } break; + case 'x': + src++; + u = va_arg(ap, unsigned int); + s = itox (buf, sizeof(buf), u); + while (len < size && *s != '\0') { + len++; + *dst++ = *s++; + } + break; default: len++; *dst++ = '%'; |