diff --git a/cpu/native/syscalls.c b/cpu/native/syscalls.c index a7df2b4a342351bdff8f3216df9622f343d89cd5..5ef8efce405003d8de1c072dd7585c30c3380c99 100644 --- a/cpu/native/syscalls.c +++ b/cpu/native/syscalls.c @@ -289,21 +289,33 @@ int printf(const char *format, ...) { int r; va_list argp; - char *m; va_start(argp, format); - if ((m = make_message(format, argp)) == NULL) { - err(EXIT_FAILURE, "malloc"); - } - r = _native_write(STDOUT_FILENO, m, strlen(m)); + r = vfprintf(stdout, format, argp); va_end(argp); - free(m); return r; } int vprintf(const char *format, va_list argp) +{ + return vfprintf(stdout, format, argp); +} + +int fprintf(FILE *fp, const char *format, ...) +{ + int r; + va_list argp; + + va_start(argp, format); + r = vfprintf(fp, format, argp); + va_end(argp); + + return r; +} + +int vfprintf(FILE *fp, const char *format, va_list argp) { int r; char *m; @@ -311,7 +323,7 @@ int vprintf(const char *format, va_list argp) if ((m = make_message(format, argp)) == NULL) { err(EXIT_FAILURE, "malloc"); } - r = _native_write(STDOUT_FILENO, m, strlen(m)); + r = _native_write(fileno(fp), m, strlen(m)); free(m); return r;