diff options
author | Kenny Root <kroot@google.com> | 2012-10-16 11:34:02 -0700 |
---|---|---|
committer | Kenny Root <kroot@google.com> | 2012-10-16 14:00:56 -0700 |
commit | d611117f246213ee4bb183a3015c1fd79593074b (patch) | |
tree | 62713e88e97cc6016d2f9c9cb036af421c98aeaa /libs | |
parent | e3a669656ae891a510ccbd73d26559a20f5f466b (diff) | |
download | frameworks_native-d611117f246213ee4bb183a3015c1fd79593074b.zip frameworks_native-d611117f246213ee4bb183a3015c1fd79593074b.tar.gz frameworks_native-d611117f246213ee4bb183a3015c1fd79593074b.tar.bz2 |
Add TEMP_FAILURE_RETRY to ZipUtils
Change-Id: I275c415f14eeffaf9a58d45f3ea014d766441ec3
Diffstat (limited to 'libs')
-rw-r--r-- | libs/utils/ZipFileRO.cpp | 24 | ||||
-rw-r--r-- | libs/utils/ZipUtils.cpp | 10 |
2 files changed, 7 insertions, 27 deletions
diff --git a/libs/utils/ZipFileRO.cpp b/libs/utils/ZipFileRO.cpp index cad7720..05ff269 100644 --- a/libs/utils/ZipFileRO.cpp +++ b/libs/utils/ZipFileRO.cpp @@ -20,6 +20,7 @@ #define LOG_TAG "zipro" //#define LOG_NDEBUG 0 #include <utils/Log.h> +#include <utils/Compat.h> #include <utils/ZipFileRO.h> #include <utils/misc.h> #include <utils/threads.h> @@ -32,14 +33,6 @@ #include <assert.h> #include <unistd.h> -#if HAVE_PRINTF_ZD -# define ZD "%zd" -# define ZD_TYPE ssize_t -#else -# define ZD "%ld" -# define ZD_TYPE long -#endif - /* * We must open binary files using open(path, ... | O_BINARY) under Windows. * Otherwise strange read errors will happen. @@ -48,21 +41,6 @@ # define O_BINARY 0 #endif -/* - * TEMP_FAILURE_RETRY is defined by some, but not all, versions of - * <unistd.h>. (Alas, it is not as standard as we'd hoped!) So, if it's - * not already defined, then define it here. - */ -#ifndef TEMP_FAILURE_RETRY -/* Used to retry syscalls that can return EINTR. */ -#define TEMP_FAILURE_RETRY(exp) ({ \ - typeof (exp) _rc; \ - do { \ - _rc = (exp); \ - } while (_rc == -1 && errno == EINTR); \ - _rc; }) -#endif - using namespace android; /* diff --git a/libs/utils/ZipUtils.cpp b/libs/utils/ZipUtils.cpp index cf5467b..a43bbb0 100644 --- a/libs/utils/ZipUtils.cpp +++ b/libs/utils/ZipUtils.cpp @@ -21,6 +21,7 @@ #define LOG_TAG "ziputil" #include <utils/Log.h> +#include <utils/Compat.h> #include <utils/ZipUtils.h> #include <utils/ZipFileRO.h> @@ -98,10 +99,11 @@ using namespace android; ALOGV("+++ reading %ld bytes (%ld left)\n", getSize, compRemaining); - int cc = read(fd, readBuf, getSize); - if (cc != (int) getSize) { - ALOGD("inflate read failed (%d vs %ld)\n", - cc, getSize); + int cc = TEMP_FAILURE_RETRY(read(fd, readBuf, getSize)); + if (cc < 0) { + ALOGW("inflate read failed: %s", strerror(errno)); + } else if (cc != (int) getSize) { + ALOGW("inflate read failed (%d vs %ld)", cc, getSize); goto z_bail; } |