From e5e148d15bacc36f205aa49edea0fc53df2a38c0 Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Tue, 26 Sep 2006 21:22:19 +0000 Subject: [PATCH] 2006-09-26 Jeff Johnston * libc/include/stdio.h[_REENT_SMALL]: Do not allow macros for clearerr, feof, or fileno. * libc/include/sys/reent.h[_REENT_SMALL](struct _reent): Change the dummy std stream scheme to use pointers to const external fake files, one for each standard stream. * libc/stdio/local.h (CHECK_INIT): Change to take a file pointer argument. For _REENT_SMALL, reset the file pointer if it matches one of the fake std stream pointers. * libc/stdio/clearerr.c: Fix CHECK_INIT macro to add file pointer argument. * libc/stdio/fclose.c: Ditto. * libc/stdio/feof.c: Ditto. * libc/stdio/ferror.c: Ditto. * libc/stdio/fflush.c: Ditto. * libc/stdio/fgetc.c: Ditto. * libc/stdio/fgets.c: Ditto. * libc/stdio/fileno.c: Ditto. * libc/stdio/findfp.c: Ditto. * libc/stdio/fputc.c: Ditto. * libc/stdio/fputs.c: Ditto. * libc/stdio/fread.c: Ditto. * libc/stdio/freopen.c: Ditto. * libc/stdio/fseek.c: Ditto. * libc/stdio/ftell.c: Ditto. * libc/stdio/fwrite.c: Ditto. * libc/stdio/getc.c: Ditto. * libc/stdio/getdelim.c: Ditto. * libc/stdio/putc.c: Ditto. * libc/stdio/refill.c: Ditto. * libc/stdio/setvbuf.c: Ditto. * libc/stdio/ungetc.c: Ditto. * libc/stdio/vfprintf.c: Ditto. * libc/stdio/vfscanf.c: Ditto. * libc/stdio/wbuf.c: Ditto.: Ditto. * libc/stdio/wsetup.c: Ditto. * libc/stdio64/freopen64.c: Ditto. * libc/stdio64/fseeko64.c: Ditto. * libc/stdio64/ftello64.c: Ditto. * libc/machine/powerpc/vfprintf.c: Ditto. * libc/machine/powerpc/vfscanf.c: Ditto. --- newlib/ChangeLog | 43 ++++++++++++++++++++++++++ newlib/libc/include/stdio.h | 2 ++ newlib/libc/include/sys/reent.h | 35 +++++++++------------ newlib/libc/machine/powerpc/vfprintf.c | 6 ++-- newlib/libc/machine/powerpc/vfscanf.c | 2 +- newlib/libc/stdio/clearerr.c | 2 +- newlib/libc/stdio/fclose.c | 2 +- newlib/libc/stdio/feof.c | 2 +- newlib/libc/stdio/ferror.c | 2 +- newlib/libc/stdio/fflush.c | 2 +- newlib/libc/stdio/fgetc.c | 4 +-- newlib/libc/stdio/fgets.c | 2 +- newlib/libc/stdio/fileno.c | 2 +- newlib/libc/stdio/findfp.c | 9 ++++++ newlib/libc/stdio/fputc.c | 4 +-- newlib/libc/stdio/fputs.c | 2 +- newlib/libc/stdio/fread.c | 2 +- newlib/libc/stdio/freopen.c | 2 +- newlib/libc/stdio/fseek.c | 2 +- newlib/libc/stdio/ftell.c | 2 +- newlib/libc/stdio/fwrite.c | 2 +- newlib/libc/stdio/getc.c | 4 +-- newlib/libc/stdio/getdelim.c | 2 +- newlib/libc/stdio/local.h | 26 +++++++++++++++- newlib/libc/stdio/putc.c | 4 +-- newlib/libc/stdio/refill.c | 2 +- newlib/libc/stdio/setvbuf.c | 2 +- newlib/libc/stdio/ungetc.c | 2 +- newlib/libc/stdio/vfprintf.c | 2 +- newlib/libc/stdio/vfscanf.c | 4 +-- newlib/libc/stdio/wbuf.c | 2 +- newlib/libc/stdio/wsetup.c | 2 +- newlib/libc/stdio64/freopen64.c | 2 +- newlib/libc/stdio64/fseeko64.c | 2 +- newlib/libc/stdio64/ftello64.c | 2 +- 35 files changed, 131 insertions(+), 58 deletions(-) diff --git a/newlib/ChangeLog b/newlib/ChangeLog index e5ab0fd04..bd63a90cc 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,3 +1,46 @@ +2006-09-26 Jeff Johnston + + * libc/include/stdio.h[_REENT_SMALL]: Do not allow macros + for clearerr, feof, or fileno. + * libc/include/sys/reent.h[_REENT_SMALL](struct _reent): Change + the dummy std stream scheme to use pointers to const external + fake files, one for each standard stream. + * libc/stdio/local.h (CHECK_INIT): Change to take a file pointer + argument. For _REENT_SMALL, reset the file pointer if it + matches one of the fake std stream pointers. + * libc/stdio/clearerr.c: Fix CHECK_INIT macro to add file pointer + argument. + * libc/stdio/fclose.c: Ditto. + * libc/stdio/feof.c: Ditto. + * libc/stdio/ferror.c: Ditto. + * libc/stdio/fflush.c: Ditto. + * libc/stdio/fgetc.c: Ditto. + * libc/stdio/fgets.c: Ditto. + * libc/stdio/fileno.c: Ditto. + * libc/stdio/findfp.c: Ditto. + * libc/stdio/fputc.c: Ditto. + * libc/stdio/fputs.c: Ditto. + * libc/stdio/fread.c: Ditto. + * libc/stdio/freopen.c: Ditto. + * libc/stdio/fseek.c: Ditto. + * libc/stdio/ftell.c: Ditto. + * libc/stdio/fwrite.c: Ditto. + * libc/stdio/getc.c: Ditto. + * libc/stdio/getdelim.c: Ditto. + * libc/stdio/putc.c: Ditto. + * libc/stdio/refill.c: Ditto. + * libc/stdio/setvbuf.c: Ditto. + * libc/stdio/ungetc.c: Ditto. + * libc/stdio/vfprintf.c: Ditto. + * libc/stdio/vfscanf.c: Ditto. + * libc/stdio/wbuf.c: Ditto.: Ditto. + * libc/stdio/wsetup.c: Ditto. + * libc/stdio64/freopen64.c: Ditto. + * libc/stdio64/fseeko64.c: Ditto. + * libc/stdio64/ftello64.c: Ditto. + * libc/machine/powerpc/vfprintf.c: Ditto. + * libc/machine/powerpc/vfscanf.c: Ditto. + 2006-09-22 Paul Brook * libc/include/sys/reent.h: Define and use __reent_assert. diff --git a/newlib/libc/include/stdio.h b/newlib/libc/include/stdio.h index 9f260214c..f99480d44 100644 --- a/newlib/libc/include/stdio.h +++ b/newlib/libc/include/stdio.h @@ -455,9 +455,11 @@ static __inline int __sputc_r(struct _reent *_ptr, int _c, FILE *_p) { #define __sclearerr(p) ((void)((p)->_flags &= ~(__SERR|__SEOF))) #define __sfileno(p) ((p)->_file) +#ifndef _REENT_SMALL #define feof(p) __sfeof(p) #define ferror(p) __sferror(p) #define clearerr(p) __sclearerr(p) +#endif #if 0 /*ndef __STRICT_ANSI__ - FIXME: must initialize stdio first, use fn */ #define fileno(p) __sfileno(p) diff --git a/newlib/libc/include/sys/reent.h b/newlib/libc/include/sys/reent.h index 3ef605828..a7d4f968f 100644 --- a/newlib/libc/include/sys/reent.h +++ b/newlib/libc/include/sys/reent.h @@ -13,6 +13,8 @@ extern "C" { #include <_ansi.h> #include +#define _NULL 0 + #ifndef __Long #if __LONG_MAX__ == 2147483647L #define __Long long @@ -157,8 +159,8 @@ struct __sFILE_fake { struct _reent *_data; }; -/* CHECK_INIT() comes from stdio/local.h; be sure to include that. */ -# define _REENT_SMALL_CHECK_INIT(ptr) CHECK_INIT(ptr) +/* CHECK_STD_INIT() comes from stdio/local.h; be sure to include that. */ +# define _REENT_SMALL_CHECK_INIT(ptr) CHECK_STD_INIT(ptr) #else # define _REENT_SMALL_CHECK_INIT(ptr) /* nothing */ #endif @@ -382,15 +384,18 @@ struct _reent struct _glue __sglue; /* root of glue chain */ __FILE *__sf; /* file descriptors */ - struct __sFILE_fake __sf_fake; /* fake initial stdin/out/err */ struct _misc_reent *_misc; /* strtok, multibyte states */ char *_signal_buf; /* strsignal */ }; +extern const struct __sFILE_fake __sf_fake_stdin; +extern const struct __sFILE_fake __sf_fake_stdout; +extern const struct __sFILE_fake __sf_fake_stderr; + #define _REENT_INIT(var) \ - { (__FILE *)&var.__sf_fake, \ - (__FILE *)&var.__sf_fake, \ - (__FILE *)&var.__sf_fake, \ + { (__FILE *)&__sf_fake_stdin, \ + (__FILE *)&__sf_fake_stdout, \ + (__FILE *)&__sf_fake_stderr, \ 0, \ 0, \ _NULL, \ @@ -410,15 +415,14 @@ struct _reent {_NULL, 0, {_NULL}, _NULL}, \ {_NULL, 0, _NULL}, \ _NULL, \ - {_NULL, 0, 0, 0, 0, {_NULL, 0}, 0, _NULL}, \ _NULL, \ _NULL \ } #define _REENT_INIT_PTR(var) \ - { var->_stdin = (__FILE *)&var->__sf_fake; \ - var->_stdout = (__FILE *)&var->__sf_fake; \ - var->_stderr = (__FILE *)&var->__sf_fake; \ + { var->_stdin = (__FILE *)&__sf_fake_stdin; \ + var->_stdout = (__FILE *)&__sf_fake_stdout; \ + var->_stderr = (__FILE *)&__sf_fake_stderr; \ var->_errno = 0; \ var->_inc = 0; \ var->_emergency = _NULL; \ @@ -443,15 +447,6 @@ struct _reent var->__sglue._niobs = 0; \ var->__sglue._iobs = _NULL; \ var->__sf = 0; \ - var->__sf_fake._p = _NULL; \ - var->__sf_fake._r = 0; \ - var->__sf_fake._w = 0; \ - var->__sf_fake._flags = 0; \ - var->__sf_fake._file = 0; \ - var->__sf_fake._bf._base = _NULL; \ - var->__sf_fake._bf._size = 0; \ - var->__sf_fake._lbfsize = 0; \ - var->__sf_fake._data = _NULL; \ var->_misc = _NULL; \ var->_signal_buf = _NULL; \ } @@ -786,8 +781,6 @@ struct _reent #endif /* !_REENT_SMALL */ -#define _NULL 0 - /* * All references to struct _reent are via this pointer. * Internally, newlib routines that need to reference it should use _REENT. diff --git a/newlib/libc/machine/powerpc/vfprintf.c b/newlib/libc/machine/powerpc/vfprintf.c index 8aadb4b15..e84be15aa 100644 --- a/newlib/libc/machine/powerpc/vfprintf.c +++ b/newlib/libc/machine/powerpc/vfprintf.c @@ -321,7 +321,7 @@ _DEFUN (VFPRINTF, (fp, fmt0, ap), _CONST char *fmt0 _AND va_list ap) { - CHECK_INIT (_REENT); + CHECK_INIT (_REENT, fp); return _VFPRINTF_R (_REENT, fp, fmt0, ap); } @@ -875,7 +875,9 @@ reswitch: switch (ch) { if (prec || flags & ALT) size += prec + 1; } else /* "0.X" */ - size = prec + 2; + size = (prec || flags & ALT) + ? prec + 2 + : 1; } else if (expt >= ndig) { /* fixed g fmt */ size = expt; if (flags & ALT) diff --git a/newlib/libc/machine/powerpc/vfscanf.c b/newlib/libc/machine/powerpc/vfscanf.c index 47b0d1c61..4f14d3a50 100644 --- a/newlib/libc/machine/powerpc/vfscanf.c +++ b/newlib/libc/machine/powerpc/vfscanf.c @@ -224,7 +224,7 @@ _DEFUN (vfscanf, (fp, fmt, ap), _CONST char *fmt _AND va_list ap) { - CHECK_INIT(_REENT); + CHECK_INIT(_REENT, fp); return __svfscanf_r (_REENT, fp, fmt, ap); } diff --git a/newlib/libc/stdio/clearerr.c b/newlib/libc/stdio/clearerr.c index 0923ff84d..d3b620bed 100644 --- a/newlib/libc/stdio/clearerr.c +++ b/newlib/libc/stdio/clearerr.c @@ -64,7 +64,7 @@ _VOID _DEFUN(clearerr, (fp), FILE * fp) { - CHECK_INIT(_REENT); + CHECK_INIT(_REENT, fp); _flockfile (fp); __sclearerr (fp); _funlockfile (fp); diff --git a/newlib/libc/stdio/fclose.c b/newlib/libc/stdio/fclose.c index 66d71c2d4..bb3acb624 100644 --- a/newlib/libc/stdio/fclose.c +++ b/newlib/libc/stdio/fclose.c @@ -76,7 +76,7 @@ _DEFUN(_fclose_r, (rptr, fp), __sfp_lock_acquire (); - CHECK_INIT (rptr); + CHECK_INIT (rptr, fp); _flockfile (fp); diff --git a/newlib/libc/stdio/feof.c b/newlib/libc/stdio/feof.c index aff4e84c8..e8db65b86 100644 --- a/newlib/libc/stdio/feof.c +++ b/newlib/libc/stdio/feof.c @@ -57,7 +57,7 @@ _DEFUN(feof, (fp), FILE * fp) { int result; - CHECK_INIT(_REENT); + CHECK_INIT(_REENT, fp); _flockfile (fp); result = __sfeof (fp); _funlockfile (fp); diff --git a/newlib/libc/stdio/ferror.c b/newlib/libc/stdio/ferror.c index ea701bec7..72b7ce2c5 100644 --- a/newlib/libc/stdio/ferror.c +++ b/newlib/libc/stdio/ferror.c @@ -66,7 +66,7 @@ _DEFUN(ferror, (fp), FILE * fp) { int result; - CHECK_INIT(_REENT); + CHECK_INIT(_REENT, fp); _flockfile (fp); result = __sferror (fp); _funlockfile (fp); diff --git a/newlib/libc/stdio/fflush.c b/newlib/libc/stdio/fflush.c index 05084dde0..bac49804f 100644 --- a/newlib/libc/stdio/fflush.c +++ b/newlib/libc/stdio/fflush.c @@ -67,7 +67,7 @@ _DEFUN(fflush, (fp), if (fp == NULL) return _fwalk (_GLOBAL_REENT, fflush); - CHECK_INIT (_REENT); + CHECK_INIT (_REENT, fp); _flockfile (fp); diff --git a/newlib/libc/stdio/fgetc.c b/newlib/libc/stdio/fgetc.c index 1802acf7e..e275cfeeb 100644 --- a/newlib/libc/stdio/fgetc.c +++ b/newlib/libc/stdio/fgetc.c @@ -77,7 +77,7 @@ _DEFUN(_fgetc_r, (ptr, fp), FILE * fp) { int result; - CHECK_INIT(ptr); + CHECK_INIT(ptr, fp); _flockfile (fp); result = __sgetc_r (ptr, fp); _funlockfile (fp); @@ -92,7 +92,7 @@ _DEFUN(fgetc, (fp), { #if !defined(PREFER_SIZE_OVER_SPEED) && !defined(__OPTIMIZE_SIZE__) int result; - CHECK_INIT(_REENT); + CHECK_INIT(_REENT, fp); _flockfile (fp); result = __sgetc_r (_REENT, fp); _funlockfile (fp); diff --git a/newlib/libc/stdio/fgets.c b/newlib/libc/stdio/fgets.c index 741618705..7f02e3fcb 100644 --- a/newlib/libc/stdio/fgets.c +++ b/newlib/libc/stdio/fgets.c @@ -96,7 +96,7 @@ _DEFUN(_fgets_r, (ptr, buf, n, fp), s = buf; - CHECK_INIT(ptr); + CHECK_INIT(ptr, fp); _flockfile (fp); #ifdef __SCLE diff --git a/newlib/libc/stdio/fileno.c b/newlib/libc/stdio/fileno.c index b202cc5e3..db399eb12 100644 --- a/newlib/libc/stdio/fileno.c +++ b/newlib/libc/stdio/fileno.c @@ -54,7 +54,7 @@ _DEFUN(fileno, (f), FILE * f) { int result; - CHECK_INIT (_REENT); + CHECK_INIT (_REENT, f); _flockfile (f); result = __sfileno (f); _funlockfile (f); diff --git a/newlib/libc/stdio/findfp.c b/newlib/libc/stdio/findfp.c index e3270af38..ac1354619 100644 --- a/newlib/libc/stdio/findfp.c +++ b/newlib/libc/stdio/findfp.c @@ -26,6 +26,15 @@ #include #include "local.h" +#ifdef _REENT_SMALL +const struct __sFILE_fake __sf_fake_stdin = + {_NULL, 0, 0, 0, 0, {_NULL, 0}, 0, _NULL}; +const struct __sFILE_fake __sf_fake_stdout = + {_NULL, 0, 0, 0, 0, {_NULL, 0}, 0, _NULL}; +const struct __sFILE_fake __sf_fake_stderr = + {_NULL, 0, 0, 0, 0, {_NULL, 0}, 0, _NULL}; +#endif + static _VOID _DEFUN(std, (ptr, flags, file, data), FILE *ptr _AND diff --git a/newlib/libc/stdio/fputc.c b/newlib/libc/stdio/fputc.c index 520fc0250..777a34242 100644 --- a/newlib/libc/stdio/fputc.c +++ b/newlib/libc/stdio/fputc.c @@ -82,7 +82,7 @@ _DEFUN(_fputc_r, (ptr, ch, file), FILE * file) { int result; - CHECK_INIT(ptr); + CHECK_INIT(ptr, file); _flockfile (file); result = _putc_r (ptr, ch, file); _funlockfile (file); @@ -97,7 +97,7 @@ _DEFUN(fputc, (ch, file), { #if !defined(__OPTIMIZE_SIZE__) && !defined(PREFER_SIZE_OVER_SPEED) int result; - CHECK_INIT(_REENT); + CHECK_INIT(_REENT, file); _flockfile (file); result = _putc_r (_REENT, ch, file); _funlockfile (file); diff --git a/newlib/libc/stdio/fputs.c b/newlib/libc/stdio/fputs.c index 93537b9e4..24a108b15 100644 --- a/newlib/libc/stdio/fputs.c +++ b/newlib/libc/stdio/fputs.c @@ -86,7 +86,7 @@ _DEFUN(_fputs_r, (ptr, s, fp), uio.uio_iov = &iov; uio.uio_iovcnt = 1; - CHECK_INIT(ptr); + CHECK_INIT(ptr, fp); _flockfile (fp); result = __sfvwrite_r (ptr, fp, &uio); diff --git a/newlib/libc/stdio/fread.c b/newlib/libc/stdio/fread.c index d87d9f966..c2c248979 100644 --- a/newlib/libc/stdio/fread.c +++ b/newlib/libc/stdio/fread.c @@ -145,7 +145,7 @@ _DEFUN(_fread_r, (ptr, buf, size, count, fp), if ((resid = count * size) == 0) return 0; - CHECK_INIT(ptr); + CHECK_INIT(ptr, fp); _flockfile (fp); if (fp->_r < 0) diff --git a/newlib/libc/stdio/freopen.c b/newlib/libc/stdio/freopen.c index f1fc9dad8..445baf1ac 100644 --- a/newlib/libc/stdio/freopen.c +++ b/newlib/libc/stdio/freopen.c @@ -99,7 +99,7 @@ _DEFUN(_freopen_r, (ptr, file, mode, fp), __sfp_lock_acquire (); - CHECK_INIT (ptr); + CHECK_INIT (ptr, fp); _flockfile (fp); diff --git a/newlib/libc/stdio/fseek.c b/newlib/libc/stdio/fseek.c index 09edc42d1..9944fd809 100644 --- a/newlib/libc/stdio/fseek.c +++ b/newlib/libc/stdio/fseek.c @@ -131,7 +131,7 @@ _DEFUN(_fseek_r, (ptr, fp, offset, whence), /* Make sure stdio is set up. */ - CHECK_INIT (ptr); + CHECK_INIT (ptr, fp); _flockfile (fp); diff --git a/newlib/libc/stdio/ftell.c b/newlib/libc/stdio/ftell.c index 74d6d906c..de5d55d44 100644 --- a/newlib/libc/stdio/ftell.c +++ b/newlib/libc/stdio/ftell.c @@ -107,7 +107,7 @@ _DEFUN(_ftell_r, (ptr, fp), /* Ensure stdio is set up. */ - CHECK_INIT (ptr); + CHECK_INIT (ptr, fp); _flockfile (fp); diff --git a/newlib/libc/stdio/fwrite.c b/newlib/libc/stdio/fwrite.c index dd739d6b7..3443d95d1 100644 --- a/newlib/libc/stdio/fwrite.c +++ b/newlib/libc/stdio/fwrite.c @@ -117,7 +117,7 @@ _DEFUN(_fwrite_r, (ptr, buf, size, count, fp), * generally slow and since this occurs whenever size==0. */ - CHECK_INIT(ptr); + CHECK_INIT(ptr, fp); _flockfile (fp); if (__sfvwrite_r (ptr, fp, &uio) == 0) diff --git a/newlib/libc/stdio/getc.c b/newlib/libc/stdio/getc.c index c02fe6b3d..5b1fa888a 100644 --- a/newlib/libc/stdio/getc.c +++ b/newlib/libc/stdio/getc.c @@ -91,7 +91,7 @@ _DEFUN(_getc_r, (ptr, fp), register FILE *fp) { int result; - CHECK_INIT (ptr); + CHECK_INIT (ptr, fp); _flockfile (fp); result = __sgetc_r (ptr, fp); _funlockfile (fp); @@ -105,7 +105,7 @@ _DEFUN(getc, (fp), register FILE *fp) { int result; - CHECK_INIT (_REENT); + CHECK_INIT (_REENT, fp); _flockfile (fp); result = __sgetc_r (_REENT, fp); _funlockfile (fp); diff --git a/newlib/libc/stdio/getdelim.c b/newlib/libc/stdio/getdelim.c index 0fdfb3add..23fc50218 100644 --- a/newlib/libc/stdio/getdelim.c +++ b/newlib/libc/stdio/getdelim.c @@ -79,7 +79,7 @@ _DEFUN(__getdelim, (bufptr, n, delim, fp), *n = DEFAULT_LINE_SIZE; } - CHECK_INIT (_REENT); + CHECK_INIT (_REENT, fp); _flockfile (fp); diff --git a/newlib/libc/stdio/local.h b/newlib/libc/stdio/local.h index 301abce33..9ae9b4046 100644 --- a/newlib/libc/stdio/local.h +++ b/newlib/libc/stdio/local.h @@ -48,7 +48,31 @@ struct _glue * _EXFUN(__sfmoreglue,(struct _reent *,int n)); /* Called by the main entry point fns to ensure stdio has been initialized. */ -#define CHECK_INIT(ptr) \ +#ifdef _REENT_SMALL +#define CHECK_INIT(ptr, fp) \ + do \ + { \ + if ((ptr) && !(ptr)->__sdidinit) \ + __sinit (ptr); \ + if ((fp) == (FILE *)&__sf_fake_stdin) \ + (fp) = stdin; \ + else if ((fp) == (FILE *)&__sf_fake_stdout) \ + (fp) = stdout; \ + else if ((fp) == (FILE *)&__sf_fake_stderr) \ + (fp) = stderr; \ + } \ + while (0) +#else /* !_REENT_SMALL */ +#define CHECK_INIT(ptr, fp) \ + do \ + { \ + if ((ptr) && !(ptr)->__sdidinit) \ + __sinit (ptr); \ + } \ + while (0) +#endif /* !_REENT_SMALL */ + +#define CHECK_STD_INIT(ptr) \ do \ { \ if ((ptr) && !(ptr)->__sdidinit) \ diff --git a/newlib/libc/stdio/putc.c b/newlib/libc/stdio/putc.c index b3008e287..667324d9d 100644 --- a/newlib/libc/stdio/putc.c +++ b/newlib/libc/stdio/putc.c @@ -96,7 +96,7 @@ _DEFUN(_putc_r, (ptr, c, fp), register FILE *fp) { int result; - CHECK_INIT (ptr); + CHECK_INIT (ptr, fp); _flockfile (fp); result = __sputc_r (ptr, c, fp); _funlockfile (fp); @@ -111,7 +111,7 @@ _DEFUN(putc, (c, fp), { #if !defined(PREFER_SIZE_OVER_SPEED) && !defined(__OPTIMIZE_SIZE__) int result; - CHECK_INIT (_REENT); + CHECK_INIT (_REENT, fp); _flockfile (fp); result = __sputc_r (_REENT, c, fp); _funlockfile (fp); diff --git a/newlib/libc/stdio/refill.c b/newlib/libc/stdio/refill.c index 047387e79..75ba0565f 100644 --- a/newlib/libc/stdio/refill.c +++ b/newlib/libc/stdio/refill.c @@ -43,7 +43,7 @@ _DEFUN(__srefill_r, (ptr, fp), { /* make sure stdio is set up */ - CHECK_INIT (_REENT); + CHECK_INIT (_REENT, fp); fp->_r = 0; /* largely a convenience for callers */ diff --git a/newlib/libc/stdio/setvbuf.c b/newlib/libc/stdio/setvbuf.c index f6871c59d..561f68b54 100644 --- a/newlib/libc/stdio/setvbuf.c +++ b/newlib/libc/stdio/setvbuf.c @@ -104,7 +104,7 @@ _DEFUN(setvbuf, (fp, buf, mode, size), { int ret = 0; - CHECK_INIT (_REENT); + CHECK_INIT (_REENT, fp); _flockfile (fp); diff --git a/newlib/libc/stdio/ungetc.c b/newlib/libc/stdio/ungetc.c index fc6fa3160..333baa278 100644 --- a/newlib/libc/stdio/ungetc.c +++ b/newlib/libc/stdio/ungetc.c @@ -81,7 +81,7 @@ _DEFUN(_ungetc_r, (rptr, c, fp), ??? Might be able to remove this as some other stdio routine should have already been called to get the char we are un-getting. */ - CHECK_INIT (rptr); + CHECK_INIT (rptr, fp); _flockfile (fp); diff --git a/newlib/libc/stdio/vfprintf.c b/newlib/libc/stdio/vfprintf.c index 9e5477aa6..91b2c234d 100644 --- a/newlib/libc/stdio/vfprintf.c +++ b/newlib/libc/stdio/vfprintf.c @@ -540,7 +540,7 @@ _DEFUN(_VFPRINTF_R, (data, fp, fmt0, ap), (u_long)GET_ARG (N, ap, u_int)) #endif - CHECK_INIT (data); + CHECK_INIT (data, fp); _flockfile (fp); /* sorry, fprintf(read_only_file, "") returns EOF, not 0 */ diff --git a/newlib/libc/stdio/vfscanf.c b/newlib/libc/stdio/vfscanf.c index 7bf0aaf9a..c9808bb48 100644 --- a/newlib/libc/stdio/vfscanf.c +++ b/newlib/libc/stdio/vfscanf.c @@ -231,7 +231,7 @@ _DEFUN(VFSCANF, (fp, fmt, ap), _CONST char *fmt _AND va_list ap) { - CHECK_INIT(_REENT); + CHECK_INIT(_REENT, fp); return __SVFSCANF_R (_REENT, fp, fmt, ap); } @@ -253,7 +253,7 @@ _DEFUN(_VFSCANF_R, (data, fp, fmt, ap), _CONST char *fmt _AND va_list ap) { - CHECK_INIT(data); + CHECK_INIT(data, fp); return __SVFSCANF_R (data, fp, fmt, ap); } diff --git a/newlib/libc/stdio/wbuf.c b/newlib/libc/stdio/wbuf.c index 0d2b72ea1..5f1e85a27 100644 --- a/newlib/libc/stdio/wbuf.c +++ b/newlib/libc/stdio/wbuf.c @@ -42,7 +42,7 @@ _DEFUN(__swbuf_r, (ptr, c, fp), /* Ensure stdio has been initialized. */ - CHECK_INIT (ptr); + CHECK_INIT (ptr, fp); /* * In case we cannot write, or longjmp takes us out early, diff --git a/newlib/libc/stdio/wsetup.c b/newlib/libc/stdio/wsetup.c index cf56c2abc..ba98813b3 100644 --- a/newlib/libc/stdio/wsetup.c +++ b/newlib/libc/stdio/wsetup.c @@ -34,7 +34,7 @@ _DEFUN(__swsetup, (fp), { /* Make sure stdio is set up. */ - CHECK_INIT (_REENT); + CHECK_INIT (_REENT, fp); /* * If we are not writing, we had better be reading and writing. diff --git a/newlib/libc/stdio64/freopen64.c b/newlib/libc/stdio64/freopen64.c index cb766051c..c795cba44 100644 --- a/newlib/libc/stdio64/freopen64.c +++ b/newlib/libc/stdio64/freopen64.c @@ -99,7 +99,7 @@ _DEFUN (_freopen64_r, (ptr, file, mode, fp), __sfp_lock_acquire (); - CHECK_INIT (ptr); + CHECK_INIT (ptr, fp); _flockfile(fp); diff --git a/newlib/libc/stdio64/fseeko64.c b/newlib/libc/stdio64/fseeko64.c index 971bd4d08..fe7e9be06 100644 --- a/newlib/libc/stdio64/fseeko64.c +++ b/newlib/libc/stdio64/fseeko64.c @@ -113,7 +113,7 @@ _DEFUN (_fseeko64_r, (ptr, fp, offset, whence), /* Make sure stdio is set up. */ - CHECK_INIT (ptr); + CHECK_INIT (ptr, fp); _flockfile(fp); diff --git a/newlib/libc/stdio64/ftello64.c b/newlib/libc/stdio64/ftello64.c index ef3317561..2a8d30925 100644 --- a/newlib/libc/stdio64/ftello64.c +++ b/newlib/libc/stdio64/ftello64.c @@ -93,7 +93,7 @@ _DEFUN (_ftello64_r, (ptr, fp), /* Ensure stdio is set up. */ - CHECK_INIT (ptr); + CHECK_INIT (ptr, fp); _flockfile(fp);