feat: ZipArchive::root_dir
and ZipArchive::extract_unwrapped_root_dir
#304
+505
−3
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR implements the concept of a "root directory" in the Zip archive in the context of extraction.
It's very typical to find Zip archives that consist of a single, sole, top-level, root directory containing the rest of the archive's entries. In some cases this might be something the developer wants to "unwrap" when extracting.
Example
Imagine a Zip archive with the following structure:
If the archive is extracted to
foo
usingZipArchive::extract
, the resulting directory structure will be:If the archive is extracted to
foo
usingZipArchive::extract_unwrapped_root_dir
, the resulting directory structure will be:Example - No Root Directory
Imagine a Zip archive with the following structure:
Due to the presence of the
other
directory,ZipArchive::extract_unwrapped_root_dir
will extract this in the same fashion asZipArchive::extract
as there is now no "root directory."