fixed bug 1255403
[fw/sdcc] / device / lib / gbz80 / printf.c
index d584bdb8c201db7d8eb643f75ab261d1120b237c..ddfb020f5fbe33a05b3c865c883f1bd102bb7976 100644 (file)
@@ -7,10 +7,7 @@
 
 #define STATIC
 
-/* PENDING */
-#define NULL   0
-
-STATIC void _printn(unsigned u, unsigned base, char issigned, void (*emitter)(char, void *), void *pData)
+static void _printn(unsigned u, unsigned base, char issigned, void (*emitter)(char, void *), void *pData)
 {
     const char *_hex = "0123456789ABCDEF";
     if (issigned && ((int)u < 0)) {
@@ -50,7 +47,7 @@ STATIC void _printf(const char *format, void (*emitter)(char, void *), void *pDa
                    _printn(u, 16, 0, emitter, pData);
                    break;
                }
-           case 's': 
+           case 's':
                {
                    char *s = va_arg(va, char *);
                    while (*s) {
@@ -87,3 +84,20 @@ int printf(const char *format, ...)
     /* PENDING: What to return? */
     return 0;
 }
+
+STATIC void _buf_emitter(char c, void *pData)
+{
+  *((*((char **)pData)))++ = c;
+}
+
+int sprintf(char *pInto, const char *format, ...)
+{
+    va_list va;
+    va_start(va, format);
+
+    _printf(format, _buf_emitter, &pInto, va);
+    *pInto++ = '\0';
+
+    /* PENDING: What to return? */
+    return 0;
+}