From 41748e27c65310c83968cbd2f99e9a61c4a43e81 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Fri, 27 Jun 2003 08:57:23 +0000 Subject: Do not let isatty mess up errno --- libc/stdio/stdio.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'libc/stdio') diff --git a/libc/stdio/stdio.c b/libc/stdio/stdio.c index 9a7afbc85..0d4708d97 100644 --- a/libc/stdio/stdio.c +++ b/libc/stdio/stdio.c @@ -1953,9 +1953,11 @@ void _stdio_term(void) void _stdio_init(void) { #ifdef __STDIO_BUFFERS + int old_errno = errno; /* stdin and stdout uses line buffering when connected to a tty. */ _stdio_streams[0].modeflags ^= (1-isatty(0)) * __FLAG_LBF; _stdio_streams[1].modeflags ^= (1-isatty(1)) * __FLAG_LBF; + __set_errno(old_errno); #endif /* __STDIO_BUFFERS */ #ifndef __UCLIBC__ /* __stdio_term is automatically when exiting if stdio is used. @@ -2404,10 +2406,16 @@ FILE *_stdio_fopen(const char * __restrict filename, return NULL; } - stream->modeflags |= #ifdef __STDIO_BUFFERS - (isatty(stream->filedes) * __FLAG_LBF) | -#endif /* __STDIO_BUFFERS */ + { + /* Do not let isatty mess up errno */ + int old_errno = errno; + stream->modeflags |= (isatty(stream->filedes) * __FLAG_LBF); + __set_errno(old_errno); + } +#endif + + stream->modeflags |= #if (O_APPEND == __FLAG_APPEND) \ && ((O_LARGEFILE == __FLAG_LARGEFILE) || (O_LARGEFILE == 0)) (open_mode & (O_APPEND|O_LARGEFILE)) | /* i386 linux and elks */ -- cgit v1.2.3