2007-04-04 Eric Blake <ebb9@byu.net>

* libc/stdio/asiprintf.c (_asiprintf_r): Fix reentrancy.
	(asiprintf): Avoid overhead.
	* libc/stdio/asprintf.c (_asprintf_r): Fix reentrancy.
	(asprintf): Avoid overhead.
	* libc/stdio/diprintf.c (_diprintf_r, diprintf): New file.
	* libc/stdio/dprintf.c (_dprintf_r, dprintf): Use _DEFUN.
	* libc/stdio/fiprintf.c (_fiprintf_r): Add reentrant version.
	(fiprintf): Avoid overhead.
	* libc/stdio/fprintf.c (_fprintf_r): Add reentrant version.
	(fprintf): Avoid overhead.
	* libc/stdio/iprintf.c (_iprintf_r): Use _DEFUN.
	(iprintf): Avoid overhead.
	* libc/stdio/printf.c (_printf_r): Use _DEFUN.
	(printf): Avoid overhead.
	* libc/stdio/vasiprintf.c (vasiprintf): Reduce binary size.
	* libc/stdio/vasprintf.c (vasprintf): Reduce binary size.
	* libc/stdio/vdiprintf.c (_vdiprintf_r, vdiprintf): New file.
	* libc/stdio/vdprintf.c (vdprintf): Avoid overhead.
	* libc/stdio/vsiprintf.c (vsiprintf): Reduce binary size.
	* libc/stdio/vsniprintf.c (vsniprintf): Reduce binary size.
	* libc/stdio/vsnprintf.c (vsnprintf): Reduce binary size.
	* libc/stdio/vsprintf.c (vsprintf): Reduce binary size.
	* libc/stdio/Makefile.am (GENERAL_SOURCES): Add diprintf.c,
	vdiprintf.c.
	* libc/include/stdio.h (diprintf, _diprintf_r, vdiprintf)
	(_vdiprintf_r, _fiprintf_r, _vfiprintf_r): Add prototypes.
This commit is contained in:
Jeff Johnston
2007-04-04 18:32:49 +00:00
parent 26631d2144
commit db7aa4b168
20 changed files with 356 additions and 408 deletions

View File

@ -19,27 +19,15 @@
#include <_ansi.h>
#include <reent.h>
#include <stdio.h>
#ifdef _HAVE_STDC
#include <stdarg.h>
#else
#include <varargs.h>
#endif
#include <limits.h>
#include "local.h"
int
#ifdef _HAVE_STDC
_DEFUN(_asprintf_r, (ptr, strp, fmt),
struct _reent *ptr _AND
char **strp _AND
_CONST char *fmt _DOTS)
#else
_asprintf_r(ptr, strp, fmt, va_alist)
struct _reent *ptr;
char **strp;
_CONST char *fmt;
va_dcl
#endif
const char *fmt _DOTS)
{
int ret;
va_list ap;
@ -50,12 +38,8 @@ _asprintf_r(ptr, strp, fmt, va_alist)
f._bf._base = f._p = NULL;
f._bf._size = f._w = 0;
f._file = -1; /* No file. */
#ifdef _HAVE_STDC
va_start (ap, fmt);
#else
va_start (ap);
#endif
ret = vfprintf (&f, fmt, ap);
ret = _vfprintf_r (ptr, &f, fmt, ap);
va_end (ap);
if (ret >= 0)
{
@ -68,16 +52,9 @@ _asprintf_r(ptr, strp, fmt, va_alist)
#ifndef _REENT_ONLY
int
#ifdef _HAVE_STDC
_DEFUN(asprintf, (strp, fmt),
char **strp _AND
_CONST char *fmt _DOTS)
#else
asprintf(strp, fmt, va_alist)
char **strp;
_CONST char *fmt;
va_dcl
#endif
const char *fmt _DOTS)
{
int ret;
va_list ap;
@ -88,12 +65,8 @@ asprintf(strp, fmt, va_alist)
f._bf._base = f._p = NULL;
f._bf._size = f._w = 0;
f._file = -1; /* No file. */
#ifdef _HAVE_STDC
va_start (ap, fmt);
#else
va_start (ap);
#endif
ret = vfprintf (&f, fmt, ap);
ret = _vfprintf_r (_REENT, &f, fmt, ap);
va_end (ap);
if (ret >= 0)
{
@ -103,4 +76,4 @@ asprintf(strp, fmt, va_alist)
return (ret);
}
#endif
#endif /* ! _REENT_ONLY */