Provide access to extended attributes for 7-zip #904
Merged
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.
Some 7-zip archives have extended attributes to store Unix permissions. This caused problems in the past so the extended attributes were stripped when reading. However, this information can be useful or even critical in some cases, such as when extracting Linux/macOS prebuilt binaries for developing with Qt. These archives have execute permissions set for some files, and some of the files are intended to be created as symbolic links.
This PR provides access to the original full attributes via a new property in
SevenZipEntry. The other changes were just small cleanups. Specifically, as I looked atAttribDefined/SetAttriband wondered if there should be extended versions of these, I saw that these are properties in an internal class an nothing is ever referencing them. I also noticedCrcDefinedhad only one reference, and around where it was used showed an IDE warning that went away by usingHasValueinstead, so I thought it would be better to remove it.With this new
ExtendedAttribproperty, I was able to write an extraction routine that allows the Qt 7-zip archives to be extracted in a fully working state.