Rev | Line | |
---|
[1] | 1 | #include "dietstdio.h" |
---|
| 2 | #include <unistd.h> |
---|
| 3 | #include <fcntl.h> |
---|
| 4 | #include <errno.h> |
---|
| 5 | |
---|
| 6 | /* this is needed so the libpthread wrapper can initialize the mutex, |
---|
| 7 | * not to lock it */ |
---|
| 8 | |
---|
| 9 | FILE *freopen_unlocked(const char *path, const char *mode, FILE *stream) { |
---|
| 10 | if (stream) { |
---|
| 11 | int f=__stdio_parse_mode(mode); |
---|
| 12 | fflush_unlocked(stream); |
---|
| 13 | close(stream->fd); |
---|
| 14 | if ((stream->fd=open(path,f,0666))!=-1) { |
---|
| 15 | //struct stat st; |
---|
| 16 | //fstat(stream->fd,&st); |
---|
| 17 | stream->flags = 0;//=(S_ISFIFO(st.st_mode))?FDPIPE:0; |
---|
| 18 | switch (f&3) { |
---|
| 19 | case O_RDWR: stream->flags|=CANWRITE; |
---|
| 20 | case O_RDONLY: stream->flags|=CANREAD; break; |
---|
| 21 | case O_WRONLY: stream->flags|=CANWRITE; |
---|
| 22 | } |
---|
| 23 | } |
---|
| 24 | } else errno=EINVAL; |
---|
| 25 | return stream; |
---|
| 26 | } |
---|
| 27 | |
---|
| 28 | FILE *freopen(const char *path, const char *mode, FILE *stream) __attribute__((weak,alias("freopen_unlocked"))); |
---|
Note: See
TracBrowser
for help on using the repository browser.