diff options
author | Jeff Johnston <jjohnstn@redhat.com> | 2006-09-26 21:22:19 +0000 |
---|---|---|
committer | Jeff Johnston <jjohnstn@redhat.com> | 2006-09-26 21:22:19 +0000 |
commit | e5e148d15bacc36f205aa49edea0fc53df2a38c0 (patch) | |
tree | b3daac4ea5f2db51fa5c5e10722e04f3b63a57c5 /newlib/libc/stdio/local.h | |
parent | 1aeca89244e9560c7494792cf4524547038504e8 (diff) | |
download | cygnal-e5e148d15bacc36f205aa49edea0fc53df2a38c0.tar.gz cygnal-e5e148d15bacc36f205aa49edea0fc53df2a38c0.tar.bz2 cygnal-e5e148d15bacc36f205aa49edea0fc53df2a38c0.zip |
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.
Diffstat (limited to 'newlib/libc/stdio/local.h')
-rw-r--r-- | newlib/libc/stdio/local.h | 26 |
1 files changed, 25 insertions, 1 deletions
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) \ |