Closed maxsupermanhd closed 4 years ago
IDK how i get this and how it works but it cant open archive 8c-Sk-mischief-17555125ef4ff968085a43d616f21d6d3247872a9b9dda350fc5e4a1894e844d.zip
Thanks, I'll take a look closer. Maybe it's because of following extra info in central directory (64bit is not supported, yet):
The central-directory extra field contains:
- A subfield with ID 0x0001 (PKWARE 64-bit sizes) and 16 data bytes:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00.
Oh, that's kinda 64 bit zip maybe... Well I'm waiting 64 bit support.
Yeah, you're not the first one ;) I have to put some effort and finally add it (what can be very tricky and fragile). Anyway, for this particular case, it's just my first thought. I'll have to take a look closer. Maybe it's not really 64bit zip, but it just contains some 64bit flags which we can ignore.
@maxsupermanhd - is it Windows' issue? Because, I tested (on master branch) on OSX and everything looks fine (I was able to open and extract your archive).
@maxsupermanhd - could you verify, it's a windows issue? I don't have locally windows machine, so it could be helpful.
I didn't tried that on windows yet. Seems to be only Linux issue...
@maxsupermanhd - I tried to reproduce it on the latest ubuntu
Linux 94e507b7ce89 4.9.184-linuxkit #1 SMP Tue Jul 2 22:58:16 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
with gcc (Ubuntu 9.2.1-21ubuntu1) 9.2.1 20191130
but I successfully extracted 10 entries:
Extracted: /tmp/8c-mischief.addon.lev (1)
Extracted: /tmp/multiplay/ (2)
Extracted: /tmp/multiplay/maps/ (3)
Extracted: /tmp/multiplay/maps/8c-mischief/ (4)
Extracted: /tmp/multiplay/maps/8c-mischief.gam (5)
Extracted: /tmp/multiplay/maps/8c-mischief/dinit.bjo (6)
Extracted: /tmp/multiplay/maps/8c-mischief/feat.bjo (7)
Extracted: /tmp/multiplay/maps/8c-mischief/game.map (8)
Extracted: /tmp/multiplay/maps/8c-mischief/struct.bjo (9)
Extracted: /tmp/multiplay/maps/8c-mischief/ttypes.ttp (10)
with following snippet:
#include <stdio.h>
#include "zip.h"
int on_extract_entry(const char *filename, void *arg) {
static int i = 0;
printf("Extracted: %s (%d)\n", filename, ++i);
return 0;
}
int main() {
return zip_extract("/tmp/test.zip", "/tmp", on_extract_entry, NULL);
}
Yeah, it works fine but in some situations its failing without context. Kinda strange bug and i cant actually figure out where it goes... I've somehow fixed this in by source or its just too tricky to reproduce. For now this issue can be closed. I'll reopen if needed.