*printf cleanup

Jeff Johnston jjohnstn@redhat.com
Wed Apr 4 21:05:00 GMT 2007


Patch committed.  Thanks Eric.

-- Jeff J.

Eric Blake wrote:
> Christopher Faylor <cgf-use-the-mailinglist-please <at> sourceware.org> writes:
> 
>> I have a gravely important concern:
>>
>>> - * Copyright (c) 1990 The Regents of the University of California.
>>> + * Copyright (c) 1990, 2007 The Regents of the University of California.
>>>  * All rights reserved.
>> I don't believe that it is appropriate to change the copyright in this
>> fashion since it isn't clear that any changes made to this file would go
>> to the Regents of the University of California.  Probably it should just
>> be left alone.
> 
> I'm not quite sure what the copyright editing rules are in newlib, since 
> IANAL.  I just have an emacs copyright hook, that always checks files for the 
> current year when I edit them.  Here's the same patch, but with all UC 
> copyright hunks omitted (although some of my prior patches have done the same 
> thing, and have already been committed).
> 
>> Otherwise, this kind of fix seems nice, although I haven't looked at it
>> in any great detail.
> 
> Once applied, there is a followup patch to cygwin to export all these functions.
> 
> And I still hope to get around to adding vasnprintf() as well as %a support.
> 
> 
> Index: libc/include/stdio.h
> ===================================================================
> RCS file: /cvs/src/src/newlib/libc/include/stdio.h,v
> retrieving revision 1.41
> diff -u -r1.41 stdio.h
> --- libc/include/stdio.h	30 Mar 2007 00:49:56 -0000	1.41
> +++ libc/include/stdio.h	3 Apr 2007 15:18:17 -0000
> @@ -230,6 +230,7 @@
>  int	_EXFUN(asiprintf, (char **, const char *, ...));
>  int	_EXFUN(asprintf, (char **, const char *, ...));
>  #ifndef dprintf
> +int	_EXFUN(diprintf, (int, const char *, ...));
>  int	_EXFUN(dprintf, (int, const char *, ...));
>  #endif
>  int	_EXFUN(fcloseall, (_VOID));
> @@ -244,6 +245,7 @@
>  char *	_EXFUN(tempnam, (const char *, const char *));
>  int	_EXFUN(vasiprintf, (char **, const char *, __VALIST));
>  int	_EXFUN(vasprintf, (char **, const char *, __VALIST));
> +int	_EXFUN(vdiprintf, (int, const char *, __VALIST));
>  int	_EXFUN(vdprintf, (int, const char *, __VALIST));
>  int	_EXFUN(vsniprintf, (char *, size_t, const char *, __VALIST));
>  int	_EXFUN(vsnprintf, (char *, size_t, const char *, __VALIST));
> @@ -289,13 +291,16 @@
>  
>  int	_EXFUN(_asiprintf_r, (struct _reent *, char **, const char *, ...));
>  int	_EXFUN(_asprintf_r, (struct _reent *, char **, const char *, ...));
> +int	_EXFUN(_diprintf_r, (struct _reent *, int, const char *, ...));
>  int	_EXFUN(_dprintf_r, (struct _reent *, int, const char *, ...));
> +int	_EXFUN(_fclose_r, (struct _reent *, FILE *));
>  int	_EXFUN(_fcloseall_r, (struct _reent *));
>  FILE *	_EXFUN(_fdopen_r, (struct _reent *, int, const char *));
>  FILE *	_EXFUN(_fopen_r, (struct _reent *, const char *, const char *));
> -int	_EXFUN(_fclose_r, (struct _reent *, FILE *));
>  char *  _EXFUN(_fgets_r, (struct _reent *, char *, int, FILE *));
> +int	_EXFUN(_fiprintf_r, (struct _reent *, FILE *, const char *, ...));
>  int	_EXFUN(_fiscanf_r, (struct _reent *, FILE *, const char *, ...));
> +int	_EXFUN(_fprintf_r, (struct _reent *, FILE *, const char *, ...));
>  int	_EXFUN(_fputc_r, (struct _reent *, int, FILE *));
>  int	_EXFUN(_fputs_r, (struct _reent *, const char *, FILE *));
>  size_t	_EXFUN(_fread_r, (struct _reent *, _PTR, size_t _size, size_t _n, FILE 
> *));
> @@ -335,6 +340,7 @@
>  int	_EXFUN(_ungetc_r, (struct _reent *, int, FILE *));
>  int	_EXFUN(_vasiprintf_r, (struct _reent *, char **, const char *, 
> __VALIST));
>  int	_EXFUN(_vasprintf_r, (struct _reent *, char **, const char *, 
> __VALIST));
> +int	_EXFUN(_vdiprintf_r, (struct _reent *, int, const char *, __VALIST));
>  int	_EXFUN(_vdprintf_r, (struct _reent *, int, const char *, __VALIST));
>  int	_EXFUN(_vfiprintf_r, (struct _reent *, FILE *, const char *, __VALIST));
>  int	_EXFUN(_vfprintf_r, (struct _reent *, FILE *, const char *, __VALIST));
> Index: libc/stdio/Makefile.am
> ===================================================================
> RCS file: /cvs/src/src/newlib/libc/stdio/Makefile.am,v
> retrieving revision 1.22
> diff -u -r1.22 Makefile.am
> --- libc/stdio/Makefile.am	1 May 2006 22:01:02 -0000	1.22
> +++ libc/stdio/Makefile.am	3 Apr 2007 15:18:18 -0000
> @@ -6,6 +6,7 @@
>  
>  GENERAL_SOURCES = \
>  	clearerr.c 			\
> +	diprintf.c			\
>  	dprintf.c			\
>  	fclose.c 			\
>  	fdopen.c 			\
> @@ -71,6 +72,7 @@
>  	tmpfile.c 			\
>  	tmpnam.c 			\
>  	ungetc.c 			\
> +	vdiprintf.c			\
>  	vdprintf.c			\
>  	viprintf.c 			\
>  	viscanf.c			\
> @@ -83,7 +85,7 @@
>  	vsprintf.c 			\
>  	vsscanf.c			\
>  	wbuf.c 				\
> -	wsetup.c 
> +	wsetup.c
>  
>  ## The following are EL/IX level 2 interfaces
>  if ELIX_LEVEL_1
> Index: libc/stdio/asiprintf.c
> ===================================================================
> RCS file: /cvs/src/src/newlib/libc/stdio/asiprintf.c,v
> retrieving revision 1.2
> diff -u -r1.2 asiprintf.c
> --- libc/stdio/asiprintf.c	12 Mar 2007 20:30:08 -0000	1.2
> +++ libc/stdio/asiprintf.c	3 Apr 2007 15:18:18 -0000
> @@ -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(_asiprintf_r, (ptr, strp, fmt),
>         struct _reent *ptr _AND
>         char **strp        _AND
> -       _CONST char *fmt _DOTS)
> -#else
> -_asiprintf_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 @@
>    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 = vfiprintf (&f, fmt, ap);
> +  ret = _vfiprintf_r (ptr, &f, fmt, ap);
>    va_end (ap);
>    if (ret >= 0)
>      {
> @@ -68,16 +52,9 @@
>  #ifndef _REENT_ONLY
>  
>  int
> -#ifdef _HAVE_STDC
>  _DEFUN(asiprintf, (strp, fmt),
>         char **strp _AND
> -       _CONST char *fmt _DOTS)
> -#else
> -asiprintf(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 @@
>    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 = vfiprintf (&f, fmt, ap);
> +  ret = _vfiprintf_r (_REENT, &f, fmt, ap);
>    va_end (ap);
>    if (ret >= 0)
>      {
> @@ -103,4 +76,4 @@
>    return (ret);
>  }
>  
> -#endif
> +#endif /* ! _REENT_ONLY */
> Index: libc/stdio/asprintf.c
> ===================================================================
> RCS file: /cvs/src/src/newlib/libc/stdio/asprintf.c,v
> retrieving revision 1.6
> diff -u -r1.6 asprintf.c
> --- libc/stdio/asprintf.c	12 Mar 2007 20:30:08 -0000	1.6
> +++ libc/stdio/asprintf.c	3 Apr 2007 15:18:18 -0000
> @@ -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 @@
>    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 @@
>  #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 @@
>    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 @@
>    return (ret);
>  }
>  
> -#endif
> +#endif /* ! _REENT_ONLY */
> Index: libc/stdio/diprintf.c
> ===================================================================
> RCS file: libc/stdio/diprintf.c
> diff -N libc/stdio/diprintf.c
> --- /dev/null	1 Jan 1970 00:00:00 -0000
> +++ libc/stdio/diprintf.c	3 Apr 2007 15:18:18 -0000
> @@ -0,0 +1,75 @@
> +/* Copyright (C) 2005, 2007 Shaun Jackman
> + * Permission to use, copy, modify, and distribute this software
> + * is freely granted, provided that this notice is preserved.
> + */
> +
> +/*
> +FUNCTION
> +<<diprintf>>, <<vdiprintf>>---print to a file descriptor
> +
> +INDEX
> +	diprintf
> +INDEX
> +	vdiprintf
> +
> +ANSI_SYNOPSIS
> +	#include <stdio.h>
> +	#include <stdarg.h>
> +	int diprintf(int <[fd]>, const char *<[format]>, ...);
> +	int vdiprintf(int <[fd]>, const char *<[format]>, va_list <[ap]>);
> +	int _diprintf_r(struct _reent *<[ptr]>, int <[fd]>,
> +			const char *<[format]>, ...);
> +	int _vidprintf_r(struct _reent *<[ptr]>, int <[fd]>,
> +			const char *<[format]>, va_list <[ap]>);
> +
> +DESCRIPTION
> +<<diprintf>> and <<vdiprintf>> are similar to <<dprintf>> and <<vdprintf>>,
> +except that only integer format specifiers are processed.
> +
> +RETURNS
> +Similar to <<dprintf>> and <<vdprintf>>.
> +
> +PORTABILITY
> +This set of functions is an integer-only extension, and is not portable.
> +
> +Supporting OS subroutines required: <<sbrk>>, <<write>>.
> +*/
> +
> +#include <_ansi.h>
> +#include <reent.h>
> +#include <stdio.h>
> +#include <unistd.h>
> +#include <stdarg.h>
> +
> +int
> +_DEFUN(_diprintf_r, (ptr, fd, format),
> +       struct _reent *ptr _AND
> +       int fd _AND
> +       const char *format _DOTS)
> +{
> +  va_list ap;
> +  int n;
> +
> +  va_start (ap, format);
> +  n = _vdiprintf_r (ptr, fd, format, ap);
> +  va_end (ap);
> +  return n;
> +}
> +
> +#ifndef _REENT_ONLY
> +
> +int
> +_DEFUN(diprintf, (fd, format),
> +       int fd _AND
> +       const char *format _DOTS)
> +{
> +  va_list ap;
> +  int n;
> +
> +  va_start (ap, format);
> +  n = _vdiprintf_r (_REENT, fd, format, ap);
> +  va_end (ap);
> +  return n;
> +}
> +
> +#endif /* ! _REENT_ONLY */
> Index: libc/stdio/dprintf.c
> ===================================================================
> RCS file: /cvs/src/src/newlib/libc/stdio/dprintf.c,v
> retrieving revision 1.1
> diff -u -r1.1 dprintf.c
> --- libc/stdio/dprintf.c	11 Oct 2005 23:59:32 -0000	1.1
> +++ libc/stdio/dprintf.c	3 Apr 2007 15:18:18 -0000
> @@ -1,4 +1,4 @@
> -/* Copyright 2005 Shaun Jackman
> +/* Copyright 2005, 2007 Shaun Jackman
>   * Permission to use, copy, modify, and distribute this software
>   * is freely granted, provided that this notice is preserved.
>   */
> @@ -17,9 +17,9 @@
>  	#include <stdarg.h>
>  	int dprintf(int <[fd]>, const char *<[format]>, ...);
>  	int vdprintf(int <[fd]>, const char *<[format]>, va_list <[ap]>);
> -	int _dprintf_r(struct _reent *<[ptr]>, int <[fd]>, 
> +	int _dprintf_r(struct _reent *<[ptr]>, int <[fd]>,
>  			const char *<[format]>, ...);
> -	int _vdprintf_r(struct _reent *<[ptr]>, int <[fd]>, 
> +	int _vdprintf_r(struct _reent *<[ptr]>, int <[fd]>,
>  			const char *<[format]>, va_list <[ap]>);
>  
>  TRAD_SYNOPSIS
> @@ -68,32 +68,18 @@
>  #include <reent.h>
>  #include <stdio.h>
>  #include <unistd.h>
> -#ifdef _HAVE_STDC
>  #include <stdarg.h>
> -#else
> -#include <varargs.h>
> -#endif
>  
> -#ifdef _HAVE_STDC
>  int
> -_dprintf_r(struct _reent *ptr, int fd, _CONST char *format, ...)
> -#else
> -int
> -_dprintf_r(ptr, fd, format, va_alist)
> -	struct _reent *ptr;
> -	int fd;
> -	char *format;
> -	va_dcl
> -#endif
> +_DEFUN(_dprintf_r, (ptr, fd, format),
> +       struct _reent *ptr _AND
> +       int fd _AND
> +       const char *format _DOTS)
>  {
>  	va_list ap;
>  	int n;
>  	_REENT_SMALL_CHECK_INIT (ptr);
> -#ifdef _HAVE_STDC
> -  	va_start (ap, format);
> -#else
> -  	va_start (ap);
> -#endif
> +	va_start (ap, format);
>  	n = _vdprintf_r (ptr, fd, format, ap);
>  	va_end (ap);
>  	return n;
> @@ -101,29 +87,20 @@
>  
>  #ifndef _REENT_ONLY
>  
> -#ifdef _HAVE_STDC
> -int
> -dprintf(int fd, _CONST char *format, ...)
> -#else
>  int
> -dprintf(fd, format, va_alist)
> -	struct _reent *ptr;
> -	int fd;
> -	char *format;
> -	va_dcl
> -#endif
> +_DEFUN(dprintf, (fd, format),
> +       int fd _AND
> +       const char *format _DOTS)
>  {
> -	va_list ap;
> -	int n;
> -	_REENT_SMALL_CHECK_INIT (_REENT);
> -#ifdef _HAVE_STDC
> -  	va_start (ap, format);
> -#else
> -  	va_start (ap);
> -#endif
> -	n = _vdprintf_r (_REENT, fd, format, ap);
> -	va_end (ap);
> -	return n;
> +  va_list ap;
> +  int n;
> +  struct _reent *ptr = _REENT;
> +
> +  _REENT_SMALL_CHECK_INIT (ptr);
> +  va_start (ap, format);
> +  n = _vdprintf_r (ptr, fd, format, ap);
> +  va_end (ap);
> +  return n;
>  }
>  
>  #endif /* ! _REENT_ONLY */
> Index: libc/stdio/fiprintf.c
> ===================================================================
> RCS file: /cvs/src/src/newlib/libc/stdio/fiprintf.c,v
> retrieving revision 1.4
> diff -u -r1.4 fiprintf.c
> --- libc/stdio/fiprintf.c	24 Nov 2004 00:45:41 -0000	1.4
> +++ libc/stdio/fiprintf.c	3 Apr 2007 15:18:18 -0000
> @@ -16,33 +16,39 @@
>   */
>  
>  #include <_ansi.h>
> +#include <reent.h>
>  #include <stdio.h>
> -#ifdef _HAVE_STDC
>  #include <stdarg.h>
> -#else
> -#include <varargs.h>
> -#endif
>  
> -#ifdef _HAVE_STDC
>  int
> -fiprintf(FILE * fp, _CONST char *fmt,...)
> -#else
> +_DEFUN(_fiprintf_r, (ptr, fp, fmt),
> +       struct _reent *ptr _AND
> +       FILE * fp _AND
> +       const char *fmt _DOTS)
> +{
> +  int ret;
> +  va_list ap;
> +
> +  va_start (ap, fmt);
> +  ret = _vfiprintf_r (ptr, fp, fmt, ap);
> +  va_end (ap);
> +  return ret;
> +}
> +
> +#ifndef _REENT_ONLY
> +
>  int
> -fiprintf(fp, fmt, va_alist)
> -         FILE *fp;
> -         char *fmt;
> -         va_dcl
> -#endif
> +_DEFUN(fiprintf, (fp, fmt),
> +       FILE * fp _AND
> +       const char *fmt _DOTS)
>  {
>    int ret;
>    va_list ap;
>  
> -#ifdef _HAVE_STDC
>    va_start (ap, fmt);
> -#else
> -  va_start (ap);
> -#endif
> -  ret = vfiprintf (fp, fmt, ap);
> +  ret = _vfiprintf_r (_REENT, fp, fmt, ap);
>    va_end (ap);
>    return ret;
>  }
> +
> +#endif /* ! _REENT_ONLY */
> Index: libc/stdio/fprintf.c
> ===================================================================
> RCS file: /cvs/src/src/newlib/libc/stdio/fprintf.c,v
> retrieving revision 1.3
> diff -u -r1.3 fprintf.c
> --- libc/stdio/fprintf.c	23 Apr 2004 20:01:55 -0000	1.3
> +++ libc/stdio/fprintf.c	3 Apr 2007 15:18:18 -0000
> @@ -16,33 +16,39 @@
>   */
>  
>  #include <_ansi.h>
> +#include <reent.h>
>  #include <stdio.h>
> -#ifdef _HAVE_STDC
>  #include <stdarg.h>
> -#else
> -#include <varargs.h>
> -#endif
>  
> -#ifdef _HAVE_STDC
>  int
> -fprintf(FILE * fp, _CONST char *fmt,...)
> -#else
> +_DEFUN(_fprintf_r, (ptr, fp, fmt),
> +       struct _reent *ptr _AND
> +       FILE *fp _AND
> +       const char *fmt _DOTS)
> +{
> +  int ret;
> +  va_list ap;
> +
> +  va_start (ap, fmt);
> +  ret = _vfprintf_r (ptr, fp, fmt, ap);
> +  va_end (ap);
> +  return ret;
> +}
> +
> +#ifndef _REENT_ONLY
> +
>  int
> -fprintf(fp, fmt, va_alist)
> -        FILE *fp;
> -        char *fmt;
> -        va_dcl
> -#endif
> +_DEFUN(fprintf, (fp, fmt),
> +       FILE *fp _AND
> +       const char *fmt _DOTS)
>  {
>    int ret;
>    va_list ap;
>  
> -#ifdef _HAVE_STDC
>    va_start (ap, fmt);
> -#else
> -  va_start (ap);
> -#endif
> -  ret = vfprintf (fp, fmt, ap);
> +  ret = _vfprintf_r (_REENT, fp, fmt, ap);
>    va_end (ap);
>    return ret;
>  }
> +
> +#endif /* ! _REENT_ONLY */
> Index: libc/stdio/iprintf.c
> ===================================================================
> RCS file: /cvs/src/src/newlib/libc/stdio/iprintf.c,v
> retrieving revision 1.7
> diff -u -r1.7 iprintf.c
> --- libc/stdio/iprintf.c	8 Feb 2005 01:33:17 -0000	1.7
> +++ libc/stdio/iprintf.c	3 Apr 2007 15:18:18 -0000
> @@ -18,63 +18,39 @@
>  #include <_ansi.h>
>  #include <reent.h>
>  #include <stdio.h>
> -#ifdef _HAVE_STDC
>  #include <stdarg.h>
> -#else
> -#include <varargs.h>
> -#endif
>  #include "local.h"
>  
>  #ifndef _REENT_ONLY
>  
> -#ifdef _HAVE_STDC
>  int
> -iprintf(_CONST char *fmt,...)
> -#else
> -int
> -iprintf(fmt, va_alist)
> -        char *fmt;
> -        va_dcl
> -#endif
> +_DEFUN(iprintf, (fmt),
> +       const char *fmt _DOTS)
>  {
>    int ret;
>    va_list ap;
> +  struct _reent *ptr = _REENT;
>  
> -  _REENT_SMALL_CHECK_INIT (_REENT);
> -#ifdef _HAVE_STDC
> +  _REENT_SMALL_CHECK_INIT (ptr);
>    va_start (ap, fmt);
> -#else
> -  va_start (ap);
> -#endif
> -  ret = vfiprintf (stdout, fmt, ap);
> +  ret = _vfiprintf_r (ptr, _stdout_r (ptr), fmt, ap);
>    va_end (ap);
>    return ret;
>  }
>  
>  #endif /* ! _REENT_ONLY */
>  
> -#ifdef _HAVE_STDC
>  int
> -_iprintf_r(struct _reent *ptr, _CONST char *fmt, ...)
> -#else
> -int
> -_iprintf_r(ptr, fmt, va_alist)
> -           struct _reent *ptr;
> -           char *fmt;
> -           va_dcl
> -#endif
> +_DEFUN(_iprintf_r, (ptr, fmt),
> +       struct _reent *ptr _AND
> +       const char *fmt _DOTS)
>  {
>    int ret;
>    va_list ap;
>  
>    _REENT_SMALL_CHECK_INIT (ptr);
> -#ifdef _HAVE_STDC
>    va_start (ap, fmt);
> -#else
> -  va_start (ap);
> -#endif
>    ret = _vfiprintf_r (ptr, _stdout_r (ptr), fmt, ap);
>    va_end (ap);
>    return ret;
>  }
> -
> Index: libc/stdio/printf.c
> ===================================================================
> RCS file: /cvs/src/src/newlib/libc/stdio/printf.c,v
> retrieving revision 1.5
> diff -u -r1.5 printf.c
> --- libc/stdio/printf.c	8 Feb 2005 01:33:17 -0000	1.5
> +++ libc/stdio/printf.c	3 Apr 2007 15:18:18 -0000
> @@ -18,33 +18,19 @@
>  #include <_ansi.h>
>  #include <reent.h>
>  #include <stdio.h>
> -#ifdef _HAVE_STDC
>  #include <stdarg.h>
> -#else
> -#include <varargs.h>
> -#endif
>  #include "local.h"
>  
> -#ifdef _HAVE_STDC
>  int
> -_printf_r(struct _reent *ptr, _CONST char *fmt, ...)
> -#else
> -int
> -_printf_r(ptr, fmt, va_alist)
> -          struct _reent *ptr;
> -          char *fmt;
> -          va_dcl
> -#endif
> +_DEFUN(_printf_r, (ptr, fmt),
> +       struct _reent *ptr _AND
> +       const char *fmt _DOTS)
>  {
>    int ret;
>    va_list ap;
>  
>    _REENT_SMALL_CHECK_INIT (ptr);
> -#ifdef _HAVE_STDC
>    va_start (ap, fmt);
> -#else
> -  va_start (ap);
> -#endif
>    ret = _vfprintf_r (ptr, _stdout_r (ptr), fmt, ap);
>    va_end (ap);
>    return ret;
> @@ -52,26 +38,17 @@
>  
>  #ifndef _REENT_ONLY
>  
> -#ifdef _HAVE_STDC
> -int
> -printf(_CONST char *fmt, ...)
> -#else
>  int
> -printf(fmt, va_alist)
> -       char *fmt;
> -       va_dcl
> -#endif
> +_DEFUN(printf, (fmt),
> +       const char *fmt _DOTS)
>  {
>    int ret;
>    va_list ap;
> +  struct _reent *ptr = _REENT;
>  
> -  _REENT_SMALL_CHECK_INIT (_REENT);
> -#ifdef _HAVE_STDC
> +  _REENT_SMALL_CHECK_INIT (ptr);
>    va_start (ap, fmt);
> -#else
> -  va_start (ap);
> -#endif
> -  ret = vfprintf (_stdout_r (_REENT), fmt, ap);
> +  ret = _vfprintf_r (ptr, _stdout_r (ptr), fmt, ap);
>    va_end (ap);
>    return ret;
>  }
> Index: libc/stdio/vasiprintf.c
> ===================================================================
> RCS file: /cvs/src/src/newlib/libc/stdio/vasiprintf.c,v
> retrieving revision 1.2
> diff -u -r1.2 vasiprintf.c
> --- libc/stdio/vasiprintf.c	12 Mar 2007 20:30:08 -0000	1.2
> +++ libc/stdio/vasiprintf.c	3 Apr 2007 15:18:18 -0000
> @@ -24,34 +24,17 @@
>  #include <_ansi.h>
>  #include <stdio.h>
>  #include <limits.h>
> -#ifdef _HAVE_STDC
>  #include <stdarg.h>
> -#else
> -#include <varargs.h>
> -#endif
>  
>  #ifndef _REENT_ONLY
>  
>  int
>  _DEFUN(vasiprintf, (strp, fmt, ap),
>         char **strp      _AND
> -       _CONST char *fmt _AND
> +       const char *fmt _AND
>         va_list ap)
>  {
> -  int ret;
> -  FILE f;
> -
> -  f._flags = __SWR | __SSTR | __SMBF;
> -  f._bf._base = f._p = NULL;
> -  f._bf._size = f._w = 0;
> -  f._file = -1;  /* No file. */
> -  ret = _vfiprintf_r (_REENT, &f, fmt, ap);
> -  if (ret >= 0)
> -    {
> -      *f._p = 0;
> -      *strp = f._bf._base;
> -    }
> -  return ret;
> +  return _vasiprintf_r (_REENT, strp, fmt, ap);
>  }
>  
>  #endif /* !_REENT_ONLY */
> @@ -60,7 +43,7 @@
>  _DEFUN(_vasiprintf_r, (ptr, strp, fmt, ap),
>         struct _reent *ptr _AND
>         char **strp        _AND
> -       _CONST char *fmt   _AND
> +       const char *fmt   _AND
>         va_list ap)
>  {
>    int ret;
> Index: libc/stdio/vasprintf.c
> ===================================================================
> RCS file: /cvs/src/src/newlib/libc/stdio/vasprintf.c,v
> retrieving revision 1.5
> diff -u -r1.5 vasprintf.c
> --- libc/stdio/vasprintf.c	12 Mar 2007 20:30:08 -0000	1.5
> +++ libc/stdio/vasprintf.c	3 Apr 2007 15:18:18 -0000
> @@ -24,34 +24,17 @@
>  #include <_ansi.h>
>  #include <stdio.h>
>  #include <limits.h>
> -#ifdef _HAVE_STDC
>  #include <stdarg.h>
> -#else
> -#include <varargs.h>
> -#endif
>  
>  #ifndef _REENT_ONLY
>  
>  int
>  _DEFUN(vasprintf, (strp, fmt, ap),
>         char **strp      _AND
> -       _CONST char *fmt _AND
> +       const char *fmt _AND
>         va_list ap)
>  {
> -  int ret;
> -  FILE f;
> -
> -  f._flags = __SWR | __SSTR | __SMBF;
> -  f._bf._base = f._p = NULL;
> -  f._bf._size = f._w = 0;
> -  f._file = -1;  /* No file. */
> -  ret = _vfprintf_r (_REENT, &f, fmt, ap);
> -  if (ret >= 0)
> -    {
> -      *f._p = 0;
> -      *strp = f._bf._base;
> -    }
> -  return ret;
> +  return _vasprintf_r (_REENT, strp, fmt, ap);
>  }
>  
>  #endif /* !_REENT_ONLY */
> @@ -60,7 +43,7 @@
>  _DEFUN(_vasprintf_r, (ptr, strp, fmt, ap),
>         struct _reent *ptr _AND
>         char **strp        _AND
> -       _CONST char *fmt   _AND
> +       const char *fmt   _AND
>         va_list ap)
>  {
>    int ret;
> Index: libc/stdio/vdiprintf.c
> ===================================================================
> RCS file: libc/stdio/vdiprintf.c
> diff -N libc/stdio/vdiprintf.c
> --- /dev/null	1 Jan 1970 00:00:00 -0000
> +++ libc/stdio/vdiprintf.c	3 Apr 2007 15:18:18 -0000
> @@ -0,0 +1,42 @@
> +/* Copyright 2005, 2007 Shaun Jackman
> + * Permission to use, copy, modify, and distribute this software
> + * is freely granted, provided that this notice is preserved.
> + */
> +
> +#include <_ansi.h>
> +#include <reent.h>
> +#include <stdio.h>
> +#include <stdlib.h>
> +#include <unistd.h>
> +#include <stdarg.h>
> +
> +int
> +_DEFUN(_vdiprintf_r, (ptr, fd, format, ap),
> +       struct _reent *ptr _AND
> +       int fd _AND
> +       const char *format _AND
> +       va_list ap)
> +{
> +  char *p;
> +  int n;
> +
> +  _REENT_SMALL_CHECK_INIT (ptr);
> +  n = _vasiprintf_r (ptr, &p, format, ap);
> +  if (n == -1) return -1;
> +  n = _write_r (ptr, fd, p, n);
> +  _free_r (ptr, p);
> +  return n;
> +}
> +
> +#ifndef _REENT_ONLY
> +
> +int
> +_DEFUN(vdiprintf, (fd, format, ap),
> +       int fd _AND
> +       const char *format _AND
> +       va_list ap)
> +{
> +  return _vdiprintf_r (_REENT, fd, format, ap);
> +}
> +
> +#endif /* ! _REENT_ONLY */
> Index: libc/stdio/vdprintf.c
> ===================================================================
> RCS file: /cvs/src/src/newlib/libc/stdio/vdprintf.c,v
> retrieving revision 1.1
> diff -u -r1.1 vdprintf.c
> --- libc/stdio/vdprintf.c	11 Oct 2005 23:59:32 -0000	1.1
> +++ libc/stdio/vdprintf.c	3 Apr 2007 15:18:18 -0000
> @@ -1,4 +1,4 @@
> -/* Copyright 2005 Shaun Jackman
> +/* Copyright 2005, 2007 Shaun Jackman
>   * Permission to use, copy, modify, and distribute this software
>   * is freely granted, provided that this notice is preserved.
>   */
> @@ -8,39 +8,36 @@
>  #include <stdio.h>
>  #include <stdlib.h>
>  #include <unistd.h>
> -#ifdef _HAVE_STDC
>  #include <stdarg.h>
> -#else
> -#include <varargs.h>
> -#endif
>  
>  int
> -_DEFUN (_vdprintf_r, (ptr, fd, format, ap),
> -	struct _reent *ptr _AND
> -	int fd _AND
> -	_CONST char *format _AND
> -	va_list ap)
> +_DEFUN(_vdprintf_r, (ptr, fd, format, ap),
> +       struct _reent *ptr _AND
> +       int fd _AND
> +       const char *format _AND
> +       va_list ap)
>  {
> -	char *p;
> -	int n;
> -	_REENT_SMALL_CHECK_INIT (ptr);
> -	n = _vasprintf_r (ptr, &p, format, ap);
> -	if (n == -1) return -1;
> -	n = _write_r (ptr, fd, p, n);
> -	_free_r (ptr, p);
> -	return n;
> +  char *p;
> +  int n;
> +
> +  _REENT_SMALL_CHECK_INIT (ptr);
> +  n = _vasprintf_r (ptr, &p, format, ap);
> +  if (n == -1)
> +    return -1;
> +  n = _write_r (ptr, fd, p, n);
> +  _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)
> +int
> +_DEFUN(vdprintf, (fd, format, ap),
> +       int fd _AND
> +       const char *format _AND
> +       va_list ap)
>  {
> -	_REENT_SMALL_CHECK_INIT (_REENT);
> -	return _vdprintf_r (_REENT, fd, format, ap);
> +  return _vdprintf_r (_REENT, fd, format, ap);
>  }
>  
>  #endif /* ! _REENT_ONLY */
> Index: libc/stdio/vsiprintf.c
> ===================================================================
> RCS file: /cvs/src/src/newlib/libc/stdio/vsiprintf.c,v
> retrieving revision 1.1
> diff -u -r1.1 vsiprintf.c
> --- libc/stdio/vsiprintf.c	24 Nov 2004 00:45:41 -0000	1.1
> +++ libc/stdio/vsiprintf.c	3 Apr 2007 15:18:18 -0000
> @@ -24,30 +24,17 @@
>  #include <reent.h>
>  #include <stdio.h>
>  #include <limits.h>
> -#ifdef _HAVE_STDC
>  #include <stdarg.h>
> -#else
> -#include <varargs.h>
> -#endif
>  
> -#ifndef _REENT_ONLY 
> +#ifndef _REENT_ONLY
>  
>  int
>  _DEFUN(vsiprintf, (str, fmt, ap),
>         char *str        _AND
> -       _CONST char *fmt _AND
> +       const char *fmt _AND
>         va_list ap)
>  {
> -  int ret;
> -  FILE f;
> -
> -  f._flags = __SWR | __SSTR;
> -  f._bf._base = f._p = (unsigned char *) str;
> -  f._bf._size = f._w = INT_MAX;
> -  f._file = -1;  /* No file. */
> -  ret = _vfiprintf_r (_REENT, &f, fmt, ap);
> -  *f._p = 0;
> -  return ret;
> +  return _vsiprintf_r (_REENT, str, fmt, ap);
>  }
>  
>  #endif /* !_REENT_ONLY */
> @@ -56,7 +43,7 @@
>  _DEFUN(_vsiprintf_r, (ptr, str, fmt, ap),
>         struct _reent *ptr _AND
>         char *str          _AND
> -       _CONST char *fmt   _AND
> +       const char *fmt   _AND
>         va_list ap)
>  {
>    int ret;
> @@ -70,4 +57,3 @@
>    *f._p = 0;
>    return ret;
>  }
> -
> Index: libc/stdio/vsniprintf.c
> ===================================================================
> RCS file: /cvs/src/src/newlib/libc/stdio/vsniprintf.c,v
> retrieving revision 1.2
> diff -u -r1.2 vsniprintf.c
> --- libc/stdio/vsniprintf.c	15 Mar 2007 18:40:48 -0000	1.2
> +++ libc/stdio/vsniprintf.c	3 Apr 2007 15:18:18 -0000
> @@ -63,11 +63,7 @@
>  #include <reent.h>
>  #include <stdio.h>
>  #include <limits.h>
> -#ifdef _HAVE_STDC
>  #include <stdarg.h>
> -#else
> -#include <varargs.h>
> -#endif
>  #include <errno.h>
>  
>  #ifndef _REENT_ONLY
> @@ -76,28 +72,10 @@
>  _DEFUN(vsniprintf, (str, size, fmt, ap),
>         char *str        _AND
>         size_t size      _AND
> -       _CONST char *fmt _AND
> +       const char *fmt _AND
>         va_list ap)
>  {
> -  int ret;
> -  FILE f;
> -  struct _reent *ptr = _REENT;
> -
> -  if (size > INT_MAX)
> -    {
> -      ptr->_errno = EOVERFLOW;
> -      return EOF;
> -    }
> -  f._flags = __SWR | __SSTR;
> -  f._bf._base = f._p = (unsigned char *) str;
> -  f._bf._size = f._w = (size > 0 ? size - 1 : 0);
> -  f._file = -1;  /* No file. */
> -  ret = _vfiprintf_r (ptr, &f, fmt, ap);
> -  if (ret < EOF)
> -    ptr->_errno = EOVERFLOW;
> -  if (size > 0)
> -    *f._p = 0;
> -  return ret;
> +  return _vsniprintf_r (_REENT, str, size, fmt, ap);
>  }
>  
>  #endif /* !_REENT_ONLY */
> @@ -107,7 +85,7 @@
>         struct _reent *ptr _AND
>         char *str          _AND
>         size_t size        _AND
> -       _CONST char *fmt   _AND
> +       const char *fmt   _AND
>         va_list ap)
>  {
>    int ret;
> Index: libc/stdio/vsnprintf.c
> ===================================================================
> RCS file: /cvs/src/src/newlib/libc/stdio/vsnprintf.c,v
> retrieving revision 1.7
> diff -u -r1.7 vsnprintf.c
> --- libc/stdio/vsnprintf.c	15 Mar 2007 18:40:48 -0000	1.7
> +++ libc/stdio/vsnprintf.c	3 Apr 2007 15:18:18 -0000
> @@ -24,11 +24,7 @@
>  #include <reent.h>
>  #include <stdio.h>
>  #include <limits.h>
> -#ifdef _HAVE_STDC
>  #include <stdarg.h>
> -#else
> -#include <varargs.h>
> -#endif
>  #include <errno.h>
>  
>  #ifndef _REENT_ONLY
> @@ -37,28 +33,10 @@
>  _DEFUN(vsnprintf, (str, size, fmt, ap),
>         char *str        _AND
>         size_t size      _AND
> -       _CONST char *fmt _AND
> +       const char *fmt _AND
>         va_list ap)
>  {
> -  int ret;
> -  FILE f;
> -  struct _reent *ptr = _REENT;
> -
> -  if (size > INT_MAX)
> -    {
> -      ptr->_errno = EOVERFLOW;
> -      return EOF;
> -    }
> -  f._flags = __SWR | __SSTR;
> -  f._bf._base = f._p = (unsigned char *) str;
> -  f._bf._size = f._w = (size > 0 ? size - 1 : 0);
> -  f._file = -1;  /* No file. */
> -  ret = _vfprintf_r (ptr, &f, fmt, ap);
> -  if (ret < EOF)
> -    ptr->_errno = EOVERFLOW;
> -  if (size > 0)
> -    *f._p = 0;
> -  return ret;
> +  return _vsnprintf_r (_REENT, str, size, fmt, ap);
>  }
>  
>  #endif /* !_REENT_ONLY */
> @@ -68,7 +46,7 @@
>         struct _reent *ptr _AND
>         char *str          _AND
>         size_t size        _AND
> -       _CONST char *fmt   _AND
> +       const char *fmt   _AND
>         va_list ap)
>  {
>    int ret;
> Index: libc/stdio/vsprintf.c
> ===================================================================
> RCS file: /cvs/src/src/newlib/libc/stdio/vsprintf.c,v
> retrieving revision 1.5
> diff -u -r1.5 vsprintf.c
> --- libc/stdio/vsprintf.c	23 Apr 2004 20:01:55 -0000	1.5
> +++ libc/stdio/vsprintf.c	3 Apr 2007 15:18:18 -0000
> @@ -24,30 +24,17 @@
>  #include <reent.h>
>  #include <stdio.h>
>  #include <limits.h>
> -#ifdef _HAVE_STDC
>  #include <stdarg.h>
> -#else
> -#include <varargs.h>
> -#endif
>  
> -#ifndef _REENT_ONLY 
> +#ifndef _REENT_ONLY
>  
>  int
>  _DEFUN(vsprintf, (str, fmt, ap),
>         char *str        _AND
> -       _CONST char *fmt _AND
> +       const char *fmt _AND
>         va_list ap)
>  {
> -  int ret;
> -  FILE f;
> -
> -  f._flags = __SWR | __SSTR;
> -  f._bf._base = f._p = (unsigned char *) str;
> -  f._bf._size = f._w = INT_MAX;
> -  f._file = -1;  /* No file. */
> -  ret = _vfprintf_r (_REENT, &f, fmt, ap);
> -  *f._p = 0;
> -  return ret;
> +  return _vsprintf_r (_REENT, str, fmt, ap);
>  }
>  
>  #endif /* !_REENT_ONLY */
> @@ -56,7 +43,7 @@
>  _DEFUN(_vsprintf_r, (ptr, str, fmt, ap),
>         struct _reent *ptr _AND
>         char *str          _AND
> -       _CONST char *fmt   _AND
> +       const char *fmt   _AND
>         va_list ap)
>  {
>    int ret;
> @@ -70,4 +57,3 @@
>    *f._p = 0;
>    return ret;
>  }
> -
> 
> 



More information about the Newlib mailing list