libbase: Adding missing vprintf function.
authorTim 'mithro' Ansell <mithro@mithis.com>
Sun, 30 Oct 2016 05:14:59 +0000 (16:14 +1100)
committerTim 'mithro' Ansell <mithro@mithis.com>
Sun, 30 Oct 2016 05:25:06 +0000 (16:25 +1100)
Fixes #8.

```
int vprintf(const char *format, va_list ap);

The functions vprintf(), vfprintf(), vsprintf(), vsnprintf() are equivalent to
the functions printf(), fprintf(), sprintf(), snprintf(), respectively, except
that  they  are  called  with  a  va_list instead of a variable number of
arguments.
```

litex/soc/software/include/base/stdarg.h
litex/soc/software/libbase/console.c

index 6df509304bb9f8778f75051a6c83cc9e4bc6ea77..08729e47c8b50ee66d9f9434faf09d1209b89a62 100644 (file)
@@ -16,6 +16,7 @@ extern "C" {
 int vsnprintf(char *buf, size_t size, const char *fmt, va_list args);
 int vscnprintf(char *buf, size_t size, const char *fmt, va_list args);
 int vsprintf(char *buf, const char *fmt, va_list args);
+int vprintf(const char *format, va_list ap);
 
 #ifdef __cplusplus
 }
index 17274e2290fe9239e464d808c7eef00bb492dd20..45fbc574ea543b548b71494a94a660eb7f95085f 100644 (file)
@@ -64,17 +64,22 @@ void putsnonl(const char *s)
 
 #define PRINTF_BUFFER_SIZE 256
 
-int printf(const char *fmt, ...)
+int vprintf(const char *fmt, va_list args)
 {
-       va_list args;
        int len;
        char outbuf[PRINTF_BUFFER_SIZE];
-
-       va_start(args, fmt);
        len = vscnprintf(outbuf, sizeof(outbuf), fmt, args);
-       va_end(args);
        outbuf[len] = 0;
        putsnonl(outbuf);
+       return len;
+}
 
+int printf(const char *fmt, ...)
+{
+       int len;
+       va_list args;
+       va_start(args, fmt);
+       len = vprintf(fmt, args);
+       va_end(args);
        return len;
 }