Skip to content
This repository has been archived by the owner on Nov 8, 2023. It is now read-only.

Commit

Permalink
Merge "Make adb robust against EINTR"
Browse files Browse the repository at this point in the history
  • Loading branch information
kruton authored and Gerrit Code Review committed Oct 13, 2012
2 parents 674c044 + 7316741 commit 207c17f
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 9 deletions.
2 changes: 1 addition & 1 deletion adb/services.c
Expand Up @@ -202,7 +202,7 @@ static void echo_service(int fd, void *cookie)
int c;

for(;;) {
r = read(fd, buf, 4096);
r = adb_read(fd, buf, 4096);
if(r == 0) goto done;
if(r < 0) {
if(errno == EINTR) continue;
Expand Down
17 changes: 9 additions & 8 deletions adb/sysdeps.h
Expand Up @@ -272,6 +272,7 @@ static __inline__ int adb_is_absolute_host_path( const char* path )
#include <netinet/in.h>
#include <netinet/tcp.h>
#include <string.h>
#include <unistd.h>

#define OS_PATH_SEPARATOR '/'
#define OS_PATH_SEPARATOR_STR "/"
Expand Down Expand Up @@ -306,7 +307,7 @@ static __inline__ int unix_open(const char* path, int options,...)
{
if ((options & O_CREAT) == 0)
{
return open(path, options);
return TEMP_FAILURE_RETRY( open(path, options) );
}
else
{
Expand All @@ -315,19 +316,19 @@ static __inline__ int unix_open(const char* path, int options,...)
va_start( args, options );
mode = va_arg( args, int );
va_end( args );
return open(path, options, mode);
return TEMP_FAILURE_RETRY( open( path, options, mode ) );
}
}

static __inline__ int adb_open_mode( const char* pathname, int options, int mode )
{
return open( pathname, options, mode );
return TEMP_FAILURE_RETRY( open( pathname, options, mode ) );
}


static __inline__ int adb_open( const char* pathname, int options )
{
int fd = open( pathname, options );
int fd = TEMP_FAILURE_RETRY( open( pathname, options ) );
if (fd < 0)
return -1;
close_on_exec( fd );
Expand All @@ -353,15 +354,15 @@ static __inline__ int adb_close(int fd)

static __inline__ int adb_read(int fd, void* buf, size_t len)
{
return read(fd, buf, len);
return TEMP_FAILURE_RETRY( read( fd, buf, len ) );
}

#undef read
#define read ___xxx_read

static __inline__ int adb_write(int fd, const void* buf, size_t len)
{
return write(fd, buf, len);
return TEMP_FAILURE_RETRY( write( fd, buf, len ) );
}
#undef write
#define write ___xxx_write
Expand All @@ -382,7 +383,7 @@ static __inline__ int adb_unlink(const char* path)

static __inline__ int adb_creat(const char* path, int mode)
{
int fd = creat(path, mode);
int fd = TEMP_FAILURE_RETRY( creat( path, mode ) );

if ( fd < 0 )
return -1;
Expand All @@ -397,7 +398,7 @@ static __inline__ int adb_socket_accept(int serverfd, struct sockaddr* addr,
{
int fd;

fd = accept(serverfd, addr, addrlen);
fd = TEMP_FAILURE_RETRY( accept( serverfd, addr, addrlen ) );
if (fd >= 0)
close_on_exec(fd);

Expand Down

0 comments on commit 207c17f

Please sign in to comment.