diff options
author | Jeff Johnston <jjohnstn@redhat.com> | 2004-11-24 00:45:41 +0000 |
---|---|---|
committer | Jeff Johnston <jjohnstn@redhat.com> | 2004-11-24 00:45:41 +0000 |
commit | 3bf091476a0a544e388e9c8b7aab3371a7d936b5 (patch) | |
tree | ee3f3d8cf1be43b9a056e057e05def630503dace /newlib/libc/stdio/viprintf.c | |
parent | 4b8e88e31d7efb45cddf753611fdb55f70ccdc9d (diff) | |
download | cygnal-3bf091476a0a544e388e9c8b7aab3371a7d936b5.tar.gz cygnal-3bf091476a0a544e388e9c8b7aab3371a7d936b5.tar.bz2 cygnal-3bf091476a0a544e388e9c8b7aab3371a7d936b5.zip |
2004-11-23 Jeff Johnston <jjohnstn@redhat.com>
* libc/include/stdio.h: Add new iprintf and iscanf variants. Also
do some reordering.
* libc/machine/powerpc/vfscanf.c: Remove __sccl function.
* libc/stdio/Makefile.am: Add support for new iprintf and iscanf
family functions.
* libc/stdio/Makefile.in: Regenerated.
* libc/stdio/fiprintf.c: Remove doc to siprintf.c.
* libc/stdio/iprintf.c: Ditto.
* libc/stdio/local.h (__svfiscanf_r): New prototype.
* libc/stdio/siprintf.c: Add docs for various iprintf family functions.
* libc/stdio/sniprintf.c: Move docs to siprintf.c.
* libc/stdio/stdio.tex: Add new functions.
* libc/stdio/vfscanf.c: Split out __sccl function to separate
file and add special name defines so this file can be used
to build vfiscanf.o.
* libc/stdio/asiprintf.c: New file.
* libc/stdio/fiscanf.c: Ditto.
* libc/stdio/iscanf.c: Ditto.
* libc/stdio/sccl.c: Ditto.
* libc/stdio/siscanf.c: Ditto.
* libc/stdio/vasiprintf.c: Ditto.
* libc/stdio/viprintf.c: Ditto.
* libc/stdio/viscanf.c: Ditto.
* libc/stdio/vsiprintf.c: Ditto.
* libc/stdio/vsiscanf.c: Ditto.
* libc/stdio/vsniprintf.c: Ditto.
Diffstat (limited to 'newlib/libc/stdio/viprintf.c')
-rw-r--r-- | newlib/libc/stdio/viprintf.c | 162 |
1 files changed, 162 insertions, 0 deletions
diff --git a/newlib/libc/stdio/viprintf.c b/newlib/libc/stdio/viprintf.c new file mode 100644 index 000000000..523292d39 --- /dev/null +++ b/newlib/libc/stdio/viprintf.c @@ -0,0 +1,162 @@ +/* + * Copyright (c) 1990 The Regents of the University of California. + * All rights reserved. + * + * Redistribution and use in source and binary forms are permitted + * provided that the above copyright notice and this paragraph are + * duplicated in all such forms and that any documentation, + * advertising materials, and other materials related to such + * distribution and use acknowledge that the software was developed + * by the University of California, Berkeley. The name of the + * University may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + */ + +/* +FUNCTION +<<viprintf>>, <<vfiprintf>>, <<vsiprintf>>---format argument list + +INDEX + viprintf +INDEX + vfiprintf +INDEX + vsiprintf +INDEX + vsniprintf + +ANSI_SYNOPSIS + #include <stdio.h> + #include <stdarg.h> + int viprintf(const char *<[fmt]>, va_list <[list]>); + int vfiprintf(FILE *<[fp]>, const char *<[fmt]>, va_list <[list]>); + int vsiprintf(char *<[str]>, const char *<[fmt]>, va_list <[list]>); + int vasiprintf(char **<[strp]>, const char *<[fmt]>, va_list <[list]>); + int vsniprintf(char *<[str]>, size_t <[size]>, const char *<[fmt]>, va_list <[list]>); + + int _viprintf_r(struct _reent *<[reent]>, const char *<[fmt]>, + va_list <[list]>); + int _vfiprintf_r(struct _reent *<[reent]>, FILE *<[fp]>, const char *<[fmt]>, + va_list <[list]>); + int _vasiprintf_r(struct _reent *<[reent]>, char **<[str]>, const char *<[fmt]>, + va_list <[list]>); + int _vsiprintf_r(struct _reent *<[reent]>, char *<[str]>, const char *<[fmt]>, + va_list <[list]>); + int _vsniprintf_r(struct _reent *<[reent]>, char *<[str]>, size_t <[size]>, const char *<[fmt]>, + va_list <[list]>); + +TRAD_SYNOPSIS + #include <stdio.h> + #include <varargs.h> + int viprintf( <[fmt]>, <[list]>) + char *<[fmt]>; + va_list <[list]>; + + int vfiprintf(<[fp]>, <[fmt]>, <[list]>) + FILE *<[fp]>; + char *<[fmt]>; + va_list <[list]>; + + int vasiprintf(<[strp]>, <[fmt]>, <[list]>) + char **<[strp]>; + char *<[fmt]>; + va_list <[list]>; + + int vsiprintf(<[str]>, <[fmt]>, <[list]>) + char *<[str]>; + char *<[fmt]>; + va_list <[list]>; + + int vsniprintf(<[str]>, <[size]>, <[fmt]>, <[list]>) + char *<[str]>; + size_t <[size]>; + char *<[fmt]>; + va_list <[list]>; + + int _viprintf_r(<[reent]>, <[fmt]>, <[list]>) + struct _reent *<[reent]>; + char *<[fmt]>; + va_list <[list]>; + + int _vfiprintf_r(<[reent]>, <[fp]>, <[fmt]>, <[list]>) + struct _reent *<[reent]>; + FILE *<[fp]>; + char *<[fmt]>; + va_list <[list]>; + + int _vasiprintf_r(<[reent]>, <[strp]>, <[fmt]>, <[list]>) + struct _reent *<[reent]>; + char **<[strp]>; + char *<[fmt]>; + va_list <[list]>; + + int _vsiprintf_r(<[reent]>, <[str]>, <[fmt]>, <[list]>) + struct _reent *<[reent]>; + char *<[str]>; + char *<[fmt]>; + va_list <[list]>; + + int _vsniprintf_r(<[reent]>, <[str]>, <[size]>, <[fmt]>, <[list]>) + struct _reent *<[reent]>; + char *<[str]>; + size_t <[size]>; + char *<[fmt]>; + va_list <[list]>; + +DESCRIPTION +<<viprintf>>, <<vfiprintf>>, <<vasiprintf>>, <<vsiprintf>> and +<<vsniprintf>> are (respectively) variants of <<iprintf>>, <<fiprintf>>, +<<asiprintf>>, <<siprintf>>, and <<sniprintf>>. They differ only in +restricting the caller to use non-floating-point format specifiers. + +RETURNS +The return values are consistent with the corresponding functions: +<<vasiprintf>>/<<vsiprintf>> returns the number of bytes in the output string, +save that the concluding <<NULL>> is not counted. +<<viprintf>> and <<vfiprintf>> return the number of characters transmitted. +If an error occurs, <<viprintf>> and <<vfiprintf>> return <<EOF>> and +<<vasiprintf>> returns -1. No error returns occur for <<vsiprintf>>. + +PORTABILITY +<<viprintf>>, <<vfiprintf>>, <<vasiprintf>>, <<vsiprintf>> and <<vsniprintf>> +are newlib extensions. + +Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>, +<<lseek>>, <<read>>, <<sbrk>>, <<write>>. +*/ + +#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 + +int +_DEFUN(viprintf, (fmt, ap), + _CONST char *fmt _AND + va_list ap) +{ + _REENT_SMALL_CHECK_INIT (_stdout_r (_REENT)); + return _vfiprintf_r (_REENT, _stdout_r (_REENT), fmt, ap); +} + +#endif /* !_REENT_ONLY */ + +int +_DEFUN(_viprintf_r, (ptr, fmt, ap), + struct _reent *ptr _AND + _CONST char *fmt _AND + va_list ap) +{ + _REENT_SMALL_CHECK_INIT (_stdout_r (ptr)); + return _vfiprintf_r (ptr, _stdout_r (ptr), fmt, ap); +} |