Multiuser, Capabilities and Access Controls (#54)
[lunaix-os.git] / lunaix-os / usr / libc / src / _vprintf.c
index 28dea37c7db3c3314ad6a18b8cbac37a187f89f7..7659e28c283586bc31905610cc3cf66a8d03ac6b 100644 (file)
@@ -2,6 +2,7 @@
 #include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
+#include <stdio.h>
 
 #define NUMBUFSIZ 24
 
@@ -111,6 +112,9 @@ __vprintf_internal(char* buffer, const char* fmt, size_t max_len, va_list vargs)
                 flags = flags | FLAG_CAPS;
                 base = 16;
                 goto format_unsigned;
+            case 'o':
+                base = 8;
+                goto format_unsigned;
             case 'p':
                 num = (uintptr_t)va_arg(vargs, void*);
                 base = 16;
@@ -196,3 +200,19 @@ __vprintf_internal(char* buffer, const char* fmt, size_t max_len, va_list vargs)
 
     return ptr;
 }
+
+int
+vsnprintf(char* buffer, unsigned int size, const char* fmt, va_list ap)
+{
+    return __vprintf_internal(buffer, fmt, size, ap);
+}
+
+int
+snprintf(char* buffer, unsigned int size, const char* fmt, ...)
+{
+    va_list l;
+    va_start(l, fmt);
+    int r = __vprintf_internal(buffer, fmt, size, l);
+    va_end(l);
+    return r;
+}
\ No newline at end of file