<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Hi Juan,<br>
<br>
I got tried to work around this problem by reading the<br>
license files in binary mode and converting them to a string.<br>
However this leads to as CRC error:<br>
<br>
<tt> extracting: LICENSES.txt bad CRC 46294e2b (should
be c42f8133)</tt><br>
<br>
<br>
As promised I skimmed the ZIP file spec at <tt><a class="moz-txt-link-freetext" href="https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT">https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT</a></tt><br>
I only saw provisions for UTF-8 file names.<br>
Indeed we have problems storing such files; adding<br>
this one <tt><a class="moz-txt-link-freetext" href="https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev/blob/master/CoreUpdates/5922-FixedClassMethodPushDown-Tom%C3%A1sSpognardi-2023Jul09-20h38m-TS.001.cs.st">https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev/blob/master/CoreUpdates/5922-FixedClassMethodPushDown-Tom%C3%A1sSpognardi-2023Jul09-20h38m-TS.001.cs.st</a></tt><br>
yields the following error when listing the contents with<tt> unzip
-l</tt><tt><br>
</tt><tt><br>
</tt><tt> 1195 2023-07-19 20:39
Image/CoreUpdates/5922-FixedClassMethodPushDown-TomásSpognardi-2023Jul09-20h38m-TS.001.cs.s</tt><tt><br>
</tt><tt>error: expected central file header signature not found
(file #459).</tt><tt><br>
</tt><tt> (please check that you have transferred or created the
zipfile in the</tt><br>
<br>
<br>
<div class="moz-cite-prefix"><b>The biggest problem however is this
one:<br>
<br>
</b>Execute the following code snippet:<br>
<br>
<tt>'testIn.bin' asFileEntry forceWriteStreamDo: [ :ws |<br>
ws binary.<br>
ws nextPutAll: #[16rF1 16rF7] ].<br>
<br>
<br>
ZipArchive new<br>
zipFileComment: 'ZIP file test';<br>
addFile: 'testIn.bin' as: 'testOut.bin';<br>
writeToFileNamed: 'testbin.zip'<br>
<br>
</tt>Then unzip the file with:<br>
<br>
bear@speedy ~/s/c/Environments> unzip testbin.zip<br>
Archive: testbin.zip<br>
ZIP file test<br>
inflating: testOut.bin<br>
<br>
This yields the following:<br>
<br>
<tt>bear@speedy ~/s/c/Environments> ls -l test*.bin<br>
-rw-r--r-- 1 bear bear 2 Nov 22 12:01 testIn.bin<br>
-rw-rw-rw- 1 bear bear 4 Nov 22 12:01 testOut.bin<br>
<br>
</tt>Invoking <tt>hexdump</tt> on both files shows a "slight"
difference:<br>
<br>
<tt>bear@speedy ~/s/c/Environments> hexdump testIn.bin</tt><tt><br>
</tt><tt>0000000 f7f1 </tt><tt><br>
</tt><tt>0000002</tt><tt><br>
</tt><tt>bear@speedy ~/s/c/Environments> hexdump testOut.bin</tt><tt><br>
</tt><tt>0000000 b1c3 b7c3 </tt><tt><br>
</tt><tt>0000004</tt><br>
<br>
Obviously some UTF8 conversion happened.<br>
Needless to say that <tt>ZipArchive</tt> can't be used to
compress binary<br>
files and thus I can't create a distribution of Haver<br>
with my current tool-set.<br>
<br>
<br>
Best Regards,<br>
<br>
Gerald<br>
<br>
<br>
<br>
On 11/22/23 10:21 AM, Gerald Klix via Cuis-dev wrote:<br>
</div>
<blockquote type="cite"
cite="mid:a929201e-c7f1-76b6-684b-cf4d30e116c8@klix.ch">Thank's
Juan,
<br>
<br>
this works now.
<br>
<br>
Alas when I tried to create a new Haver release I ran into another
problem.
<br>
I also add strings to the ZIP-archive, for example a generated
file that contains
<br>
all the contents of all the license files found. The resulting
string contains
<br>
Unicode code-points, which makes the CRC computation fail.
<br>
<br>
In essence when sending #updateCrc:from:to:in: the primitive fails
– for
<br>
obvious reasons – and the failure code kicks in. This in turn
(indirectly) sends #bitXor:
<br>
to a UnicodePoint instance, which results in a DNU exception.
<br>
<br>
I will try to do some research on how UTF8 data is supposed
<br>
to be stored in a ZIP file.
<br>
<br>
<br>
Thank's again and Best Regards,
<br>
<br>
Gerald
<br>
<br>
<br>
<br>
On 11/21/23 9:12 PM, Juan Vuletich wrote:
<br>
<blockquote type="cite">On 11/14/2023 10:20 AM, Gerald Klix via
Cuis-dev wrote:
<br>
<blockquote type="cite">Hi all, Hi Juan,
<br>
<br>
The following snippet does not terminate (within reasonable
time, 20h):
<br>
<br>
(z1 := ZipArchive new) zipFileComment: 'ZIP test'.
<br>
z1
<br>
addFile: SourceFiles first fileEntry as: 'f1';
<br>
writeToFileNamed: 'test.zip';
<br>
close.
<br>
<br>
Adding small test files, created like this: echo test >
test.txt ,
<br>
however does work:
<br>
<br>
(z3 := ZipArchive new) zipFileComment: 'ZIP test'.
<br>
z3
<br>
addFile: Smalltalk imageName as: 'f3';
<br>
writeToFileNamed: 'test.zip';
<br>
close.
<br>
<br>
<br>
<br>
Best Regards,
<br>
<br>
Gerald
<br>
</blockquote>
<br>
Hi Gerald,
<br>
<br>
I just pushed a fix to GitHub. Thanks for reporting.
<br>
<br>
Cheers,
<br>
<br>
</blockquote>
<br>
</blockquote>
<br>
</body>
</html>