Mercurial > hg > octave-nkf > gnulib-hg
changeset 9398:9d8f7facb7a6
Also wrap vf?printf.
* lib/xprintf.h (xvprintf, xvfprintf): New declarations.
* lib/xprintf.c (xprintf, xfprintf): Work for C89.
(xvprintf, xvfprintf): New functions.
Signed-off-by: Eric Blake <ebb9@byu.net>
author | Eric Blake <ebb9@byu.net> |
---|---|
date | Mon, 22 Oct 2007 14:09:16 -0600 |
parents | c61be62e7c72 |
children | ea739bb46da6 |
files | ChangeLog lib/xprintf.c lib/xprintf.h |
diffstat | 3 files changed, 39 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-10-22 Eric Blake <ebb9@byu.net> + + Also wrap vf?printf. + * lib/xprintf.h (xvprintf, xvfprintf): New declarations. + * lib/xprintf.c (xprintf, xfprintf): Work for C89. + (xvprintf, xvfprintf): New functions. + 2007-10-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> * modules/fstrcmp-tests (test_fstrcmp_LDADD): New, add
--- a/lib/xprintf.c +++ b/lib/xprintf.c @@ -19,7 +19,6 @@ #include "xprintf.h" #include <errno.h> -#include <stdarg.h> #include "error.h" #include "exitfail.h" @@ -33,11 +32,22 @@ xprintf (char const *restrict format, ...) { va_list args; + int err; va_start (args, format); + err = xvprintf (format, args); + va_end (args); + + return err; +} + +/* Just like vprintf, but call error if it fails without setting + the error indicator. */ +int +xvprintf (char const *restrict format, va_list args) +{ int err = vprintf (format, args); if (err < 0 && ! ferror (stdout)) error (exit_failure, errno, gettext ("cannot perform formatted output")); - va_end (args); return err; } @@ -48,11 +58,22 @@ xfprintf (FILE *restrict stream, char const *restrict format, ...) { va_list args; + int err; va_start (args, format); - int err = vfprintf (stream, format, args); - if (err < 0 && ! ferror (stream)) - error (exit_failure, errno, gettext ("cannot perform formatted output")); + err = xvfprintf (stream, format, args); va_end (args); return err; } + +/* Just like vfprintf, but call error if it fails without setting + the error indicator. */ +int +xvfprintf (FILE *restrict stream, char const *restrict format, va_list args) +{ + int err = vfprintf (stream, format, args); + if (err < 0 && ! ferror (stream)) + error (exit_failure, errno, gettext ("cannot perform formatted output")); + + return err; +}
--- a/lib/xprintf.h +++ b/lib/xprintf.h @@ -17,6 +17,7 @@ #ifndef _XPRINTF_H #define _XPRINTF_H +#include <stdarg.h> #include <stdio.h> #ifndef __attribute__ @@ -34,7 +35,12 @@ extern int xprintf (char const *restrict format, ...) __attribute__ ((__format__ (__printf__, 1, 2))); +extern int xvprintf (char const *restrict format, va_list args) + __attribute__ ((__format__ (__printf__, 1, 0))); extern int xfprintf (FILE *restrict stream, char const *restrict format, ...) __attribute__ ((__format__ (__printf__, 2, 3))); +extern int xvfprintf (FILE *restrict stream, char const *restrict format, + va_list args) + __attribute__ ((__format__ (__printf__, 2, 0))); #endif