From 117a32a63b837730cc97b0a233ab46e9abc6c7a7 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 19 Jul 2011 16:05:52 -0400 Subject: stdio: add support for "e" flag with fopen() Support this useful glibc extension for optionally setting O_CLOEXEC on fopen streams. Signed-off-by: Mike Frysinger --- libc/stdio/_fopen.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'libc/stdio') diff --git a/libc/stdio/_fopen.c b/libc/stdio/_fopen.c index 2db27a898..5bc61cf39 100644 --- a/libc/stdio/_fopen.c +++ b/libc/stdio/_fopen.c @@ -69,7 +69,8 @@ FILE attribute_hidden *_stdio_fopen(intptr_t fname_or_mode, #warning CONSIDER: Implement glibc mmap option for readonly files? #warning CONSIDER: Implement a text mode using custom read/write funcs? #endif -#if defined(__UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE__) || defined(__UCLIBC_HAS_FOPEN_LARGEFILE_MODE__) +#if defined(__UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE__) || defined(__UCLIBC_HAS_FOPEN_LARGEFILE_MODE__) || \ + defined(__UCLIBC_HAS_FOPEN_CLOSEEXEC_MODE__) while (*++mode) { # ifdef __UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE__ @@ -83,6 +84,12 @@ FILE attribute_hidden *_stdio_fopen(intptr_t fname_or_mode, open_mode |= O_LARGEFILE; continue; } +# endif +# ifdef __UCLIBC_HAS_FOPEN_CLOSEEXEC_MODE__ + if (*mode == 'e') { /* Close on exec (a glibc extension). */ + open_mode |= O_CLOEXEC; + continue; + } # endif } -- cgit v1.2.3