2006-09-26 Jeff Johnston <jjohnstn@redhat.com>
* 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.
			
			
This commit is contained in:
		| @@ -1,3 +1,46 @@ | |||||||
|  | 2006-09-26  Jeff Johnston  <jjohnstn@redhat.com> | ||||||
|  |  | ||||||
|  | 	* 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  <paul@codesourcery.com> | 2006-09-22  Paul Brook  <paul@codesourcery.com> | ||||||
|  |  | ||||||
| 	* libc/include/sys/reent.h: Define and use __reent_assert. | 	* libc/include/sys/reent.h: Define and use __reent_assert. | ||||||
|   | |||||||
| @@ -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	__sclearerr(p)	((void)((p)->_flags &= ~(__SERR|__SEOF))) | ||||||
| #define	__sfileno(p)	((p)->_file) | #define	__sfileno(p)	((p)->_file) | ||||||
|  |  | ||||||
|  | #ifndef _REENT_SMALL | ||||||
| #define	feof(p)		__sfeof(p) | #define	feof(p)		__sfeof(p) | ||||||
| #define	ferror(p)	__sferror(p) | #define	ferror(p)	__sferror(p) | ||||||
| #define	clearerr(p)	__sclearerr(p) | #define	clearerr(p)	__sclearerr(p) | ||||||
|  | #endif | ||||||
|  |  | ||||||
| #if 0 /*ndef __STRICT_ANSI__ - FIXME: must initialize stdio first, use fn */ | #if 0 /*ndef __STRICT_ANSI__ - FIXME: must initialize stdio first, use fn */ | ||||||
| #define	fileno(p)	__sfileno(p) | #define	fileno(p)	__sfileno(p) | ||||||
|   | |||||||
| @@ -13,6 +13,8 @@ extern "C" { | |||||||
| #include <_ansi.h> | #include <_ansi.h> | ||||||
| #include <sys/_types.h> | #include <sys/_types.h> | ||||||
|  |  | ||||||
|  | #define _NULL 0 | ||||||
|  |  | ||||||
| #ifndef __Long | #ifndef __Long | ||||||
| #if __LONG_MAX__ == 2147483647L | #if __LONG_MAX__ == 2147483647L | ||||||
| #define __Long long | #define __Long long | ||||||
| @@ -157,8 +159,8 @@ struct __sFILE_fake { | |||||||
|  |  | ||||||
|   struct _reent *_data; |   struct _reent *_data; | ||||||
| }; | }; | ||||||
| /* CHECK_INIT() comes from stdio/local.h; be sure to include that.  */ | /* CHECK_STD_INIT() comes from stdio/local.h; be sure to include that.  */ | ||||||
| # define _REENT_SMALL_CHECK_INIT(ptr) CHECK_INIT(ptr) | # define _REENT_SMALL_CHECK_INIT(ptr) CHECK_STD_INIT(ptr) | ||||||
| #else | #else | ||||||
| # define _REENT_SMALL_CHECK_INIT(ptr) /* nothing */ | # define _REENT_SMALL_CHECK_INIT(ptr) /* nothing */ | ||||||
| #endif | #endif | ||||||
| @@ -382,15 +384,18 @@ struct _reent | |||||||
|  |  | ||||||
|   struct _glue __sglue;			/* root of glue chain */ |   struct _glue __sglue;			/* root of glue chain */ | ||||||
|   __FILE *__sf;			        /* file descriptors */ |   __FILE *__sf;			        /* file descriptors */ | ||||||
|   struct __sFILE_fake __sf_fake;	/* fake initial stdin/out/err */ |  | ||||||
|   struct _misc_reent *_misc;            /* strtok, multibyte states */ |   struct _misc_reent *_misc;            /* strtok, multibyte states */ | ||||||
|   char *_signal_buf;                    /* strsignal */ |   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) \ | #define _REENT_INIT(var) \ | ||||||
|   { (__FILE *)&var.__sf_fake, \ |   { (__FILE *)&__sf_fake_stdin, \ | ||||||
|     (__FILE *)&var.__sf_fake, \ |     (__FILE *)&__sf_fake_stdout, \ | ||||||
|     (__FILE *)&var.__sf_fake, \ |     (__FILE *)&__sf_fake_stderr, \ | ||||||
|     0, \ |     0, \ | ||||||
|     0, \ |     0, \ | ||||||
|     _NULL, \ |     _NULL, \ | ||||||
| @@ -410,15 +415,14 @@ struct _reent | |||||||
|     {_NULL, 0, {_NULL}, _NULL}, \ |     {_NULL, 0, {_NULL}, _NULL}, \ | ||||||
|     {_NULL, 0, _NULL}, \ |     {_NULL, 0, _NULL}, \ | ||||||
|     _NULL, \ |     _NULL, \ | ||||||
|     {_NULL, 0, 0, 0, 0, {_NULL, 0}, 0, _NULL}, \ |  | ||||||
|     _NULL, \ |     _NULL, \ | ||||||
|     _NULL \ |     _NULL \ | ||||||
|   } |   } | ||||||
|  |  | ||||||
| #define _REENT_INIT_PTR(var) \ | #define _REENT_INIT_PTR(var) \ | ||||||
|   { var->_stdin = (__FILE *)&var->__sf_fake; \ |   { var->_stdin = (__FILE *)&__sf_fake_stdin; \ | ||||||
|     var->_stdout = (__FILE *)&var->__sf_fake; \ |     var->_stdout = (__FILE *)&__sf_fake_stdout; \ | ||||||
|     var->_stderr = (__FILE *)&var->__sf_fake; \ |     var->_stderr = (__FILE *)&__sf_fake_stderr; \ | ||||||
|     var->_errno = 0; \ |     var->_errno = 0; \ | ||||||
|     var->_inc = 0; \ |     var->_inc = 0; \ | ||||||
|     var->_emergency = _NULL; \ |     var->_emergency = _NULL; \ | ||||||
| @@ -443,15 +447,6 @@ struct _reent | |||||||
|     var->__sglue._niobs = 0; \ |     var->__sglue._niobs = 0; \ | ||||||
|     var->__sglue._iobs = _NULL; \ |     var->__sglue._iobs = _NULL; \ | ||||||
|     var->__sf = 0; \ |     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->_misc = _NULL; \ | ||||||
|     var->_signal_buf = _NULL; \ |     var->_signal_buf = _NULL; \ | ||||||
|   } |   } | ||||||
| @@ -786,8 +781,6 @@ struct _reent | |||||||
|  |  | ||||||
| #endif /* !_REENT_SMALL */ | #endif /* !_REENT_SMALL */ | ||||||
|  |  | ||||||
| #define _NULL 0 |  | ||||||
|  |  | ||||||
| /* | /* | ||||||
|  * All references to struct _reent are via this pointer. |  * All references to struct _reent are via this pointer. | ||||||
|  * Internally, newlib routines that need to reference it should use _REENT. |  * Internally, newlib routines that need to reference it should use _REENT. | ||||||
|   | |||||||
| @@ -321,7 +321,7 @@ _DEFUN (VFPRINTF, (fp, fmt0, ap), | |||||||
| 	_CONST char *fmt0 _AND | 	_CONST char *fmt0 _AND | ||||||
| 	va_list ap) | 	va_list ap) | ||||||
| { | { | ||||||
|   CHECK_INIT (_REENT); |   CHECK_INIT (_REENT, fp); | ||||||
|   return _VFPRINTF_R (_REENT, fp, fmt0, ap); |   return _VFPRINTF_R (_REENT, fp, fmt0, ap); | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -875,7 +875,9 @@ reswitch:	switch (ch) { | |||||||
| 					if (prec || flags & ALT) | 					if (prec || flags & ALT) | ||||||
| 						size += prec + 1; | 						size += prec + 1; | ||||||
| 				} else	/* "0.X" */ | 				} else	/* "0.X" */ | ||||||
| 					size = prec + 2; |                                         size = (prec || flags & ALT) | ||||||
|  |                                                   ? prec + 2 | ||||||
|  |                                                   : 1; | ||||||
| 			} else if (expt >= ndig) {	/* fixed g fmt */ | 			} else if (expt >= ndig) {	/* fixed g fmt */ | ||||||
| 				size = expt; | 				size = expt; | ||||||
| 				if (flags & ALT) | 				if (flags & ALT) | ||||||
|   | |||||||
| @@ -224,7 +224,7 @@ _DEFUN (vfscanf, (fp, fmt, ap), | |||||||
|     _CONST char *fmt _AND  |     _CONST char *fmt _AND  | ||||||
|     va_list ap) |     va_list ap) | ||||||
| { | { | ||||||
|   CHECK_INIT(_REENT); |   CHECK_INIT(_REENT, fp); | ||||||
|   return __svfscanf_r (_REENT, fp, fmt, ap); |   return __svfscanf_r (_REENT, fp, fmt, ap); | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -64,7 +64,7 @@ _VOID | |||||||
| _DEFUN(clearerr, (fp), | _DEFUN(clearerr, (fp), | ||||||
|        FILE * fp) |        FILE * fp) | ||||||
| { | { | ||||||
|   CHECK_INIT(_REENT); |   CHECK_INIT(_REENT, fp); | ||||||
|   _flockfile (fp); |   _flockfile (fp); | ||||||
|   __sclearerr (fp); |   __sclearerr (fp); | ||||||
|   _funlockfile (fp); |   _funlockfile (fp); | ||||||
|   | |||||||
| @@ -76,7 +76,7 @@ _DEFUN(_fclose_r, (rptr, fp), | |||||||
|  |  | ||||||
|   __sfp_lock_acquire (); |   __sfp_lock_acquire (); | ||||||
|  |  | ||||||
|   CHECK_INIT (rptr); |   CHECK_INIT (rptr, fp); | ||||||
|  |  | ||||||
|   _flockfile (fp); |   _flockfile (fp); | ||||||
|    |    | ||||||
|   | |||||||
| @@ -57,7 +57,7 @@ _DEFUN(feof, (fp), | |||||||
|        FILE * fp) |        FILE * fp) | ||||||
| { | { | ||||||
|   int result; |   int result; | ||||||
|   CHECK_INIT(_REENT); |   CHECK_INIT(_REENT, fp); | ||||||
|   _flockfile (fp); |   _flockfile (fp); | ||||||
|   result = __sfeof (fp); |   result = __sfeof (fp); | ||||||
|   _funlockfile (fp); |   _funlockfile (fp); | ||||||
|   | |||||||
| @@ -66,7 +66,7 @@ _DEFUN(ferror, (fp), | |||||||
|        FILE * fp) |        FILE * fp) | ||||||
| { | { | ||||||
|   int result; |   int result; | ||||||
|   CHECK_INIT(_REENT); |   CHECK_INIT(_REENT, fp); | ||||||
|   _flockfile (fp); |   _flockfile (fp); | ||||||
|   result = __sferror (fp); |   result = __sferror (fp); | ||||||
|   _funlockfile (fp); |   _funlockfile (fp); | ||||||
|   | |||||||
| @@ -67,7 +67,7 @@ _DEFUN(fflush, (fp), | |||||||
|   if (fp == NULL) |   if (fp == NULL) | ||||||
|     return _fwalk (_GLOBAL_REENT, fflush); |     return _fwalk (_GLOBAL_REENT, fflush); | ||||||
|  |  | ||||||
|   CHECK_INIT (_REENT); |   CHECK_INIT (_REENT, fp); | ||||||
|  |  | ||||||
|   _flockfile (fp); |   _flockfile (fp); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -77,7 +77,7 @@ _DEFUN(_fgetc_r, (ptr, fp), | |||||||
|        FILE * fp) |        FILE * fp) | ||||||
| { | { | ||||||
|   int result; |   int result; | ||||||
|   CHECK_INIT(ptr); |   CHECK_INIT(ptr, fp); | ||||||
|   _flockfile (fp); |   _flockfile (fp); | ||||||
|   result = __sgetc_r (ptr, fp); |   result = __sgetc_r (ptr, fp); | ||||||
|   _funlockfile (fp); |   _funlockfile (fp); | ||||||
| @@ -92,7 +92,7 @@ _DEFUN(fgetc, (fp), | |||||||
| { | { | ||||||
| #if !defined(PREFER_SIZE_OVER_SPEED) && !defined(__OPTIMIZE_SIZE__) | #if !defined(PREFER_SIZE_OVER_SPEED) && !defined(__OPTIMIZE_SIZE__) | ||||||
|   int result; |   int result; | ||||||
|   CHECK_INIT(_REENT); |   CHECK_INIT(_REENT, fp); | ||||||
|   _flockfile (fp); |   _flockfile (fp); | ||||||
|   result = __sgetc_r (_REENT, fp); |   result = __sgetc_r (_REENT, fp); | ||||||
|   _funlockfile (fp); |   _funlockfile (fp); | ||||||
|   | |||||||
| @@ -96,7 +96,7 @@ _DEFUN(_fgets_r, (ptr, buf, n, fp), | |||||||
|  |  | ||||||
|   s = buf; |   s = buf; | ||||||
|  |  | ||||||
|   CHECK_INIT(ptr); |   CHECK_INIT(ptr, fp); | ||||||
|  |  | ||||||
|   _flockfile (fp); |   _flockfile (fp); | ||||||
| #ifdef __SCLE | #ifdef __SCLE | ||||||
|   | |||||||
| @@ -54,7 +54,7 @@ _DEFUN(fileno, (f), | |||||||
|        FILE * f) |        FILE * f) | ||||||
| { | { | ||||||
|   int result; |   int result; | ||||||
|   CHECK_INIT (_REENT); |   CHECK_INIT (_REENT, f); | ||||||
|   _flockfile (f); |   _flockfile (f); | ||||||
|   result = __sfileno (f); |   result = __sfileno (f); | ||||||
|   _funlockfile (f); |   _funlockfile (f); | ||||||
|   | |||||||
| @@ -26,6 +26,15 @@ | |||||||
| #include <sys/lock.h> | #include <sys/lock.h> | ||||||
| #include "local.h" | #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 | static _VOID | ||||||
| _DEFUN(std, (ptr, flags, file, data), | _DEFUN(std, (ptr, flags, file, data), | ||||||
|             FILE *ptr _AND |             FILE *ptr _AND | ||||||
|   | |||||||
| @@ -82,7 +82,7 @@ _DEFUN(_fputc_r, (ptr, ch, file), | |||||||
|        FILE * file) |        FILE * file) | ||||||
| { | { | ||||||
|   int result; |   int result; | ||||||
|   CHECK_INIT(ptr); |   CHECK_INIT(ptr, file); | ||||||
|    _flockfile (file); |    _flockfile (file); | ||||||
|   result = _putc_r (ptr, ch, file); |   result = _putc_r (ptr, ch, file); | ||||||
|   _funlockfile (file); |   _funlockfile (file); | ||||||
| @@ -97,7 +97,7 @@ _DEFUN(fputc, (ch, file), | |||||||
| { | { | ||||||
| #if !defined(__OPTIMIZE_SIZE__) && !defined(PREFER_SIZE_OVER_SPEED) | #if !defined(__OPTIMIZE_SIZE__) && !defined(PREFER_SIZE_OVER_SPEED) | ||||||
|   int result; |   int result; | ||||||
|   CHECK_INIT(_REENT); |   CHECK_INIT(_REENT, file); | ||||||
|    _flockfile (file); |    _flockfile (file); | ||||||
|   result = _putc_r (_REENT, ch, file); |   result = _putc_r (_REENT, ch, file); | ||||||
|   _funlockfile (file); |   _funlockfile (file); | ||||||
|   | |||||||
| @@ -86,7 +86,7 @@ _DEFUN(_fputs_r, (ptr, s, fp), | |||||||
|   uio.uio_iov = &iov; |   uio.uio_iov = &iov; | ||||||
|   uio.uio_iovcnt = 1; |   uio.uio_iovcnt = 1; | ||||||
|  |  | ||||||
|   CHECK_INIT(ptr); |   CHECK_INIT(ptr, fp); | ||||||
|  |  | ||||||
|   _flockfile (fp); |   _flockfile (fp); | ||||||
|   result = __sfvwrite_r (ptr, fp, &uio); |   result = __sfvwrite_r (ptr, fp, &uio); | ||||||
|   | |||||||
| @@ -145,7 +145,7 @@ _DEFUN(_fread_r, (ptr, buf, size, count, fp), | |||||||
|   if ((resid = count * size) == 0) |   if ((resid = count * size) == 0) | ||||||
|     return 0; |     return 0; | ||||||
|  |  | ||||||
|   CHECK_INIT(ptr); |   CHECK_INIT(ptr, fp); | ||||||
|  |  | ||||||
|   _flockfile (fp); |   _flockfile (fp); | ||||||
|   if (fp->_r < 0) |   if (fp->_r < 0) | ||||||
|   | |||||||
| @@ -99,7 +99,7 @@ _DEFUN(_freopen_r, (ptr, file, mode, fp), | |||||||
|  |  | ||||||
|   __sfp_lock_acquire (); |   __sfp_lock_acquire (); | ||||||
|  |  | ||||||
|   CHECK_INIT (ptr); |   CHECK_INIT (ptr, fp); | ||||||
|  |  | ||||||
|   _flockfile (fp); |   _flockfile (fp); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -131,7 +131,7 @@ _DEFUN(_fseek_r, (ptr, fp, offset, whence), | |||||||
|  |  | ||||||
|   /* Make sure stdio is set up.  */ |   /* Make sure stdio is set up.  */ | ||||||
|  |  | ||||||
|   CHECK_INIT (ptr); |   CHECK_INIT (ptr, fp); | ||||||
|  |  | ||||||
|   _flockfile (fp); |   _flockfile (fp); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -107,7 +107,7 @@ _DEFUN(_ftell_r, (ptr, fp), | |||||||
|  |  | ||||||
|   /* Ensure stdio is set up.  */ |   /* Ensure stdio is set up.  */ | ||||||
|  |  | ||||||
|   CHECK_INIT (ptr); |   CHECK_INIT (ptr, fp); | ||||||
|  |  | ||||||
|   _flockfile (fp); |   _flockfile (fp); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -117,7 +117,7 @@ _DEFUN(_fwrite_r, (ptr, buf, size, count, fp), | |||||||
|    * generally slow and since this occurs whenever size==0. |    * generally slow and since this occurs whenever size==0. | ||||||
|    */ |    */ | ||||||
|  |  | ||||||
|   CHECK_INIT(ptr); |   CHECK_INIT(ptr, fp); | ||||||
|  |  | ||||||
|   _flockfile (fp); |   _flockfile (fp); | ||||||
|   if (__sfvwrite_r (ptr, fp, &uio) == 0) |   if (__sfvwrite_r (ptr, fp, &uio) == 0) | ||||||
|   | |||||||
| @@ -91,7 +91,7 @@ _DEFUN(_getc_r, (ptr, fp), | |||||||
|        register FILE *fp) |        register FILE *fp) | ||||||
| { | { | ||||||
|   int result; |   int result; | ||||||
|   CHECK_INIT (ptr); |   CHECK_INIT (ptr, fp); | ||||||
|   _flockfile (fp); |   _flockfile (fp); | ||||||
|   result = __sgetc_r (ptr, fp); |   result = __sgetc_r (ptr, fp); | ||||||
|   _funlockfile (fp); |   _funlockfile (fp); | ||||||
| @@ -105,7 +105,7 @@ _DEFUN(getc, (fp), | |||||||
|        register FILE *fp) |        register FILE *fp) | ||||||
| { | { | ||||||
|   int result; |   int result; | ||||||
|   CHECK_INIT (_REENT); |   CHECK_INIT (_REENT, fp); | ||||||
|   _flockfile (fp); |   _flockfile (fp); | ||||||
|   result = __sgetc_r (_REENT, fp); |   result = __sgetc_r (_REENT, fp); | ||||||
|   _funlockfile (fp); |   _funlockfile (fp); | ||||||
|   | |||||||
| @@ -79,7 +79,7 @@ _DEFUN(__getdelim, (bufptr, n, delim, fp), | |||||||
|       *n = DEFAULT_LINE_SIZE; |       *n = DEFAULT_LINE_SIZE; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   CHECK_INIT (_REENT); |   CHECK_INIT (_REENT, fp); | ||||||
|  |  | ||||||
|   _flockfile (fp); |   _flockfile (fp); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -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.  */ | /* 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						\ |   do						\ | ||||||
|     {						\ |     {						\ | ||||||
|       if ((ptr) && !(ptr)->__sdidinit)		\ |       if ((ptr) && !(ptr)->__sdidinit)		\ | ||||||
|   | |||||||
| @@ -96,7 +96,7 @@ _DEFUN(_putc_r, (ptr, c, fp), | |||||||
|        register FILE *fp) |        register FILE *fp) | ||||||
| { | { | ||||||
|   int result; |   int result; | ||||||
|   CHECK_INIT (ptr); |   CHECK_INIT (ptr, fp); | ||||||
|   _flockfile (fp); |   _flockfile (fp); | ||||||
|   result = __sputc_r (ptr, c, fp); |   result = __sputc_r (ptr, c, fp); | ||||||
|   _funlockfile (fp); |   _funlockfile (fp); | ||||||
| @@ -111,7 +111,7 @@ _DEFUN(putc, (c, fp), | |||||||
| { | { | ||||||
| #if !defined(PREFER_SIZE_OVER_SPEED) && !defined(__OPTIMIZE_SIZE__) | #if !defined(PREFER_SIZE_OVER_SPEED) && !defined(__OPTIMIZE_SIZE__) | ||||||
|   int result; |   int result; | ||||||
|   CHECK_INIT (_REENT); |   CHECK_INIT (_REENT, fp); | ||||||
|   _flockfile (fp); |   _flockfile (fp); | ||||||
|   result = __sputc_r (_REENT, c, fp); |   result = __sputc_r (_REENT, c, fp); | ||||||
|   _funlockfile (fp); |   _funlockfile (fp); | ||||||
|   | |||||||
| @@ -43,7 +43,7 @@ _DEFUN(__srefill_r, (ptr, fp), | |||||||
| { | { | ||||||
|   /* make sure stdio is set up */ |   /* make sure stdio is set up */ | ||||||
|  |  | ||||||
|   CHECK_INIT (_REENT); |   CHECK_INIT (_REENT, fp); | ||||||
|  |  | ||||||
|   fp->_r = 0;			/* largely a convenience for callers */ |   fp->_r = 0;			/* largely a convenience for callers */ | ||||||
|  |  | ||||||
|   | |||||||
| @@ -104,7 +104,7 @@ _DEFUN(setvbuf, (fp, buf, mode, size), | |||||||
| { | { | ||||||
|   int ret = 0; |   int ret = 0; | ||||||
|  |  | ||||||
|   CHECK_INIT (_REENT); |   CHECK_INIT (_REENT, fp); | ||||||
|  |  | ||||||
|   _flockfile (fp); |   _flockfile (fp); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -81,7 +81,7 @@ _DEFUN(_ungetc_r, (rptr, c, fp), | |||||||
|      ??? Might be able to remove this as some other stdio routine should |      ??? Might be able to remove this as some other stdio routine should | ||||||
|      have already been called to get the char we are un-getting.  */ |      have already been called to get the char we are un-getting.  */ | ||||||
|  |  | ||||||
|   CHECK_INIT (rptr); |   CHECK_INIT (rptr, fp); | ||||||
|  |  | ||||||
|   _flockfile (fp); |   _flockfile (fp); | ||||||
|    |    | ||||||
|   | |||||||
| @@ -540,7 +540,7 @@ _DEFUN(_VFPRINTF_R, (data, fp, fmt0, ap), | |||||||
| 	    (u_long)GET_ARG (N, ap, u_int)) | 	    (u_long)GET_ARG (N, ap, u_int)) | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| 	CHECK_INIT (data); | 	CHECK_INIT (data, fp); | ||||||
| 	_flockfile (fp); | 	_flockfile (fp); | ||||||
|  |  | ||||||
| 	/* sorry, fprintf(read_only_file, "") returns EOF, not 0 */ | 	/* sorry, fprintf(read_only_file, "") returns EOF, not 0 */ | ||||||
|   | |||||||
| @@ -231,7 +231,7 @@ _DEFUN(VFSCANF, (fp, fmt, ap), | |||||||
|        _CONST char *fmt _AND  |        _CONST char *fmt _AND  | ||||||
|        va_list ap) |        va_list ap) | ||||||
| { | { | ||||||
|   CHECK_INIT(_REENT); |   CHECK_INIT(_REENT, fp); | ||||||
|   return __SVFSCANF_R (_REENT, fp, fmt, ap); |   return __SVFSCANF_R (_REENT, fp, fmt, ap); | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -253,7 +253,7 @@ _DEFUN(_VFSCANF_R, (data, fp, fmt, ap), | |||||||
|        _CONST char *fmt    _AND  |        _CONST char *fmt    _AND  | ||||||
|        va_list ap) |        va_list ap) | ||||||
| { | { | ||||||
|   CHECK_INIT(data); |   CHECK_INIT(data, fp); | ||||||
|   return __SVFSCANF_R (data, fp, fmt, ap); |   return __SVFSCANF_R (data, fp, fmt, ap); | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -42,7 +42,7 @@ _DEFUN(__swbuf_r, (ptr, c, fp), | |||||||
|  |  | ||||||
|   /* Ensure stdio has been initialized.  */ |   /* Ensure stdio has been initialized.  */ | ||||||
|  |  | ||||||
|   CHECK_INIT (ptr); |   CHECK_INIT (ptr, fp); | ||||||
|  |  | ||||||
|   /* |   /* | ||||||
|    * In case we cannot write, or longjmp takes us out early, |    * In case we cannot write, or longjmp takes us out early, | ||||||
|   | |||||||
| @@ -34,7 +34,7 @@ _DEFUN(__swsetup, (fp), | |||||||
| { | { | ||||||
|   /* Make sure stdio is set up.  */ |   /* 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. |    * If we are not writing, we had better be reading and writing. | ||||||
|   | |||||||
| @@ -99,7 +99,7 @@ _DEFUN (_freopen64_r, (ptr, file, mode, fp), | |||||||
|  |  | ||||||
|   __sfp_lock_acquire (); |   __sfp_lock_acquire (); | ||||||
|  |  | ||||||
|   CHECK_INIT (ptr); |   CHECK_INIT (ptr, fp); | ||||||
|  |  | ||||||
|   _flockfile(fp); |   _flockfile(fp); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -113,7 +113,7 @@ _DEFUN (_fseeko64_r, (ptr, fp, offset, whence), | |||||||
|  |  | ||||||
|   /* Make sure stdio is set up.  */ |   /* Make sure stdio is set up.  */ | ||||||
|  |  | ||||||
|   CHECK_INIT (ptr); |   CHECK_INIT (ptr, fp); | ||||||
|  |  | ||||||
|   _flockfile(fp); |   _flockfile(fp); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -93,7 +93,7 @@ _DEFUN (_ftello64_r, (ptr, fp), | |||||||
|  |  | ||||||
|   /* Ensure stdio is set up.  */ |   /* Ensure stdio is set up.  */ | ||||||
|  |  | ||||||
|   CHECK_INIT (ptr); |   CHECK_INIT (ptr, fp); | ||||||
|  |  | ||||||
|   _flockfile(fp); |   _flockfile(fp); | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user