am c4f1cfc9: am a779719d: Merge "Add TEMP_FAILURE_RETRY to stdio\'s low-level read/write functions."
				
					
				
			* commit 'c4f1cfc9fc5ba053525cd155d50fae8b67df0392': Add TEMP_FAILURE_RETRY to stdio's low-level read/write functions.
This commit is contained in:
		@@ -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 \
 | 
			
		||||
 
 | 
			
		||||
@@ -31,6 +31,7 @@
 | 
			
		||||
 * SUCH DAMAGE.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
#include <fcntl.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
@@ -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));
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user