If I force the creation of a Zip64 zip file that just contains a single directory, none of the expected Zip64 records are populated in the central directory. All the other Zip64 parts are created normally.
I can reproduce this with both zip 3.0 & zip 3.1.d-BETA.
Reproduce the issue like this.
First create the zip file (see attached)
$ mkdir fred
$ zip -fz fred.zip fred
adding: fred/ (stored 0%)
Let's see what zip thinks about it
$ zip -l fred.zip
zip warning: expected 1 entries but found 0
zip error: Zip file structure invalid (fred.zip)
and unzip
$ unzip -l fred.zip
Archive: fred.zip
error [fred.zip]: missing 4294967212 bytes in zipfile
(attempting to process anyway)
Length Date Time Name
--------- ---------- ----- ----
0 2020-03-29 14:59 fred/
--------- -------
0 1 file
Let's have a look inside the zip file. The End of Central Directory Record has the offset to start of central directory set to FFFFFFFF as expected, but both the Zip64 end of central directory locator and Zip64 end of central directory record are missing. everything else looks ok for a Zip64 zip file.
$ zipdetails --scan fred.zip
0000 LOCAL HEADER #1 04034B50
0004 Extract Zip Spec 2D '4.5'
0005 Extract OS 00 'MS-DOS'
0006 General Purpose Flag 0000
0008 Compression Method 0000 'Stored'
000A Last Mod Time 507D7765 'Sun Mar 29 14:59:10 2020'
000E CRC 00000000
0012 Compressed Length FFFFFFFF
0016 Uncompressed Length FFFFFFFF
001A Filename Length 0005
001C Extra Length 0030
001E Filename 'fred/'
0023 Extra ID #0001 5455 'UT: Extended Timestamp'
0025 Length 0009
0027 Flags '03 mod access'
0028 Mod Time 5E80A9AE 'Sun Mar 29 14:59:10 2020'
002C Access Time 5E80A9AE 'Sun Mar 29 14:59:10 2020'
0030 Extra ID #0002 7875 'ux: Unix Extra Type 3'
0032 Length 000B
0034 Version 01
0035 UID Size 04
0036 UID 000003E8
003A GID Size 04
003B GID 000003E8
003F Extra ID #0003 0001 'ZIP64'
0041 Length 0010
0043 Uncompressed Size 0000000000000000
004B Compressed Size 0000000000000000
0053 PAYLOAD
0053 CENTRAL HEADER #1 02014B50
0057 Created Zip Spec 1E '3.0'
0058 Created OS 03 'Unix'
0059 Extract Zip Spec 0A '1.0'
005A Extract OS 00 'MS-DOS'
005B General Purpose Flag 0000
005D Compression Method 0000 'Stored'
005F Last Mod Time 507D7765 'Sun Mar 29 14:59:10 2020'
0063 CRC 00000000
0067 Compressed Length 00000000
006B Uncompressed Length FFFFFFFF
006F Filename Length 0005
0071 Extra Length 0024
0073 Comment Length 0000
0075 Disk Start 0000
0077 Int File Attributes 0000
[Bit 0] 0 'Binary Data'
0079 Ext File Attributes 41FD0010
[Bit 4] Directory
007D Local Header Offset 00000000
0081 Filename 'fred/'
0086 Extra ID #0001 5455 'UT: Extended Timestamp'
0088 Length 0005
008A Flags '03 mod access'
008B Mod Time 5E80A9AE 'Sun Mar 29 14:59:10 2020'
008F Extra ID #0002 7875 'ux: Unix Extra Type 3'
0091 Length 000B
0093 Version 01
0094 UID Size 04
0095 UID 000003E8
0099 GID Size 04
009A GID 000003E8
009E Extra ID #0003 0001 'ZIP64'
00A0 Length 0008
00A2 Uncompressed Size 0000000000000000
00AA END CENTRAL HEADER 06054B50
00AE Number of this disk 0000
00B0 Central Dir Disk no 0000
00B2 Entries in this disk 0001
00B4 Total Entries 0001
00B6 Size of Central Dir 00000057
00BA Offset to Central Dir FFFFFFFF <===========
00BE Comment Length 0000
Done
This looks the same as bug #68. As noted there, the --force option seems to be working, but the code that creates the Zip64 headers is not being told to do that.
Adding this bug to the queue of Zip bugs to work. It should be a fairly quick fix, but no telling when we'll get Zip 3.1 out with it.