diff options
Diffstat (limited to 'include/utils/ZipFileRO.h')
-rw-r--r-- | include/utils/ZipFileRO.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/include/utils/ZipFileRO.h b/include/utils/ZipFileRO.h index 3a99979..547e36a 100644 --- a/include/utils/ZipFileRO.h +++ b/include/utils/ZipFileRO.h @@ -38,6 +38,7 @@ #include <stdio.h> #include <stdlib.h> #include <unistd.h> +#include <time.h> namespace android { @@ -174,6 +175,20 @@ public: size_t uncompLen, size_t compLen); /* + * 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; + } + + /* * Some basic functions for raw data manipulation. "LE" means * Little Endian. */ |