diff --git a/libc/Android.mk b/libc/Android.mk index cc1585cb9..e96bcff3e 100644 --- a/libc/Android.mk +++ b/libc/Android.mk @@ -61,6 +61,7 @@ libc_common_src_files := \ stdio/fread.c \ stdio/snprintf.c\ stdio/sprintf.c \ + stdio/stdio.c \ stdio/stdio_ext.cpp \ # Fortify implementations of libc functions. @@ -450,7 +451,6 @@ libc_upstream_openbsd_src_files := \ upstream-openbsd/lib/libc/stdio/setbuffer.c \ upstream-openbsd/lib/libc/stdio/setvbuf.c \ upstream-openbsd/lib/libc/stdio/sscanf.c \ - upstream-openbsd/lib/libc/stdio/stdio.c \ upstream-openbsd/lib/libc/stdio/swprintf.c \ upstream-openbsd/lib/libc/stdio/swscanf.c \ upstream-openbsd/lib/libc/stdio/tempnam.c \ diff --git a/libc/upstream-openbsd/lib/libc/stdio/stdio.c b/libc/stdio/stdio.c similarity index 88% rename from libc/upstream-openbsd/lib/libc/stdio/stdio.c rename to libc/stdio/stdio.c index a4a27b53b..13b98877d 100644 --- a/libc/upstream-openbsd/lib/libc/stdio/stdio.c +++ b/libc/stdio/stdio.c @@ -31,6 +31,7 @@ * SUCH DAMAGE. */ +#include #include #include #include @@ -46,7 +47,7 @@ __sread(void *cookie, char *buf, int n) FILE *fp = cookie; int ret; - ret = read(fp->_file, buf, n); + ret = TEMP_FAILURE_RETRY(read(fp->_file, buf, n)); /* if the read succeeded, update the current offset */ if (ret >= 0) fp->_offset += ret; @@ -61,9 +62,9 @@ __swrite(void *cookie, const char *buf, int n) FILE *fp = cookie; if (fp->_flags & __SAPP) - (void) lseek(fp->_file, (off_t)0, SEEK_END); + (void) TEMP_FAILURE_RETRY(lseek(fp->_file, (off_t)0, SEEK_END)); fp->_flags &= ~__SOFF; /* in case FAPPEND mode is set */ - return (write(fp->_file, buf, n)); + return TEMP_FAILURE_RETRY(write(fp->_file, buf, n)); } fpos_t @@ -72,7 +73,7 @@ __sseek(void *cookie, fpos_t offset, int whence) FILE *fp = cookie; off_t ret; - ret = lseek(fp->_file, (off_t)offset, whence); + ret = TEMP_FAILURE_RETRY(lseek(fp->_file, (off_t)offset, whence)); if (ret == (off_t)-1) fp->_flags &= ~__SOFF; else { @@ -85,5 +86,5 @@ __sseek(void *cookie, fpos_t offset, int whence) int __sclose(void *cookie) { - return (close(((FILE *)cookie)->_file)); + return TEMP_FAILURE_RETRY(close(((FILE *)cookie)->_file)); }