Overview
| Comment: | ofzip: Do not skip over directory type tar entries
Previously, directories were only created as soon as there is a file in |
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
57551c2e32e96a23826e08922d16658e |
| User & Date: | js on 2017-10-07 08:21:37 |
| Other Links: | manifest | tags |
Context
|
2017-10-07
| ||
| 10:46 | OFThread: Fix setting the name on the wrong thread (check-in: 1494d3f6f1 user: js tags: trunk) | |
| 08:21 | ofzip: Do not skip over directory type tar entries (check-in: 57551c2e32 user: js tags: trunk) | |
|
2017-10-05
| ||
| 21:19 | OFStdIOStream_Win32Console: Fix wrong return (check-in: 46ebdddf8f user: js tags: trunk) | |
Changes
Modified utils/ofzip/TarArchive.m from [45466f7ad4] to [e256d7b4a3].
| ︙ | ︙ | |||
246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 |
OFMutableSet OF_GENERIC(OFString *) *missing =
[OFMutableSet setWithArray: files];
OFTarArchiveEntry *entry;
while ((entry = [_archive nextEntry]) != nil) {
void *pool = objc_autoreleasePoolPush();
OFString *fileName = [entry fileName];
OFString *outFileName = [fileName stringByStandardizingPath];
OFArray OF_GENERIC(OFString *) *pathComponents;
OFString *directory;
OFFile *output;
OFStream *stream;
uint64_t written = 0, size = [entry size];
int8_t percent = -1, newPercent;
if (!all && ![files containsObject: fileName])
continue;
| > | > | 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 |
OFMutableSet OF_GENERIC(OFString *) *missing =
[OFMutableSet setWithArray: files];
OFTarArchiveEntry *entry;
while ((entry = [_archive nextEntry]) != nil) {
void *pool = objc_autoreleasePoolPush();
OFString *fileName = [entry fileName];
of_tar_archive_entry_type_t type = [entry type];
OFString *outFileName = [fileName stringByStandardizingPath];
OFArray OF_GENERIC(OFString *) *pathComponents;
OFString *directory;
OFFile *output;
OFStream *stream;
uint64_t written = 0, size = [entry size];
int8_t percent = -1, newPercent;
if (!all && ![files containsObject: fileName])
continue;
if (type != OF_TAR_ARCHIVE_ENTRY_TYPE_FILE &&
type != OF_TAR_ARCHIVE_ENTRY_TYPE_DIRECTORY) {
if (app->_outputLevel >= 0)
[of_stdout writeLine: OF_LOCALIZED(
@"skipping_file",
@"Skipping %[file]...",
@"file", fileName)];
continue;
}
|
| ︙ | ︙ | |||
302 303 304 305 306 307 308 | outFileName = [OFString pathWithComponents: pathComponents]; if (app->_outputLevel >= 0) [of_stdout writeString: OF_LOCALIZED(@"extracting_file", @"Extracting %[file]...", @"file", fileName)]; | > > | | 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 |
outFileName = [OFString pathWithComponents: pathComponents];
if (app->_outputLevel >= 0)
[of_stdout writeString: OF_LOCALIZED(@"extracting_file",
@"Extracting %[file]...",
@"file", fileName)];
if (type == OF_TAR_ARCHIVE_ENTRY_TYPE_DIRECTORY ||
(type == OF_TAR_ARCHIVE_ENTRY_TYPE_FILE &&
[fileName hasSuffix: @"/"])) {
[fileManager createDirectoryAtPath: outFileName
createParents: true];
setPermissions(outFileName, entry);
if (app->_outputLevel >= 0) {
[of_stdout writeString: @"\r"];
[of_stdout writeLine: OF_LOCALIZED(
|
| ︙ | ︙ |