mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-01-15 11:00:04 +08:00
b9db529222
* libc/stdio/Makefile.am (ELIX_SOURCES): Rename... (ELIX_2_SOURCES): ...to this. (ELIX_4_SOURCES): Add new variable. Build asnprintf. (GENERAL_SOURCES): Move dprintf to ELIX_4_SOURCES. (CHEWOUT_FILES): Include diprintf in documentation. * libc/stdio/Makefile.in: Regenerate. * libc/stdio/diprintf.c: Improve documentation. * libc/stdio/dprintf.c: Likewise. * libc/stdio/siprintf.c: Likewise. * libc/stdio/sprintf.c: Likewise. * libc/stdio/vfprintf.c: Likewise. * libc/stdio/viprintf.c: Likewise. * libc/stdio/vsniprintf.c: Consolidate documentation. * libc/stdio/asiprintf.c: Refer to documentation. * libc/stdio/asprintf.c: Likewise. * libc/stdio/fiprintf.c: Likewise. * libc/stdio/fprintf.c: Likewise. * libc/stdio/iprintf.c: Likewise. * libc/stdio/printf.c: Likewise. * libc/stdio/sniprintf.c: Likewise. * libc/stdio/vdiprintf.c: Likewise. * libc/stdio/vdprintf.c: Likewise. * libc/stdio/vsiprintf.c: Likewise. * libc/stdio/fvwrite.c (__sfvwrite_r): Handle asnprintf. * libc/stdio/asniprintf.c (asniprintf, _asniprintf_r): New file. * libc/stdio/asnprintf.c (asnprintf, _asnprintf_r): New file. * libc/stdio/vasniprintf.c (vasniprintf, _vasniprintf_r): New file. * libc/stdio/vasnprintf.c (vasnprintf, _vasnprintf_r): New file. * libc/stdio/vdprintf.c (_vdprintf_r): Rewrite to avoid malloc in typical case. * libc/stdio/vdiprintf.c (_vdiprintf_r): Likewise. * libc/include/stdio.h: Add prototypes for new functions; sort existing functions.
47 lines
913 B
C
47 lines
913 B
C
/* Copyright 2005, 2007 Shaun Jackman
|
|
* Permission to use, copy, modify, and distribute this software
|
|
* is freely granted, provided that this notice is preserved.
|
|
*/
|
|
/* doc in dprintf.c */
|
|
|
|
#include <_ansi.h>
|
|
#include <reent.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <unistd.h>
|
|
#include <stdarg.h>
|
|
|
|
int
|
|
_DEFUN(_vdprintf_r, (ptr, fd, format, ap),
|
|
struct _reent *ptr _AND
|
|
int fd _AND
|
|
const char *format _AND
|
|
va_list ap)
|
|
{
|
|
char *p;
|
|
char buf[512];
|
|
size_t n = sizeof buf;
|
|
|
|
_REENT_SMALL_CHECK_INIT (ptr);
|
|
p = _vasnprintf_r (ptr, buf, &n, format, ap);
|
|
if (!p)
|
|
return -1;
|
|
n = _write_r (ptr, fd, p, n);
|
|
if (p != buf)
|
|
_free_r (ptr, p);
|
|
return n;
|
|
}
|
|
|
|
#ifndef _REENT_ONLY
|
|
|
|
int
|
|
_DEFUN(vdprintf, (fd, format, ap),
|
|
int fd _AND
|
|
const char *format _AND
|
|
va_list ap)
|
|
{
|
|
return _vdprintf_r (_REENT, fd, format, ap);
|
|
}
|
|
|
|
#endif /* ! _REENT_ONLY */
|