greatly improve freopen behavior
1. don't open /dev/null just as a basis to copy flags; use shared __fmodeflags function to get the right file flags for the mode. 2. handle the case (probably invalid, but whatever) case where the original stream's file descriptor was closed; previously, the logic re-closed it. 3. accept the "e" mode flag for close-on-exec; update dup3 to fallback to using dup2 so we can simply call __dup3 instead of putting fallback logic in freopen itself.
This commit is contained in:
parent
708c91f4e9
commit
892cafff66
5 changed files with 41 additions and 17 deletions
|
|
@ -87,6 +87,7 @@ size_t __fwritex(const unsigned char *, size_t, FILE *);
|
|||
int __putc_unlocked(int, FILE *);
|
||||
|
||||
FILE *__fdopen(int, const char *);
|
||||
int __fmodeflags(const char *);
|
||||
|
||||
#define OFLLOCK() LOCK(libc.ofl_lock)
|
||||
#define OFLUNLOCK() UNLOCK(libc.ofl_lock)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue