diff options
| author | Elliott Hughes <enh@google.com> | 2014-11-14 22:52:08 +0000 |
|---|---|---|
| committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2014-11-14 22:52:08 +0000 |
| commit | cdcef73a23833ebd50bb5b654eb278b164e286ad (patch) | |
| tree | f19669a2afef6ee57823297443b891c35e9e0200 | |
| parent | 27fa71ebc6ef63ed8020d7b040640cb6c0cf2a45 (diff) | |
| parent | 168667c972a1e9ede5b64ad6cee0666e9b96d4d8 (diff) | |
| download | bionic-cdcef73a23833ebd50bb5b654eb278b164e286ad.zip bionic-cdcef73a23833ebd50bb5b654eb278b164e286ad.tar.gz bionic-cdcef73a23833ebd50bb5b654eb278b164e286ad.tar.bz2 | |
Merge "Add non-macro stdin/stdout/stderr too."
| -rw-r--r-- | libc/include/stdio.h | 13 | ||||
| -rw-r--r-- | libc/stdio/fileext.h | 4 | ||||
| -rw-r--r-- | libc/stdio/findfp.c | 5 |
3 files changed, 13 insertions, 9 deletions
diff --git a/libc/include/stdio.h b/libc/include/stdio.h index a7ec615..c0dac1a 100644 --- a/libc/include/stdio.h +++ b/libc/include/stdio.h @@ -146,7 +146,16 @@ typedef struct __sFILE { fpos_t _offset; /* current lseek offset */ } FILE; +/* Legacy BSD implementation of stdin/stdout/stderr. */ extern FILE __sF[]; +/* More obvious implementation. */ +extern FILE* stdin; +extern FILE* stdout; +extern FILE* stderr; +/* C99 and earlier plus current C++ standards say these must be macros. */ +#define stdin stdin +#define stdout stdout +#define stderr stderr #define __SLBF 0x0001 /* line buffered */ #define __SNBF 0x0002 /* unbuffered */ @@ -209,10 +218,6 @@ extern FILE __sF[]; #define SEEK_END 2 /* set file offset to EOF plus offset */ #endif -#define stdin (&__sF[0]) -#define stdout (&__sF[1]) -#define stderr (&__sF[2]) - /* * Functions defined in ANSI C standard. */ diff --git a/libc/stdio/fileext.h b/libc/stdio/fileext.h index 7efff8f..dc89fff 100644 --- a/libc/stdio/fileext.h +++ b/libc/stdio/fileext.h @@ -43,10 +43,6 @@ struct __sfileext { pthread_mutex_t _lock; /* file lock */ }; -__LIBC_HIDDEN__ extern struct __sfileext __sFext[3]; - -#define _FILEEXT_INITIALIZER {{NULL,0},{0},PTHREAD_RECURSIVE_MUTEX_INITIALIZER} - #define _EXT(fp) ((struct __sfileext *)((fp)->_ext._base)) #define _UB(fp) _EXT(fp)->_ub #define _FLOCK(fp) _EXT(fp)->_lock diff --git a/libc/stdio/findfp.c b/libc/stdio/findfp.c index ef8e9e6..5e51198 100644 --- a/libc/stdio/findfp.c +++ b/libc/stdio/findfp.c @@ -59,12 +59,15 @@ static struct glue uglue = { 0, FOPEN_MAX - 3, usual }; static struct glue *lastglue = &uglue; _THREAD_PRIVATE_MUTEX(__sfp_mutex); -struct __sfileext __sFext[3]; +static struct __sfileext __sFext[3]; FILE __sF[3] = { std(__SRD, STDIN_FILENO), /* stdin */ std(__SWR, STDOUT_FILENO), /* stdout */ std(__SWR|__SNBF, STDERR_FILENO) /* stderr */ }; +FILE* stdin = &__sF[0]; +FILE* stdout = &__sF[1]; +FILE* stderr = &__sF[2]; struct glue __sglue = { &uglue, 3, __sF }; static struct glue * |
