From 52cb9e6934c1417a03fe20f6be8f479b8f9fb3d5 Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Fri, 20 Apr 2001 22:50:51 +0000 Subject: 2001-04-20 Jeff Johnston * libc/include/stdio.h[!_REENT_ONLY]: Moved various functions together into one list. [!__STRICT_ANSI__]: Moved non-ANSI I/O functions in this list. (vfscanf, vscanf, vsscanf, _vfscanf_r, _vscanf_r, _vsscanf_r): New function prototypes. (_fscanf_r, _sscanf_r): Ditto. * libc/include/stdlib.h: Added _strtod_r prototype. * libc/stdio/Makefile.am: Add new v*scanf functions. * libc/stdio/Makefile.in: Regenerate. * libc/stdio/fscanf.c: Reorganized so HAVE_STDC only affects prototype and code is shared. Added reentrant _fscanf_r which calls __svfscanf_r. * libc/stdio/scanf.c: Changed to call __svfscanf_r. * libc/stdio/sscanf.c: Changed documentation to add reentrant routines. (sscanf): Changed to call __svfscanf_r with _REENT argument. (_sscanf_r): New routine. * libc/stdio/local.h: Removed __svfscanf prototype and replaced it with __svfscanf_r prototype. * libc/stdio/vfscanf.c (vfscanf, _vfscanf_r: New routines. (__svfscanf_r): Reentrant version of __svfscanf which takes reetrancy structure as argument as calls reentrant versions of helper functions (e.g. _strtol_r, _strtoul_r). Also replaced calls to atol and atof to _strtol_r and _strtod_r respectively. * libc/stdio/vfscanf.c: Also changed __svfscanf to call __svfscanf_r. * libc/stdlib/strtod.c (strtod): Changed to call _strtod_r with _REENT argument. * libc/stdio/vscanf.c: New file. * libc/stdio/vsscanf.c: Ditto. --- newlib/libc/stdio/fscanf.c | 45 ++++++++++++++++++++++++++++++++------------- 1 file changed, 32 insertions(+), 13 deletions(-) (limited to 'newlib/libc/stdio/fscanf.c') diff --git a/newlib/libc/stdio/fscanf.c b/newlib/libc/stdio/fscanf.c index 8980410d3..92fc4ea7e 100644 --- a/newlib/libc/stdio/fscanf.c +++ b/newlib/libc/stdio/fscanf.c @@ -19,42 +19,61 @@ #include #ifdef _HAVE_STDC - #include +#else +#include +#endif -extern int __svfscanf (); +#include "local.h" + +#ifndef _REENT_ONLY int -fscanf (FILE * fp, const char *fmt, ...) +#ifdef _HAVE_STDC +fscanf (FILE *fp, const char *fmt, ...) +#else +fscanf (FILE *fp, fmt, va_alist) + FILE *fp; + char *fmt; + va_dcl +#endif { int ret; va_list ap; +#ifdef _HAVE_STDC va_start (ap, fmt); - ret = __svfscanf (fp, fmt, ap); +#else + va_start (ap); +#endif + ret = __svfscanf_r (_REENT, fp, fmt, ap); va_end (ap); return ret; } -#else - -#include - -extern int __svfscanf (); +#endif /* !_REENT_ONLY */ int -fscanf (fp, fmt, va_alist) +#ifdef _HAVE_STDC +_fscanf_r (struct _reent *ptr, FILE *fp, const char *fmt, ...) +#else +_fscanf_r (ptr, FILE *fp, fmt, va_alist) + struct _reent *ptr; FILE *fp; char *fmt; va_dcl +#endif { int ret; va_list ap; +#ifdef _HAVE_STDC + va_start (ap, fmt); +#else va_start (ap); - ret = __svfscanf (fp, fmt, ap); +#endif + ret = __svfscanf_r (ptr, fp, fmt, ap); va_end (ap); - return ret; + return (ret); } -#endif -- cgit v1.2.3