diff options
Diffstat (limited to 'newlib/libc/stdio/fscanf.c')
-rw-r--r-- | newlib/libc/stdio/fscanf.c | 45 |
1 files changed, 32 insertions, 13 deletions
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 <stdio.h> #ifdef _HAVE_STDC - #include <stdarg.h> +#else +#include <varargs.h> +#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 <varargs.h> - -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 |