Open mh-cbon opened 8 years ago
hi @maxogden
I added some more debug to extract-zip module, to show the entry content, here is the results,
extract-zip zipfile entry +0ms nssm-2.24/win32/
extract-zip entry {"versionMadeBy":63,"versionNeededToExtract":20,"generalPurposeBitFlag":0,"compressionMethod":0,"lastModFileTime":33904,"lastModFileDate":17695,"crc32":0,"compressedSize":0,"uncompressedSize":0,"fileNameLength":16,"extraFieldLength":36,"fileCommentLength":0,"internalFileAttributes":0,"externalFileAttributes":48,"relativeOffsetOfLocalHeader":121948,"fileName":"nssm-2.24/win32/","extraFields":[{"id":10,"data":{"type":"Buffer","data":[0,0,0,0,1,0,24,0,40,138,64,50,49,197,207,1,40,138,64,50,49,197,207,1,40,138,64,50,49,197,207,1]}}],"fileComment":""} +0ms
extract-zip extracting entry +0ms { filename: 'nssm-2.24/win32/', isDir: false, isSymlink: false }
extract-zip mkdirp +0ms { dir: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24' }
extract-zip opening read stream +1ms /home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/win32/
extract-zip finished processing +0ms nssm-2.24/win32/
extract-zip write error +0ms { error:
{ [Error: EISDIR: illegal operation on a directory, open '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/win32/']
errno: -21,
code: 'EISDIR',
syscall: 'open',
path: '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/win32/' } }
Error: EISDIR: illegal operation on a directory, open '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/win32/'
at Error (native)
/home/mh-cbon/projects/nssm-prebuilt/install.js:68
throw err
^
Error: EISDIR: illegal operation on a directory, open '/home/mh-cbon/projects/nssm-prebuilt/prebuilt/nssm-2.24/win32/'
at Error (native)
hope this can help!
IMHO, i tracked the problem to this condition if (!isDir) isDir = (madeBy === 0 && entry.externalFileAttributes === 16)
where externalFileAttributes
Which give me some clues about the nature of the problem, so i ll start by trying to produce buggy zip files to reproduce this behavior then let s see.
Here are some tests file, based on the initial archive i wanted to unzip.
They are made of several tools and utilities available on windows to zip a folder.
The script
var extract = require('extract-zip')
extract("./nssm-2.24-windows7.zip", {dir: "./nssm-2.24-windows7"}, function (err) {
// extraction is complete. make sure to handle the err
})
extract("./nssm-2.24-7zip.zip", {dir: "./nssm-2.24-7zip"}, function (err) {
// extraction is complete. make sure to handle the err
})
extract("./nssm-2.24-winzip.zip", {dir: "./nssm-2.24-winzip"}, function (err) {
// extraction is complete. make sure to handle the err
})
extract("./nssm-2.24-winrar.zip", {dir: "./nssm-2.24-winrar"}, function (err) {
// extraction is complete. make sure to handle the err
})
nssm-2.24-7zip.zip nssm-2.24-windows7.zip nssm-2.24-winrar.zip nssm-2.24-winzip.zip
Unfortunately they all fail to extract the files entirely. They all bug on the same file : /
@mh-cbon awesome work so far. I wonder if there are other unzip implementations on github that deal with these externalFileAttributes. Also I may not have time to dive into this issue soon, but if you figure it out please do send a PR
Hi,
I m getting an error while extracting a zip file, probably made on windows, i m unsure as it s not mine, but believe so as it s about a windows binary.
The file seems not corrupted as i can unzip it with gnome unzip app.
Please see the debug output, and a test code to reproduce the error,
test code from this repo https://github.com/mh-cbon/nssm-prebuilt
It seems to be related to #13
I hope you can take a moment to help me !