Overview
Comment: | OFZIP: Better verbose output |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
c0956705433f8342108c14905ad75326 |
User & Date: | js on 2014-05-29 21:13:27 |
Other Links: | manifest | tags |
Context
2014-05-29
| ||
21:27 | Work around __block being used by old glibc check-in: d1e559b643 user: js tags: trunk | |
21:13 | OFZIP: Better verbose output check-in: c095670543 user: js tags: trunk | |
2014-05-26
| ||
20:08 | OFZIP: Set permissions - if entry has any check-in: a7f9c9d4bc user: js tags: trunk | |
Changes
Modified src/OFZIPArchiveEntry.h from [59049cfaf8] to [65e4e11889].
︙ | ︙ | |||
24 25 26 27 28 29 30 | OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_DEFLATE64 = 9 }; /*! * @brief Attribute compatibility part of ZIP versions. */ enum of_zip_archive_entry_attribute_compatibility { | | | 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | OF_ZIP_ARCHIVE_ENTRY_COMPRESSION_METHOD_DEFLATE64 = 9 }; /*! * @brief Attribute compatibility part of ZIP versions. */ enum of_zip_archive_entry_attribute_compatibility { /** MS-DOS and OS/2 */ OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_MSDOS = 0, /** Amiga */ OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_AMIGA = 1, /** OpenVMS */ OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_OPENVMS = 2, /** UNIX */ OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_UNIX = 3, |
︙ | ︙ | |||
209 210 211 212 213 214 215 216 217 218 219 220 221 222 | */ - (OFDataArray*)extraField; @end #ifdef __cplusplus extern "C" { #endif /*! * @brief Gets a pointer to and the size of the extensible data field with the * specified tag. * * @param extraField The extra field to search for an extensible data field with * the specified tag * @param tag The tag to look for | > > > > > > > > | 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 | */ - (OFDataArray*)extraField; @end #ifdef __cplusplus extern "C" { #endif /*! * @brief Converts the ZIP entry version to a string * * @param version The ZIP entry version to convert to a string * @return The ZIP entry version as a string */ extern OFString* of_zip_archive_entry_version_to_string(uint16_t version); /*! * @brief Gets a pointer to and the size of the extensible data field with the * specified tag. * * @param extraField The extra field to search for an extensible data field with * the specified tag * @param tag The tag to look for |
︙ | ︙ |
Modified src/OFZIPArchiveEntry.m from [96e189c829] to [35f57b5408].
︙ | ︙ | |||
27 28 29 30 31 32 33 34 35 36 37 38 39 40 | #import "macros.h" #import "OFInvalidArgumentException.h" #import "OFInvalidFormatException.h" extern uint32_t of_zip_archive_read_field32(uint8_t**, uint16_t*); extern uint64_t of_zip_archive_read_field64(uint8_t**, uint16_t*); void of_zip_archive_entry_extra_field_find(OFDataArray *extraField, uint16_t tag, uint8_t **data, uint16_t *size) { uint8_t *bytes; size_t i, count; | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 | #import "macros.h" #import "OFInvalidArgumentException.h" #import "OFInvalidFormatException.h" extern uint32_t of_zip_archive_read_field32(uint8_t**, uint16_t*); extern uint64_t of_zip_archive_read_field64(uint8_t**, uint16_t*); OFString* of_zip_archive_entry_version_to_string(uint16_t version) { const char *attrCompat = NULL; switch (version >> 8) { case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_MSDOS: attrCompat = "MS-DOS or OS/2"; break; case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_AMIGA: attrCompat = "Amiga"; break; case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_OPENVMS: attrCompat = "OpenVMS"; break; case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_UNIX: attrCompat = "UNIX"; break; case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_VM_CMS: attrCompat = "VM/CMS"; break; case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_ATARI_ST: attrCompat = "Atari ST"; break; case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_OS2_HPFS: attrCompat = "OS/2 HPFS"; break; case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_MACINTOSH: attrCompat = "Macintosh"; break; case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_Z_SYSTEM: attrCompat = "Z-System"; break; case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_CP_M: attrCompat = "CP/M"; break; case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_WINDOWS_NTFS: attrCompat = "Windows NTFS"; break; case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_MVS: attrCompat = "MVS (OS/390 - Z/OS)"; break; case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_VSE: attrCompat = "VSE"; break; case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_ACORN_RISC: attrCompat = "Acorn Risc"; break; case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_VFAT: attrCompat = "VFAT"; break; case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_ALTERNATE_MVS: attrCompat = "Alternate MVS"; break; case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_BEOS: attrCompat = "BeOS"; break; case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_TANDEM: attrCompat = "Tandem"; break; case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_OS_400: attrCompat = "OS/400"; break; case OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_OS_X: attrCompat = "OS X (Darwin)"; break; } if (attrCompat != NULL) return [OFString stringWithFormat: @"%u.%u, %s", (version & 0xFF) / 10, (version & 0xFF) % 10, attrCompat]; else return [OFString stringWithFormat: @"%u.%u, unknown %02X", (version % 0xFF) / 10, (version & 0xFF) % 10, version >> 8]; } void of_zip_archive_entry_extra_field_find(OFDataArray *extraField, uint16_t tag, uint8_t **data, uint16_t *size) { uint8_t *bytes; size_t i, count; |
︙ | ︙ |
Modified utils/OFZIP.m from [abd59c7cd9] to [0b675f054e].
︙ | ︙ | |||
218 219 220 221 222 223 224 225 226 227 228 229 | { OFEnumerator *enumerator = [[archive entries] objectEnumerator]; OFZIPArchiveEntry *entry; while ((entry = [enumerator nextObject]) != nil) { void *pool = objc_autoreleasePoolPush(); if (_outputLevel >= 1) { OFString *date = [[entry modificationDate] localDateStringWithFormat: @"%Y-%m-%d %H:%M:%S"]; [of_stdout writeFormat: | > > | | > > | | > > > > > > | > > > > | | | > | < | > | 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 | { OFEnumerator *enumerator = [[archive entries] objectEnumerator]; OFZIPArchiveEntry *entry; while ((entry = [enumerator nextObject]) != nil) { void *pool = objc_autoreleasePoolPush(); [of_stdout writeLine: [entry fileName]]; if (_outputLevel >= 1) { OFString *date = [[entry modificationDate] localDateStringWithFormat: @"%Y-%m-%d %H:%M:%S"]; [of_stdout writeFormat: @"\tCompressed: %" PRIu64 @" bytes\n" @"\tUncompressed: %" PRIu64 @" bytes\n" @"\tCRC32: %08X\n" @"\tModification date: %@\n", [entry compressedSize], [entry uncompressedSize], [entry CRC32], date]; if (_outputLevel >= 2) { uint16_t versionMadeBy = [entry versionMadeBy]; [of_stdout writeFormat: @"\tVersion made by: %@\n" @"\tMinimum version needed: %@\n", of_zip_archive_entry_version_to_string( versionMadeBy), of_zip_archive_entry_version_to_string( [entry minVersionNeeded])]; if ((versionMadeBy >> 8) == OF_ZIP_ARCHIVE_ENTRY_ATTR_COMPAT_UNIX) { uint32_t mode = [entry versionSpecificAttributes] >> 16; [of_stdout writeFormat: @"\tMode: %06o\n", mode]; } } if (_outputLevel >= 3) [of_stdout writeFormat: @"\tExtra field: %@\n", [entry extraField]]; if ([[entry fileComment] length] > 0) [of_stdout writeFormat: @"\tComment: %@\n", [entry fileComment]]; } objc_autoreleasePoolPop(pool); } } - (void)extractFiles: (OFArray*)files fromArchive: (OFZIPArchive*)archive |
︙ | ︙ |