FastZip's NameTransform property is settable, but not honored
Steps to reproduce
- create a
FastZipinstance - set its
NameTransformproperty to anINameTransformimplementation - execute its
CreateZipmethod to create a zip file
Expected behavior
The configured name transform is used for the zip file creation.
Actual behavior
The configured name provider is ignored; CreateZip always sets it to a new ZipNameTransform instance.
If this is the intent, perhaps the documentation should better reflect this, and the setter should then probably be private (or protected, given that FastZip isn't sealed).
Note: the same happens if you set the EntryFactory to a custom entry factory with a custom name transform - CreateZip happily changes the factory's name transform. That sounds like highly irregular behavior.
Version of SharpZipLib
1.0
Obtained from (place an x between the brackets for all that apply)
- Package installed using:
- NuGet
Yes, that does seem counter-intuitive. CreateZip should use the backing field (entryFactory_.NameTransform) if it's not null or otherwise create a new a new instance the same way that it does right now. My guess is that CreateZip is meant to be used as a shortcut, when you only want the most basic behaviour. But then I guess it should either be static or clearly separated from the rest of the class.
A PR would be welcomed!
Will look at a making a PR when I have time. Maybe this weekend, but no promises.
Looking at the FastZip source, there are two name transform instances used by FastZip:
- The mentioned property, which gets set to a new instance of ZipNameTransform by CreateZip.
- A private 'extractNameTransform_' field which is set to an instance of WindowsNameTransform by ExtractZip().
Not sure what the logic is for (sort of) allowing the transform for Create to be specified, but not the one for Extract ?