diff options
-rw-r--r-- | include/stdio.h | 3 | ||||
-rw-r--r-- | lib/libc/stdio.c | 21 |
2 files changed, 21 insertions, 3 deletions
diff --git a/include/stdio.h b/include/stdio.h index ce9c548b..c44a567b 100644 --- a/include/stdio.h +++ b/include/stdio.h @@ -67,6 +67,9 @@ int puts(const char *str); int getc(FILE *fp); int getchar(void); +int fprintf(FILE *fp, const char *fmt, ...); +int vfprintf(FILE *fp, const char *fmt, va_list ap); + __END_CDECLS #endif diff --git a/lib/libc/stdio.c b/lib/libc/stdio.c index 698700b8..51b4ec7f 100644 --- a/lib/libc/stdio.c +++ b/lib/libc/stdio.c @@ -59,14 +59,29 @@ int getchar(void) return getc(stdin); } -int _printf(const char *fmt, ...) +int vfprintf(FILE *fp, const char *fmt, va_list ap) +{ + return fp->vfprintf(fp->ctx, fmt, ap); +} + +int fprintf(FILE *fp, const char *fmt, ...) { + va_list ap; int err; - FILE *fp = stdout; + va_start(ap, fmt); + err = vfprintf(fp, fmt, ap); + va_end(ap); + return err; +} + +int _printf(const char *fmt, ...) +{ va_list ap; + int err; + va_start(ap, fmt); - err = fp->vfprintf(fp->ctx, fmt, ap); + err = vfprintf(stdout, fmt, ap); va_end(ap); return err; |