aboutsummaryrefslogtreecommitdiffstats
path: root/qprintf.c
diff options
context:
space:
mode:
authorreinelt <reinelt@3ae390bd-cb1e-0410-b409-cd5a39f66f1f>2004-04-12 11:12:26 +0000
committerreinelt <reinelt@3ae390bd-cb1e-0410-b409-cd5a39f66f1f>2004-04-12 11:12:26 +0000
commitbbfa7a3b4f1c2d7ec0261eda29154fa6c9849e93 (patch)
tree7b40872382dd0a5955db5b5aa8371c9d0daff430 /qprintf.c
parent938a093e5f0b37e95b57f970bbd64f02c7cf57e0 (diff)
downloadlcd4linux-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.c41
1 files changed, 38 insertions, 3 deletions
diff --git a/qprintf.c b/qprintf.c
index 6b923ce..4b9a42d 100644
--- a/qprintf.c
+++ b/qprintf.c
@@ -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++;