PluginProbe ʕ •ᴥ•ʔ
File Manager Pro – Filester / trunk
File Manager Pro – Filester vtrunk
2.1.1 trunk 1.6.1 1.7.6 1.8 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9 2.0 2.0.1 2.0.2 2.1.0
filester / includes / File_manager / lib / js / worker / quicklook.unzip.js
filester / includes / File_manager / lib / js / worker Last commit date
calcfilehash.js 6 years ago quicklook.tiff.js 1 year ago quicklook.unzip.js 9 months ago
quicklook.unzip.js
66 lines
1 var type = self.data.type,
2 bin = new Uint8Array(self.data.bin),
3 unzipFiles = function() {
4 /** @type {Array.<string>} */
5 var filenameList = [];
6 /** @type {number} */
7 var i;
8 /** @type {number} */
9 var il;
10 /** @type {Array.<Zlib.Unzip.FileHeader>} */
11 var fileHeaderList;
12 // need check this.Y when update cdns.zlibUnzip
13 this.Y();
14 fileHeaderList = this.i;
15 for (i = 0, il = fileHeaderList.length; i < il; ++i) {
16 // need check fileHeaderList[i].J when update cdns.zlibUnzip
17 filenameList[i] = fileHeaderList[i].filename + (fileHeaderList[i].J? ' ({formatSize(' + fileHeaderList[i].J + ')})' : '');
18 }
19 return filenameList;
20 },
21 tarFiles = function(tar) {
22 var filenames = [],
23 tarlen = tar.length,
24 offset = 0,
25 toStr = function(arr) {
26 return String.fromCharCode.apply(null, arr).replace(/\0+$/, '');
27 },
28 h, name, prefix, size, dbs;
29 while (offset < tarlen && tar[offset] !== 0) {
30 h = tar.subarray(offset, offset + 512);
31 name = toStr(h.subarray(0, 100));
32 if (prefix = toStr(h.subarray(345, 500))) {
33 name = prefix + name;
34 }
35 size = parseInt(toStr(h.subarray(124, 136)), 8);
36 dbs = Math.ceil(size / 512) * 512;
37 if (name === '././@LongLink') {
38 name = toStr(tar.subarray(offset + 512, offset + 512 + dbs));
39 }
40 (name !== 'pax_global_header') && filenames.push(name + (size? ' ({formatSize(' + size + ')})': ''));
41 offset = offset + 512 + dbs;
42 }
43 return filenames;
44 };
45
46 self.res = {};
47
48 switch (type) {
49 case 'tar':
50 self.res.files = tarFiles(bin);
51 break;
52 case 'zip':
53 self.res.files = unzipFiles.call(new Zlib.Unzip(bin));
54 break;
55 case 'gzip':
56 self.res.files = tarFiles(new Zlib.Gunzip(bin).decompress());
57 break;
58 case 'bzip2':
59 self.res.files = tarFiles(self.bzip2.simple(self.bzip2.array(bin)));
60 break;
61 default:
62
63 break;
64 }
65
66