diff options
Diffstat (limited to 'include/androidfw/ZipUtils.h')
-rw-r--r-- | include/androidfw/ZipUtils.h | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/include/androidfw/ZipUtils.h b/include/androidfw/ZipUtils.h index 42c42b6..6bea25a 100644 --- a/include/androidfw/ZipUtils.h +++ b/include/androidfw/ZipUtils.h @@ -21,6 +21,7 @@ #define __LIBS_ZIPUTILS_H #include <stdio.h> +#include <time.h> namespace android { @@ -33,9 +34,11 @@ public: * General utility function for uncompressing "deflate" data from a file * to a buffer. */ + static bool inflateToBuffer(FILE* fp, void* buf, long uncompressedLen, + long compressedLen); static bool inflateToBuffer(int fd, void* buf, long uncompressedLen, long compressedLen); - static bool inflateToBuffer(FILE* fp, void* buf, long uncompressedLen, + static bool inflateToBuffer(void *in, void* buf, long uncompressedLen, long compressedLen); /* @@ -57,6 +60,19 @@ public: static bool examineGzip(FILE* fp, int* pCompressionMethod, long* pUncompressedLen, long* pCompressedLen, unsigned long* pCRC32); + /* + * Utility function to convert ZIP's time format to a timespec struct. + */ + static inline void zipTimeToTimespec(long when, struct tm* timespec) { + const long date = when >> 16; + timespec->tm_year = ((date >> 9) & 0x7F) + 80; // Zip is years since 1980 + timespec->tm_mon = (date >> 5) & 0x0F; + timespec->tm_mday = date & 0x1F; + + timespec->tm_hour = (when >> 11) & 0x1F; + timespec->tm_min = (when >> 5) & 0x3F; + timespec->tm_sec = (when & 0x1F) << 1; + } private: ZipUtils() {} ~ZipUtils() {} |