From 597de28cf55d7b880b95be08d71ec525dbf38a68 Mon Sep 17 00:00:00 2001 From: SheetJS Date: Sat, 5 Jul 2014 12:22:11 -0400 Subject: [PATCH] version bump 0.10.1: streamlined node module --- bits/31_version.js | 2 +- cfb.js | 2 +- dist/cfb.js | 640 ++++++++++++++++++++++----------------------- dist/cfb.min.js | 2 +- dist/cfb.min.map | 2 +- fails.lst | 15 ++ package.json | 67 ++--- 7 files changed, 369 insertions(+), 361 deletions(-) diff --git a/bits/31_version.js b/bits/31_version.js index 74b3d52..bcf5a79 100644 --- a/bits/31_version.js +++ b/bits/31_version.js @@ -1 +1 @@ -exports.version = '0.10.0'; +exports.version = '0.10.1'; diff --git a/cfb.js b/cfb.js index 0e864c0..10f0ad7 100644 --- a/cfb.js +++ b/cfb.js @@ -86,7 +86,7 @@ function prep_blob(blob, pos) { /* [MS-CFB] v20130118 */ var CFB = (function _CFB(){ var exports = {}; -exports.version = '0.10.0'; +exports.version = '0.10.1'; function parse(file) { var mver = 3; // major version var ssz = 512; // sector size diff --git a/dist/cfb.js b/dist/cfb.js index f3bbf5a..10f0ad7 100644 --- a/dist/cfb.js +++ b/dist/cfb.js @@ -5,450 +5,436 @@ var Base64 = (function(){ var map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; return { - /* (will need this for writing) encode: function(input, utf8) { - var o = ""; - var c1, c2, c3, e1, e2, e3, e4; - for(var i = 0; i < input.length; ) { - c1 = input.charCodeAt(i++); - c2 = input.charCodeAt(i++); - c3 = input.charCodeAt(i++); - e1 = c1 >> 2; - e2 = (c1 & 3) << 4 | c2 >> 4; - e3 = (c2 & 15) << 2 | c3 >> 6; - e4 = c3 & 63; - if (isNaN(c2)) { e3 = e4 = 64; } - else if (isNaN(c3)) { e4 = 64; } - o += map.charAt(e1) + map.charAt(e2) + map.charAt(e3) + map.charAt(e4); - } - return o; - },*/ - decode: function(input, utf8) { + decode: function(input) { var o = ""; var c1, c2, c3; var e1, e2, e3, e4; - input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); + input = input.replace(/[^\w\+\/\=]/g, ""); for(var i = 0; i < input.length;) { e1 = map.indexOf(input.charAt(i++)); e2 = map.indexOf(input.charAt(i++)); - e3 = map.indexOf(input.charAt(i++)); - e4 = map.indexOf(input.charAt(i++)); - c1 = e1 << 2 | e2 >> 4; - c2 = (e2 & 15) << 4 | e3 >> 2; - c3 = (e3 & 3) << 6 | e4; + c1 = (e1 << 2) | (e2 >> 4); o += String.fromCharCode(c1); - if (e3 != 64) { o += String.fromCharCode(c2); } - if (e4 != 64) { o += String.fromCharCode(c3); } + + e3 = map.indexOf(input.charAt(i++)); + c2 = ((e2 & 15) << 4) | (e3 >> 2); + if (e3 !== 64) { o += String.fromCharCode(c2); } + + e4 = map.indexOf(input.charAt(i++)); + c3 = ((e3 & 3) << 6) | e4; + if (e4 !== 64) { o += String.fromCharCode(c3); } } return o; } }; })(); -function s2a(s) { - if(typeof Buffer !== 'undefined') return new Buffer(s, "binary"); - var w = s.split("").map(function(x){ return x.charCodeAt(0) & 0xff; }); - return w; -} +var chr0 = /\u0000/g, chr1 = /[\u0001-\u0006]/; + +var s2a, _s2a; +s2a = _s2a = function _s2a(s) { return s.split("").map(function(x){ return x.charCodeAt(0) & 0xff; }); }; +var __toBuffer, ___toBuffer; +__toBuffer = ___toBuffer = function(bufs) { var x = []; for(var i = 0; i < bufs[0].length; ++i) { x.push.apply(x, bufs[0][i]); } return x; }; +var __utf16le, ___utf16le; +__utf16le = ___utf16le = function(b,s,e) { var ss=[]; for(var i=s; i 0 && Buffer.isBuffer(bufs[0][0])) ? Buffer.concat(bufs[0]) : ___toBuffer(bufs);}; + s2a = function(s) { return Buffer(s, "binary"); }; + bconcat = function(bufs) { return Buffer.isBuffer(bufs[0]) ? Buffer.concat(bufs) : [].concat.apply([], bufs); }; } -var __readUInt8 = function(b, idx) { return b.readUInt8 ? b.readUInt8(idx) : b[idx]; }; -var __readUInt16LE = function(b, idx) { return b.readUInt16LE ? b.readUInt16LE(idx) : b[idx+1]*(1<<8)+b[idx]; }; -var __readInt16LE = function(b, idx) { var u = __readUInt16LE(b,idx); if(!(u & 0x8000)) return u; return (0xffff - u + 1) * -1; }; -var __readUInt32LE = function(b, idx) { return b.readUInt32LE ? b.readUInt32LE(idx) : b[idx+3]*(1<<24)+b[idx+2]*(1<<16)+b[idx+1]*(1<<8)+b[idx]; }; -var __readInt32LE = function(b, idx) { if(b.readInt32LE) return b.readInt32LE(idx); var u = __readUInt32LE(b,idx); if(!(u & 0x80000000)) return u; return (0xffffffff - u + 1) * -1; }; -var __hexlify = function(b) { return b.map(function(x){return (x<16?"0":"") + x.toString(16);}).join(""); }; +var __readUInt8 = function(b, idx) { return b[idx]; }; +var __readUInt16LE = function(b, idx) { return b[idx+1]*(1<<8)+b[idx]; }; +var __readInt16LE = function(b, idx) { var u = b[idx+1]*(1<<8)+b[idx]; return (u < 0x8000) ? u : (0xffff - u + 1) * -1; }; +var __readUInt32LE = function(b, idx) { return b[idx+3]*(1<<24)+(b[idx+2]<<16)+(b[idx+1]<<8)+b[idx]; }; +var __readInt32LE = function(b, idx) { return (b[idx+3]<<24)+(b[idx+2]<<16)+(b[idx+1]<<8)+b[idx]; }; -var __utf16le = function(b,s,e) { if(b.utf16le) return b.utf16le(s,e); var ss=[]; for(var i=s; i>1); + if(m !== hexstr) throw fld + 'Expected ' + hexstr + ' saw ' + m; + this.l += hexstr.length>>1; } function prep_blob(blob, pos) { - blob.read_shift = ReadShift.bind(blob); + blob.l = pos; + blob.read_shift = ReadShift; blob.chk = CheckField; - blob.l = pos || 0; - var read = ReadShift.bind(blob), chk = CheckField.bind(blob); - return [read, chk]; } /* [MS-CFB] v20130118 */ -var CFB = (function(){ -this.version = '0.9.1'; +var CFB = (function _CFB(){ +var exports = {}; +exports.version = '0.10.1'; function parse(file) { - - var mver = 3; // major version var ssz = 512; // sector size -var mssz = 64; // mini sector size -var nds = 0; // number of directory sectors -var nfs = 0; // number of FAT sectors var nmfs = 0; // number of mini FAT sectors var ndfs = 0; // number of DIFAT sectors var dir_start = 0; // first directory sector location var minifat_start = 0; // first mini FAT sector location var difat_start = 0; // first mini FAT sector location -var ms_cutoff_size = 4096; // mini stream cutoff size -var minifat_store = 0; // first sector with minifat data -var minifat_size = 0; // size of minifat data - var fat_addrs = []; // locations of FAT sectors /* [MS-CFB] 2.2 Compound File Header */ var blob = file.slice(0,512); -prep_blob(blob); -var read = ReadShift.bind(blob), chk = CheckField.bind(blob); -var j = 0, q; +prep_blob(blob, 0); -// header signature 8 -chk(HEADER_SIGNATURE, 'Header Signature: '); - -// clsid 16 -chk(HEADER_CLSID, 'CLSID: '); - -// minor version 2 -read(2); - -// major version 3 -mver = read(2); +/* major version */ +mver = check_get_mver(blob); switch(mver) { - case 3: ssz = 512; break; - case 4: ssz = 4096; break; + case 3: ssz = 512; break; case 4: ssz = 4096; break; default: throw "Major Version: Expected 3 or 4 saw " + mver; } -// reprocess header -var pos = blob.l; -blob = file.slice(0,ssz); -prep_blob(blob,pos); -read = ReadShift.bind(blob); -chk = CheckField.bind(blob); +/* reprocess header */ +if(ssz !== 512) { blob = file.slice(0,ssz); prep_blob(blob, 28 /* blob.l */); } +/* Save header for final object */ var header = file.slice(0,ssz); -// Byte Order TODO -chk('feff', 'Byte Order: '); - -// Sector Shift -switch((q = read(2))) { - case 0x09: if(mver !== 3) throw 'MajorVersion/SectorShift Mismatch'; break; - case 0x0c: if(mver !== 4) throw 'MajorVersion/SectorShift Mismatch'; break; - default: throw 'Sector Shift: Expected 9 or 12 saw ' + q; -} - -// Mini Sector Shift -chk('0600', 'Mini Sector Shift: '); - -// Reserved -chk('000000000000', 'Mini Sector Shift: '); +check_shifts(blob, mver); // Number of Directory Sectors -nds = read(4); +var nds = blob.read_shift(4, 'i'); if(mver === 3 && nds !== 0) throw '# Directory Sectors: Expected 0 saw ' + nds; // Number of FAT Sectors -nfs = read(4); +//var nfs = blob.read_shift(4, 'i'); +blob.l += 4; // First Directory Sector Location -dir_start = read(4); +dir_start = blob.read_shift(4, 'i'); -// Transaction Signature TODO -read(4); +// Transaction Signature +blob.l += 4; -// Mini Stream Cutoff Size TODO -chk('00100000', 'Mini Stream Cutoff Size: '); +// Mini Stream Cutoff Size +blob.chk('00100000', 'Mini Stream Cutoff Size: '); // First Mini FAT Sector Location -minifat_start = read(4); +minifat_start = blob.read_shift(4, 'i'); // Number of Mini FAT Sectors -nmfs = read(4); +nmfs = blob.read_shift(4, 'i'); // First DIFAT sector location -difat_start = read(4); +difat_start = blob.read_shift(4, 'i'); // Number of DIFAT Sectors -ndfs = read(4); +ndfs = blob.read_shift(4, 'i'); // Grab FAT Sector Locations -for(j = 0; blob.l != 512; ) { - if((q = read(4))>=MAXREGSECT) break; - fat_addrs[j++] = q; +for(var q, j = 0; j < 109; ++j) { /* 109 = (512 - blob.l)>>>2; */ + q = blob.read_shift(4, 'i'); + if(q<0) break; + fat_addrs[j] = q; } - /** Break the file up into sectors */ -var nsectors = Math.ceil((file.length - ssz)/ssz); -var sectors = []; -for(var i=1; i != nsectors; ++i) sectors[i-1] = file.slice(i*ssz,(i+1)*ssz); -sectors[nsectors-1] = file.slice(nsectors*ssz); +var sectors = sectorify(file, ssz); -/** Chase down the rest of the DIFAT chain to build a comprehensive list - DIFAT chains by storing the next sector number as the last 32 bytes */ -function sleuth_fat(idx, cnt) { - if(idx === ENDOFCHAIN) { - if(cnt !== 0) throw "DIFAT chain shorter than expected"; - return; - } - if(idx !== FREESECT) { - var sector = sectors[idx]; - for(var i = 0; i != ssz/4-1; ++i) { - if((q = __readUInt32LE(sector,i*4)) === ENDOFCHAIN) break; - fat_addrs.push(q); - } - sleuth_fat(__readUInt32LE(sector,ssz-4),cnt - 1); - } -} -sleuth_fat(difat_start, ndfs); - -/** DONT CAT THE FAT! Just calculate where we need to go */ -function get_buffer(byte_addr, bytes) { - var addr = fat_addrs[Math.floor(byte_addr*4/ssz)]; - if(ssz - (byte_addr*4 % ssz) < (bytes || 0)) throw "FAT boundary crossed: " + byte_addr + " "+bytes+" "+ssz; - return sectors[addr].slice((byte_addr*4 % ssz)); -} - -function get_buffer_u32(byte_addr) { - return __readUInt32LE(get_buffer(byte_addr,4), 0); -} - -function get_next_sector(idx) { return get_buffer_u32(idx); } +sleuth_fat(difat_start, ndfs, sectors, ssz, fat_addrs); /** Chains */ -var chkd = new Array(sectors.length), sector_list = []; -var get_sector = function get_sector(k) { return sectors[k]; }; -for(i=0; i != sectors.length; ++i) { - var buf = [], k = (i + dir_start) % sectors.length; - if(chkd[k]) continue; - for(j=k; j<=MAXREGSECT; buf.push(j),j=get_next_sector(j)) chkd[j] = true; - sector_list[k] = {nodes: buf}; - sector_list[k].data = __toBuffer(Array(buf.map(get_sector))); -} +var sector_list = make_sector_list(sectors, dir_start, fat_addrs, ssz); + sector_list[dir_start].name = "!Directory"; if(nmfs > 0 && minifat_start !== ENDOFCHAIN) sector_list[minifat_start].name = "!MiniFAT"; sector_list[fat_addrs[0]].name = "!FAT"; /* [MS-CFB] 2.6.1 Compound File Directory Entry */ var files = {}, Paths = [], FileIndex = [], FullPaths = [], FullPathDir = {}; -function read_directory(idx) { - var blob, read, w; - var sector = sector_list[idx].data; - for(var i = 0; i != sector.length; i+= 128) { - blob = sector.slice(i, i+128); - prep_blob(blob, 64); - read = ReadShift.bind(blob); - var namelen = read(2); - if(namelen === 0) return; - var name = __utf16le(blob,0,namelen-(Paths.length?2:0)); // OLE - Paths.push(name); - var o = { name: name }; - o.type = EntryTypes[read(1)]; - o.color = read(1); - o.left = read(4); if(o.left === NOSTREAM) delete o.left; - o.right = read(4); if(o.right === NOSTREAM) delete o.right; - o.child = read(4); if(o.child === NOSTREAM) delete o.child; - o.clsid = read(16); - o.state = read(4); - var ctime = read(8); if(ctime != "0000000000000000") o.ctime = ctime; - var mtime = read(8); if(mtime != "0000000000000000") o.mtime = mtime; - o.start = read(4); - o.size = read(4); - if(o.type === 'root') { //root entry - minifat_store = o.start; - if(nmfs > 0 && minifat_store !== ENDOFCHAIN) sector_list[minifat_store].name = "!StreamData"; - minifat_size = o.size; - } else if(o.size >= ms_cutoff_size) { - o.storage = 'fat'; - if(!sector_list[o.start] && dir_start > 0) o.start = (o.start + dir_start) % sectors.length; - sector_list[o.start].name = o.name; - o.content = sector_list[o.start].data.slice(0,o.size); - prep_blob(o.content); - } else { - o.storage = 'minifat'; - w = o.start * mssz; - if(minifat_store !== ENDOFCHAIN && o.start !== ENDOFCHAIN) { - o.content = sector_list[minifat_store].data.slice(w,w+o.size); - prep_blob(o.content); - } - } - if(o.ctime) { - var ct = blob.slice(blob.l-24, blob.l-16); - var c2 = (__readUInt32LE(ct,4)/1e7)*Math.pow(2,32)+__readUInt32LE(ct,0)/1e7; - o.ct = new Date((c2 - 11644473600)*1000); - } - if(o.mtime) { - var mt = blob.slice(blob.l-16, blob.l-8); - var m2 = (__readUInt32LE(mt,4)/1e7)*Math.pow(2,32)+__readUInt32LE(mt,0)/1e7; - o.mt = new Date((m2 - 11644473600)*1000); - } - files[name] = o; - FileIndex.push(o); - } -} -read_directory(dir_start); +read_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex); -/* [MS-CFB] 2.6.4 Red-Black Tree */ -function build_full_paths(Dir, pathobj, paths, patharr) { - var i; - var dad = new Array(patharr.length); - - var q = new Array(patharr.length); - - for(i=0; i != dad.length; ++i) { dad[i]=q[i]=i; paths[i]=patharr[i]; } - - while(q.length > 0) { - for(i = q[0]; typeof i !== "undefined"; i = q.shift()) { - if(dad[i] === i) { - if(Dir[i].left && dad[Dir[i].left] != Dir[i].left) dad[i] = dad[Dir[i].left]; - if(Dir[i].right && dad[Dir[i].right] != Dir[i].right) dad[i] = dad[Dir[i].right]; - } - if(Dir[i].child) dad[Dir[i].child] = i; - if(Dir[i].left) { dad[Dir[i].left] = dad[i]; q.push(Dir[i].left); } - if(Dir[i].right) { dad[Dir[i].right] = dad[i]; q.push(Dir[i].right); } - } - for(i=1; i != dad.length; ++i) if(dad[i] === i) { - if(Dir[i].right && dad[Dir[i].right] != Dir[i].right) dad[i] = dad[Dir[i].right]; - else if(Dir[i].left && dad[Dir[i].left] != Dir[i].left) dad[i] = dad[Dir[i].left]; - } - } - - for(i=1; i !== paths.length; ++i) { - if(Dir[i].type === "unknown") continue; - var j = dad[i]; - if(j === 0) paths[i] = paths[0] + "/" + paths[i]; - else while(j !== 0) { - paths[i] = paths[j] + "/" + paths[i]; - j = dad[j]; - } - dad[i] = 0; - } - - paths[0] += "/"; - for(i=1; i !== paths.length; ++i) if(Dir[i].type !== 'stream') paths[i] += "/"; - for(i=0; i !== paths.length; ++i) pathobj[paths[i]] = FileIndex[i]; -} build_full_paths(FileIndex, FullPathDir, FullPaths, Paths); var root_name = Paths.shift(); Paths.root = root_name; /* [MS-CFB] 2.6.4 (Unicode 3.0.1 case conversion) */ -function find_path(path) { - if(path[0] === "/") path = root_name + path; - var UCNames = (path.indexOf("/") !== -1 ? FullPaths : Paths).map(function(x) { return x.toUpperCase(); }); - var UCPath = path.toUpperCase(); - var w = UCNames.indexOf(UCPath); - if(w === -1) return null; - return path.indexOf("/") !== -1 ? FileIndex[w] : files[Paths[w]]; -} +var find_path = make_find_path(FullPaths, Paths, FileIndex, files, root_name); -var rval = { +return { raw: {header: header, sectors: sectors}, FileIndex: FileIndex, FullPaths: FullPaths, FullPathDir: FullPathDir, find: find_path }; - -return rval; } // parse +/* [MS-CFB] 2.2 Compound File Header -- read up to major version */ +function check_get_mver(blob) { + // header signature 8 + blob.chk(HEADER_SIGNATURE, 'Header Signature: '); + // clsid 16 + blob.chk(HEADER_CLSID, 'CLSID: '); + + // minor version 2 + blob.l += 2; + + return blob.read_shift(2,'u'); +} +function check_shifts(blob, mver) { + var shift = 0x09; + + // Byte Order + blob.chk('feff', 'Byte Order: '); + + // Sector Shift + switch((shift = blob.read_shift(2))) { + case 0x09: if(mver !== 3) throw 'MajorVersion/SectorShift Mismatch'; break; + case 0x0c: if(mver !== 4) throw 'MajorVersion/SectorShift Mismatch'; break; + default: throw 'Sector Shift: Expected 9 or 12 saw ' + shift; + } + + // Mini Sector Shift + blob.chk('0600', 'Mini Sector Shift: '); + + // Reserved + blob.chk('000000000000', 'Reserved: '); +} + +/** Break the file up into sectors */ +function sectorify(file, ssz) { + var nsectors = Math.ceil(file.length/ssz)-1; + var sectors = new Array(nsectors); + for(var i=1; i < nsectors; ++i) sectors[i-1] = file.slice(i*ssz,(i+1)*ssz); + sectors[nsectors-1] = file.slice(nsectors*ssz); + return sectors; +} + +/* [MS-CFB] 2.6.4 Red-Black Tree */ +function build_full_paths(FI, FPD, FP, Paths) { + var i = 0, L = 0, R = 0, C = 0, j = 0, pl = Paths.length; + var dad = new Array(pl), q = new Array(pl); + + for(; i < pl; ++i) { dad[i]=q[i]=i; FP[i]=Paths[i]; } + + for(; j < q.length; ++j) { + i = q[j]; + L = FI[i].L; R = FI[i].R; C = FI[i].C; + if(dad[i] === i) { + if(L !== -1 /*NOSTREAM*/ && dad[L] !== L) dad[i] = dad[L]; + if(R !== -1 && dad[R] !== R) dad[i] = dad[R]; + } + if(C !== -1 /*NOSTREAM*/) dad[C] = i; + if(L !== -1) { dad[L] = dad[i]; q.push(L); } + if(R !== -1) { dad[R] = dad[i]; q.push(R); } + } + for(i=1; i !== pl; ++i) if(dad[i] === i) { + if(R !== -1 /*NOSTREAM*/ && dad[R] !== R) dad[i] = dad[R]; + else if(L !== -1 && dad[L] !== L) dad[i] = dad[L]; + } + + for(i=1; i < pl; ++i) { + if(FI[i].type === 0 /* unknown */) continue; + j = dad[i]; + if(j === 0) FP[i] = FP[0] + "/" + FP[i]; + else while(j !== 0) { + FP[i] = FP[j] + "/" + FP[i]; + j = dad[j]; + } + dad[i] = 0; + } + + FP[0] += "/"; + for(i=1; i < pl; ++i) { + if(FI[i].type !== 2 /* stream */) FP[i] += "/"; + FPD[FP[i]] = FI[i]; + } +} + +/* [MS-CFB] 2.6.4 */ +function make_find_path(FullPaths, Paths, FileIndex, files, root_name) { + var UCFullPaths = new Array(FullPaths.length); + var UCPaths = new Array(Paths.length), i; + for(i = 0; i < FullPaths.length; ++i) UCFullPaths[i] = FullPaths[i].toUpperCase(); + for(i = 0; i < Paths.length; ++i) UCPaths[i] = Paths[i].toUpperCase(); + return function find_path(path) { + var k; + if(path.charCodeAt(0) === 47 /* "/" */) { k=true; path = root_name + path; } + else k = path.indexOf("/") !== -1; + var UCPath = path.toUpperCase(); + var w = k === true ? UCFullPaths.indexOf(UCPath) : UCPaths.indexOf(UCPath); + if(w === -1) return null; + return k === true ? FileIndex[w] : files[Paths[w]]; + }; +} + +/** Chase down the rest of the DIFAT chain to build a comprehensive list + DIFAT chains by storing the next sector number as the last 32 bytes */ +function sleuth_fat(idx, cnt, sectors, ssz, fat_addrs) { + var q; + if(idx === ENDOFCHAIN) { + if(cnt !== 0) throw "DIFAT chain shorter than expected"; + } else if(idx !== -1 /*FREESECT*/) { + var sector = sectors[idx], m = (ssz>>>2)-1; + for(var i = 0; i < m; ++i) { + if((q = __readInt32LE(sector,i*4)) === ENDOFCHAIN) break; + fat_addrs.push(q); + } + sleuth_fat(__readInt32LE(sector,ssz-4),cnt - 1, sectors, ssz, fat_addrs); + } +} + +/** Chase down the sector linked lists */ +function make_sector_list(sectors, dir_start, fat_addrs, ssz) { + var sl = sectors.length, sector_list = new Array(sl); + var chkd = new Array(sl), buf, buf_chain; + var modulus = ssz - 1, i, j, k, jj; + for(i=0; i < sl; ++i) { + buf = []; + k = (i + dir_start); if(k >= sl) k-=sl; + if(chkd[k] === true) continue; + buf_chain = []; + for(j=k; j>=0;) { + chkd[j] = true; + buf[buf.length] = j; + buf_chain.push(sectors[j]); + var addr = fat_addrs[Math.floor(j*4/ssz)]; + jj = ((j*4) & modulus); + if(ssz < 4 + jj) throw "FAT boundary crossed: " + j + " 4 "+ssz; + j = __readInt32LE(sectors[addr], jj); + } + sector_list[k] = {nodes: buf, data:__toBuffer([buf_chain])}; + } + return sector_list; +} + +/* [MS-CFB] 2.6.1 Compound File Directory Entry */ +function read_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex) { + var blob; + var minifat_store = 0, pl = (Paths.length?2:0); + var sector = sector_list[dir_start].data; + var i = 0, namelen = 0, name, o, ctime, mtime; + for(; i < sector.length; i+= 128) { + blob = sector.slice(i, i+128); + prep_blob(blob, 64); + namelen = blob.read_shift(2); + if(namelen === 0) continue; + name = __utf16le(blob,0,namelen-pl); + Paths.push(name); + o = { + name: name, + type: blob.read_shift(1), + color: blob.read_shift(1), + L: blob.read_shift(4, 'i'), + R: blob.read_shift(4, 'i'), + C: blob.read_shift(4, 'i'), + clsid: blob.read_shift(16), + state: blob.read_shift(4, 'i') + }; + ctime = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2); + if(ctime !== 0) { + o.ctime = ctime; o.ct = read_date(blob, blob.l-8); + } + mtime = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2); + if(mtime !== 0) { + o.mtime = mtime; o.mt = read_date(blob, blob.l-8); + } + o.start = blob.read_shift(4, 'i'); + o.size = blob.read_shift(4, 'i'); + if(o.type === 5) { /* root */ + minifat_store = o.start; + if(nmfs > 0 && minifat_store !== ENDOFCHAIN) sector_list[minifat_store].name = "!StreamData"; + /*minifat_size = o.size;*/ + } else if(o.size >= 4096 /* MSCSZ */) { + o.storage = 'fat'; + if(sector_list[o.start] === undefined) if((o.start+=dir_start)>=sectors.length) o.start-=sectors.length; + sector_list[o.start].name = o.name; + o.content = sector_list[o.start].data.slice(0,o.size); + prep_blob(o.content, 0); + } else { + o.storage = 'minifat'; + if(minifat_store !== ENDOFCHAIN && o.start !== ENDOFCHAIN) { + o.content = sector_list[minifat_store].data.slice(o.start*MSSZ,o.start*MSSZ+o.size); + prep_blob(o.content, 0); + } + } + files[name] = o; + FileIndex.push(o); + } +} + +function read_date(blob, offset) { + return new Date(( ( (__readUInt32LE(blob,offset+4)/1e7)*Math.pow(2,32)+__readUInt32LE(blob,offset)/1e7 ) - 11644473600)*1000); +} + +var fs; function readFileSync(filename) { - var fs = require('fs'); - var file = fs.readFileSync(filename); - return parse(file); + if(fs === undefined) fs = require('fs'); + return parse(fs.readFileSync(filename)); } function readSync(blob, options) { - var o = options || {}; - switch((o.type || "base64")) { + switch(options !== undefined && options.type !== undefined ? options.type : "base64") { case "file": return readFileSync(blob); - case "base64": blob = Base64.decode(blob); - /* falls through */ - case "binary": blob = s2a(blob); break; + case "base64": return parse(s2a(Base64.decode(blob))); + case "binary": return parse(s2a(blob)); } return parse(blob); } -this.read = readSync; -this.parse = parse; -return this; -})(); - /** CFB Constants */ -{ +var MSSZ = 64; /* Mini Sector Size = 1<<6 */ +//var MSCSZ = 4096; /* Mini Stream Cutoff Size */ +/* 2.1 Compound File Sector Numbers and Types */ +var ENDOFCHAIN = -2; +/* 2.2 Compound File Header */ +var HEADER_SIGNATURE = 'd0cf11e0a1b11ae1'; +var HEADER_CLSID = '00000000000000000000000000000000'; +var consts = { /* 2.1 Compund File Sector Numbers and Types */ - var MAXREGSECT = 0xFFFFFFFA; - var DIFSECT = 0xFFFFFFFC; - var FATSECT = 0xFFFFFFFD; - var ENDOFCHAIN = 0xFFFFFFFE; - var FREESECT = 0xFFFFFFFF; + MAXREGSECT: -6, + DIFSECT: -4, + FATSECT: -3, + ENDOFCHAIN: ENDOFCHAIN, + FREESECT: -1, /* 2.2 Compound File Header */ - var HEADER_SIGNATURE = 'd0cf11e0a1b11ae1'; - var HEADER_MINOR_VERSION = '3e00'; - var MAXREGSID = 0xFFFFFFFA; - var NOSTREAM = 0xFFFFFFFF; - var HEADER_CLSID = '00000000000000000000000000000000'; + HEADER_SIGNATURE: HEADER_SIGNATURE, + HEADER_MINOR_VERSION: '3e00', + MAXREGSID: -6, + NOSTREAM: -1, + HEADER_CLSID: HEADER_CLSID, /* 2.6.1 Compound File Directory Entry */ - var EntryTypes = ['unknown','storage','stream','lockbytes','property','root']; -} + EntryTypes: ['unknown','storage','stream','lockbytes','property','root'] +}; -var CFB_utils = { +exports.read = readSync; +exports.parse = parse; +exports.utils = { ReadShift: ReadShift, CheckField: CheckField, prep_blob: prep_blob, - bconcat: bconcat + bconcat: bconcat, + consts: consts }; -if(typeof require !== 'undefined' && typeof exports !== 'undefined') { - var fs = require('fs'); - exports.read = CFB.read; - exports.parse = CFB.parse; - exports.utils = CFB_utils; - exports.version = CFB.version; -} +return exports; +})(); + +if(typeof require !== 'undefined' && typeof module !== 'undefined' && typeof DO_NOT_EXPORT_CFB === 'undefined') { module.exports = CFB; } diff --git a/dist/cfb.min.js b/dist/cfb.min.js index 7318b85..d1cbca1 100644 --- a/dist/cfb.min.js +++ b/dist/cfb.min.js @@ -1,3 +1,3 @@ /* cfb.js (C) 2013-2014 SheetJS -- http://sheetjs.com */ -var Base64=function(){var map="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";return{decode:function(input,utf8){var o="";var c1,c2,c3;var e1,e2,e3,e4;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");for(var i=0;i>4;c2=(e2&15)<<4|e3>>2;c3=(e3&3)<<6|e4;o+=String.fromCharCode(c1);if(e3!=64){o+=String.fromCharCode(c2)}if(e4!=64){o+=String.fromCharCode(c3)}}return o}}}();function s2a(s){if(typeof Buffer!=="undefined")return new Buffer(s,"binary");var w=s.split("").map(function(x){return x.charCodeAt(0)&255});return w}var __toBuffer;if(typeof Buffer!=="undefined"){Buffer.prototype.hexlify=function(){return this.toString("hex")};Buffer.prototype.utf16le=function(s,e){return this.toString("utf16le",s,e).replace(/\u0000/,"").replace(/[\u0001-\u0006]/,"!")};Buffer.prototype.utf8=function(s,e){return this.toString("utf8",s,e)};__toBuffer=function(bufs){return Buffer.concat(bufs[0])}}else{__toBuffer=function(bufs){var x=[];for(var i=0;i!=bufs[0].length;++i){x=x.concat(bufs[0][i])}return x}}var __readUInt8=function(b,idx){return b.readUInt8?b.readUInt8(idx):b[idx]};var __readUInt16LE=function(b,idx){return b.readUInt16LE?b.readUInt16LE(idx):b[idx+1]*(1<<8)+b[idx]};var __readInt16LE=function(b,idx){var u=__readUInt16LE(b,idx);if(!(u&32768))return u;return(65535-u+1)*-1};var __readUInt32LE=function(b,idx){return b.readUInt32LE?b.readUInt32LE(idx):b[idx+3]*(1<<24)+b[idx+2]*(1<<16)+b[idx+1]*(1<<8)+b[idx]};var __readInt32LE=function(b,idx){if(b.readInt32LE)return b.readInt32LE(idx);var u=__readUInt32LE(b,idx);if(!(u&2147483648))return u;return(4294967295-u+1)*-1};var __hexlify=function(b){return b.map(function(x){return(x<16?"0":"")+x.toString(16)}).join("")};var __utf16le=function(b,s,e){if(b.utf16le)return b.utf16le(s,e);var ss=[];for(var i=s;i=MAXREGSECT)break;fat_addrs[j++]=q}var nsectors=Math.ceil((file.length-ssz)/ssz);var sectors=[];for(var i=1;i!=nsectors;++i)sectors[i-1]=file.slice(i*ssz,(i+1)*ssz);sectors[nsectors-1]=file.slice(nsectors*ssz);function sleuth_fat(idx,cnt){if(idx===ENDOFCHAIN){if(cnt!==0)throw"DIFAT chain shorter than expected";return}if(idx!==FREESECT){var sector=sectors[idx];for(var i=0;i!=ssz/4-1;++i){if((q=__readUInt32LE(sector,i*4))===ENDOFCHAIN)break;fat_addrs.push(q)}sleuth_fat(__readUInt32LE(sector,ssz-4),cnt-1)}}sleuth_fat(difat_start,ndfs);function get_buffer(byte_addr,bytes){var addr=fat_addrs[Math.floor(byte_addr*4/ssz)];if(ssz-byte_addr*4%ssz<(bytes||0))throw"FAT boundary crossed: "+byte_addr+" "+bytes+" "+ssz;return sectors[addr].slice(byte_addr*4%ssz)}function get_buffer_u32(byte_addr){return __readUInt32LE(get_buffer(byte_addr,4),0)}function get_next_sector(idx){return get_buffer_u32(idx)}var chkd=new Array(sectors.length),sector_list=[];var get_sector=function get_sector(k){return sectors[k]};for(i=0;i!=sectors.length;++i){var buf=[],k=(i+dir_start)%sectors.length;if(chkd[k])continue;for(j=k;j<=MAXREGSECT;buf.push(j),j=get_next_sector(j))chkd[j]=true;sector_list[k]={nodes:buf};sector_list[k].data=__toBuffer(Array(buf.map(get_sector)))}sector_list[dir_start].name="!Directory";if(nmfs>0&&minifat_start!==ENDOFCHAIN)sector_list[minifat_start].name="!MiniFAT";sector_list[fat_addrs[0]].name="!FAT";var files={},Paths=[],FileIndex=[],FullPaths=[],FullPathDir={};function read_directory(idx){var blob,read,w;var sector=sector_list[idx].data;for(var i=0;i!=sector.length;i+=128){blob=sector.slice(i,i+128);prep_blob(blob,64);read=ReadShift.bind(blob);var namelen=read(2);if(namelen===0)return;var name=__utf16le(blob,0,namelen-(Paths.length?2:0));Paths.push(name);var o={name:name};o.type=EntryTypes[read(1)];o.color=read(1);o.left=read(4);if(o.left===NOSTREAM)delete o.left;o.right=read(4);if(o.right===NOSTREAM)delete o.right;o.child=read(4);if(o.child===NOSTREAM)delete o.child;o.clsid=read(16);o.state=read(4);var ctime=read(8);if(ctime!="0000000000000000")o.ctime=ctime;var mtime=read(8);if(mtime!="0000000000000000")o.mtime=mtime;o.start=read(4);o.size=read(4);if(o.type==="root"){minifat_store=o.start;if(nmfs>0&&minifat_store!==ENDOFCHAIN)sector_list[minifat_store].name="!StreamData";minifat_size=o.size}else if(o.size>=ms_cutoff_size){o.storage="fat";if(!sector_list[o.start]&&dir_start>0)o.start=(o.start+dir_start)%sectors.length;sector_list[o.start].name=o.name;o.content=sector_list[o.start].data.slice(0,o.size);prep_blob(o.content)}else{o.storage="minifat";w=o.start*mssz;if(minifat_store!==ENDOFCHAIN&&o.start!==ENDOFCHAIN){o.content=sector_list[minifat_store].data.slice(w,w+o.size);prep_blob(o.content)}}if(o.ctime){var ct=blob.slice(blob.l-24,blob.l-16);var c2=__readUInt32LE(ct,4)/1e7*Math.pow(2,32)+__readUInt32LE(ct,0)/1e7;o.ct=new Date((c2-11644473600)*1e3)}if(o.mtime){var mt=blob.slice(blob.l-16,blob.l-8);var m2=__readUInt32LE(mt,4)/1e7*Math.pow(2,32)+__readUInt32LE(mt,0)/1e7;o.mt=new Date((m2-11644473600)*1e3)}files[name]=o;FileIndex.push(o)}}read_directory(dir_start);function build_full_paths(Dir,pathobj,paths,patharr){var i;var dad=new Array(patharr.length);var q=new Array(patharr.length);for(i=0;i!=dad.length;++i){dad[i]=q[i]=i;paths[i]=patharr[i]}while(q.length>0){for(i=q[0];typeof i!=="undefined";i=q.shift()){if(dad[i]===i){if(Dir[i].left&&dad[Dir[i].left]!=Dir[i].left)dad[i]=dad[Dir[i].left];if(Dir[i].right&&dad[Dir[i].right]!=Dir[i].right)dad[i]=dad[Dir[i].right]}if(Dir[i].child)dad[Dir[i].child]=i;if(Dir[i].left){dad[Dir[i].left]=dad[i];q.push(Dir[i].left)}if(Dir[i].right){dad[Dir[i].right]=dad[i];q.push(Dir[i].right)}}for(i=1;i!=dad.length;++i)if(dad[i]===i){if(Dir[i].right&&dad[Dir[i].right]!=Dir[i].right)dad[i]=dad[Dir[i].right];else if(Dir[i].left&&dad[Dir[i].left]!=Dir[i].left)dad[i]=dad[Dir[i].left]}}for(i=1;i!==paths.length;++i){if(Dir[i].type==="unknown")continue;var j=dad[i];if(j===0)paths[i]=paths[0]+"/"+paths[i];else while(j!==0){paths[i]=paths[j]+"/"+paths[i];j=dad[j]}dad[i]=0}paths[0]+="/";for(i=1;i!==paths.length;++i)if(Dir[i].type!=="stream")paths[i]+="/";for(i=0;i!==paths.length;++i)pathobj[paths[i]]=FileIndex[i]}build_full_paths(FileIndex,FullPathDir,FullPaths,Paths);var root_name=Paths.shift();Paths.root=root_name;function find_path(path){if(path[0]==="/")path=root_name+path;var UCNames=(path.indexOf("/")!==-1?FullPaths:Paths).map(function(x){return x.toUpperCase()});var UCPath=path.toUpperCase();var w=UCNames.indexOf(UCPath);if(w===-1)return null;return path.indexOf("/")!==-1?FileIndex[w]:files[Paths[w]]}var rval={raw:{header:header,sectors:sectors},FileIndex:FileIndex,FullPaths:FullPaths,FullPathDir:FullPathDir,find:find_path};return rval}function readFileSync(filename){var fs=require("fs");var file=fs.readFileSync(filename);return parse(file)}function readSync(blob,options){var o=options||{};switch(o.type||"base64"){case"file":return readFileSync(blob);case"base64":blob=Base64.decode(blob);case"binary":blob=s2a(blob);break}return parse(blob)}this.read=readSync;this.parse=parse;return this}();{var MAXREGSECT=4294967290;var DIFSECT=4294967292;var FATSECT=4294967293;var ENDOFCHAIN=4294967294;var FREESECT=4294967295;var HEADER_SIGNATURE="d0cf11e0a1b11ae1";var HEADER_MINOR_VERSION="3e00";var MAXREGSID=4294967290;var NOSTREAM=4294967295;var HEADER_CLSID="00000000000000000000000000000000";var EntryTypes=["unknown","storage","stream","lockbytes","property","root"]}var CFB_utils={ReadShift:ReadShift,CheckField:CheckField,prep_blob:prep_blob,bconcat:bconcat};if(typeof require!=="undefined"&&typeof exports!=="undefined"){var fs=require("fs");exports.read=CFB.read;exports.parse=CFB.parse;exports.utils=CFB_utils;exports.version=CFB.version} +var Base64=function(){var map="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";return{decode:function(input){var o="";var c1,c2,c3;var e1,e2,e3,e4;input=input.replace(/[^\w\+\/\=]/g,"");for(var i=0;i>4;o+=String.fromCharCode(c1);e3=map.indexOf(input.charAt(i++));c2=(e2&15)<<4|e3>>2;if(e3!==64){o+=String.fromCharCode(c2)}e4=map.indexOf(input.charAt(i++));c3=(e3&3)<<6|e4;if(e4!==64){o+=String.fromCharCode(c3)}}return o}}}();var chr0=/\u0000/g,chr1=/[\u0001-\u0006]/;var s2a,_s2a;s2a=_s2a=function _s2a(s){return s.split("").map(function(x){return x.charCodeAt(0)&255})};var __toBuffer,___toBuffer;__toBuffer=___toBuffer=function(bufs){var x=[];for(var i=0;i0&&Buffer.isBuffer(bufs[0][0])?Buffer.concat(bufs[0]):___toBuffer(bufs)};s2a=function(s){return Buffer(s,"binary")};bconcat=function(bufs){return Buffer.isBuffer(bufs[0])?Buffer.concat(bufs):[].concat.apply([],bufs)}}var __readUInt8=function(b,idx){return b[idx]};var __readUInt16LE=function(b,idx){return b[idx+1]*(1<<8)+b[idx]};var __readInt16LE=function(b,idx){var u=b[idx+1]*(1<<8)+b[idx];return u<32768?u:(65535-u+1)*-1};var __readUInt32LE=function(b,idx){return b[idx+3]*(1<<24)+(b[idx+2]<<16)+(b[idx+1]<<8)+b[idx]};var __readInt32LE=function(b,idx){return(b[idx+3]<<24)+(b[idx+2]<<16)+(b[idx+1]<<8)+b[idx]};function ReadShift(size,t){var oI,oS,type=0;switch(size){case 1:oI=__readUInt8(this,this.l);break;case 2:oI=(t!=="i"?__readUInt16LE:__readInt16LE)(this,this.l);break;case 4:oI=__readInt32LE(this,this.l);break;case 16:type=2;oS=__hexlify(this,this.l,size)}this.l+=size;if(type===0)return oI;return oS}function CheckField(hexstr,fld){var m=__hexlify(this,this.l,hexstr.length>>1);if(m!==hexstr)throw fld+"Expected "+hexstr+" saw "+m;this.l+=hexstr.length>>1}function prep_blob(blob,pos){blob.l=pos;blob.read_shift=ReadShift;blob.chk=CheckField}var CFB=function _CFB(){var exports={};exports.version="0.10.1";function parse(file){var mver=3;var ssz=512;var nmfs=0;var ndfs=0;var dir_start=0;var minifat_start=0;var difat_start=0;var fat_addrs=[];var blob=file.slice(0,512);prep_blob(blob,0);mver=check_get_mver(blob);switch(mver){case 3:ssz=512;break;case 4:ssz=4096;break;default:throw"Major Version: Expected 3 or 4 saw "+mver}if(ssz!==512){blob=file.slice(0,ssz);prep_blob(blob,28)}var header=file.slice(0,ssz);check_shifts(blob,mver);var nds=blob.read_shift(4,"i");if(mver===3&&nds!==0)throw"# Directory Sectors: Expected 0 saw "+nds;blob.l+=4;dir_start=blob.read_shift(4,"i");blob.l+=4;blob.chk("00100000","Mini Stream Cutoff Size: ");minifat_start=blob.read_shift(4,"i");nmfs=blob.read_shift(4,"i");difat_start=blob.read_shift(4,"i");ndfs=blob.read_shift(4,"i");for(var q,j=0;j<109;++j){q=blob.read_shift(4,"i");if(q<0)break;fat_addrs[j]=q}var sectors=sectorify(file,ssz);sleuth_fat(difat_start,ndfs,sectors,ssz,fat_addrs);var sector_list=make_sector_list(sectors,dir_start,fat_addrs,ssz);sector_list[dir_start].name="!Directory";if(nmfs>0&&minifat_start!==ENDOFCHAIN)sector_list[minifat_start].name="!MiniFAT";sector_list[fat_addrs[0]].name="!FAT";var files={},Paths=[],FileIndex=[],FullPaths=[],FullPathDir={};read_directory(dir_start,sector_list,sectors,Paths,nmfs,files,FileIndex);build_full_paths(FileIndex,FullPathDir,FullPaths,Paths);var root_name=Paths.shift();Paths.root=root_name;var find_path=make_find_path(FullPaths,Paths,FileIndex,files,root_name);return{raw:{header:header,sectors:sectors},FileIndex:FileIndex,FullPaths:FullPaths,FullPathDir:FullPathDir,find:find_path}}function check_get_mver(blob){blob.chk(HEADER_SIGNATURE,"Header Signature: ");blob.chk(HEADER_CLSID,"CLSID: ");blob.l+=2;return blob.read_shift(2,"u")}function check_shifts(blob,mver){var shift=9;blob.chk("feff","Byte Order: ");switch(shift=blob.read_shift(2)){case 9:if(mver!==3)throw"MajorVersion/SectorShift Mismatch";break;case 12:if(mver!==4)throw"MajorVersion/SectorShift Mismatch";break;default:throw"Sector Shift: Expected 9 or 12 saw "+shift}blob.chk("0600","Mini Sector Shift: ");blob.chk("000000000000","Reserved: ")}function sectorify(file,ssz){var nsectors=Math.ceil(file.length/ssz)-1;var sectors=new Array(nsectors);for(var i=1;i>>2)-1;for(var i=0;i=sl)k-=sl;if(chkd[k]===true)continue;buf_chain=[];for(j=k;j>=0;){chkd[j]=true;buf[buf.length]=j;buf_chain.push(sectors[j]);var addr=fat_addrs[Math.floor(j*4/ssz)];jj=j*4&modulus;if(ssz<4+jj)throw"FAT boundary crossed: "+j+" 4 "+ssz;j=__readInt32LE(sectors[addr],jj)}sector_list[k]={nodes:buf,data:__toBuffer([buf_chain])}}return sector_list}function read_directory(dir_start,sector_list,sectors,Paths,nmfs,files,FileIndex){var blob;var minifat_store=0,pl=Paths.length?2:0;var sector=sector_list[dir_start].data;var i=0,namelen=0,name,o,ctime,mtime;for(;i0&&minifat_store!==ENDOFCHAIN)sector_list[minifat_store].name="!StreamData"}else if(o.size>=4096){o.storage="fat";if(sector_list[o.start]===undefined)if((o.start+=dir_start)>=sectors.length)o.start-=sectors.length;sector_list[o.start].name=o.name;o.content=sector_list[o.start].data.slice(0,o.size);prep_blob(o.content,0)}else{o.storage="minifat";if(minifat_store!==ENDOFCHAIN&&o.start!==ENDOFCHAIN){o.content=sector_list[minifat_store].data.slice(o.start*MSSZ,o.start*MSSZ+o.size);prep_blob(o.content,0)}}files[name]=o;FileIndex.push(o)}}function read_date(blob,offset){return new Date((__readUInt32LE(blob,offset+4)/1e7*Math.pow(2,32)+__readUInt32LE(blob,offset)/1e7-11644473600)*1e3)}var fs;function readFileSync(filename){if(fs===undefined)fs=require("fs");return parse(fs.readFileSync(filename))}function readSync(blob,options){switch(options!==undefined&&options.type!==undefined?options.type:"base64"){case"file":return readFileSync(blob);case"base64":return parse(s2a(Base64.decode(blob)));case"binary":return parse(s2a(blob))}return parse(blob)}var MSSZ=64;var ENDOFCHAIN=-2;var HEADER_SIGNATURE="d0cf11e0a1b11ae1";var HEADER_CLSID="00000000000000000000000000000000";var consts={MAXREGSECT:-6,DIFSECT:-4,FATSECT:-3,ENDOFCHAIN:ENDOFCHAIN,FREESECT:-1,HEADER_SIGNATURE:HEADER_SIGNATURE,HEADER_MINOR_VERSION:"3e00",MAXREGSID:-6,NOSTREAM:-1,HEADER_CLSID:HEADER_CLSID,EntryTypes:["unknown","storage","stream","lockbytes","property","root"]};exports.read=readSync;exports.parse=parse;exports.utils={ReadShift:ReadShift,CheckField:CheckField,prep_blob:prep_blob,bconcat:bconcat,consts:consts};return exports}();if(typeof require!=="undefined"&&typeof module!=="undefined"&&typeof DO_NOT_EXPORT_CFB==="undefined"){module.exports=CFB} //# sourceMappingURL=dist/cfb.min.map \ No newline at end of file diff --git a/dist/cfb.min.map b/dist/cfb.min.map index 210a0d9..be92749 100644 --- a/dist/cfb.min.map +++ b/dist/cfb.min.map @@ -1 +1 @@ -{"version":3,"file":"dist/cfb.min.js","sources":["cfb.js"],"names":["Base64","map","decode","input","utf8","o","c1","c2","c3","e1","e2","e3","e4","replace","i","length","indexOf","charAt","String","fromCharCode","s2a","s","Buffer","w","split","x","charCodeAt","__toBuffer","prototype","hexlify","this","toString","utf16le","e","bufs","concat","__readUInt8","b","idx","readUInt8","__readUInt16LE","readUInt16LE","__readInt16LE","u","__readUInt32LE","readUInt32LE","__readInt32LE","readInt32LE","__hexlify","join","__utf16le","ss","push","__utf8","bconcat","apply","ReadShift","size","t","oo","vv","l","CheckField","hexstr","fld","slice","m","prep_blob","blob","pos","read_shift","bind","chk","read","CFB","version","parse","file","mver","ssz","mssz","nds","nfs","nmfs","ndfs","dir_start","minifat_start","difat_start","ms_cutoff_size","minifat_store","minifat_size","fat_addrs","j","q","HEADER_SIGNATURE","HEADER_CLSID","header","MAXREGSECT","nsectors","Math","ceil","sectors","sleuth_fat","cnt","ENDOFCHAIN","FREESECT","sector","get_buffer","byte_addr","bytes","addr","floor","get_buffer_u32","get_next_sector","chkd","Array","sector_list","get_sector","k","buf","nodes","data","name","files","Paths","FileIndex","FullPaths","FullPathDir","read_directory","namelen","type","EntryTypes","color","left","NOSTREAM","right","child","clsid","state","ctime","mtime","start","storage","content","ct","pow","Date","mt","m2","build_full_paths","Dir","pathobj","paths","patharr","dad","shift","root_name","root","find_path","path","UCNames","toUpperCase","UCPath","rval","raw","find","readFileSync","filename","fs","require","readSync","options","DIFSECT","FATSECT","HEADER_MINOR_VERSION","MAXREGSID","CFB_utils","exports","utils"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"dist/cfb.min.js","sources":["cfb.js"],"names":["Base64","map","decode","input","o","c1","c2","c3","e1","e2","e3","e4","replace","i","length","indexOf","charAt","String","fromCharCode","chr0","chr1","s2a","_s2a","s","split","x","charCodeAt","__toBuffer","___toBuffer","bufs","push","apply","__utf16le","___utf16le","b","e","ss","__readUInt16LE","join","__hexlify","___hexlify","l","slice","toString","bconcat","concat","Buffer","isBuffer","__readUInt8","idx","__readInt16LE","u","__readUInt32LE","__readInt32LE","ReadShift","size","t","oI","oS","type","this","CheckField","hexstr","fld","m","prep_blob","blob","pos","read_shift","chk","CFB","_CFB","exports","version","parse","file","mver","ssz","nmfs","ndfs","dir_start","minifat_start","difat_start","fat_addrs","check_get_mver","header","check_shifts","nds","q","j","sectors","sectorify","sleuth_fat","sector_list","make_sector_list","name","ENDOFCHAIN","files","Paths","FileIndex","FullPaths","FullPathDir","read_directory","build_full_paths","root_name","shift","root","find_path","make_find_path","raw","find","HEADER_SIGNATURE","HEADER_CLSID","nsectors","Math","ceil","Array","FI","FPD","FP","L","R","C","pl","dad","UCFullPaths","UCPaths","toUpperCase","path","k","UCPath","w","cnt","sector","sl","chkd","buf","buf_chain","modulus","jj","addr","floor","nodes","data","minifat_store","namelen","ctime","mtime","color","clsid","state","ct","read_date","mt","start","storage","undefined","content","MSSZ","offset","Date","pow","fs","readFileSync","filename","require","readSync","options","consts","MAXREGSECT","DIFSECT","FATSECT","FREESECT","HEADER_MINOR_VERSION","MAXREGSID","NOSTREAM","EntryTypes","read","utils","module","DO_NOT_EXPORT_CFB"],"mappings":"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"} \ No newline at end of file diff --git a/fails.lst b/fails.lst index db84d98..0364914 100644 --- a/fails.lst +++ b/fails.lst @@ -1,3 +1,18 @@ roo_type_excelx.xls roo_type_openoffice.xls libreoffice_calc_csv-import_malformed-quotes.xls +ootest_cellformat_import_biff2.xls +ootest_cellformat_import_biff3.xls +ootest_cells_import_biff2.xls +ootest_cells_import_biff3.xls +ootest_cells_import_biff4.xls +ootest_drawing_import_biff3.xls +ootest_externallink_import_biff2.xls +ootest_externallink_import_biff3.xls +ootest_formula_import_biff2.xls +ootest_formula_import_biff3.xls +ootest_oleobject_import_biff3.xls +ootest_oleobject_import_biff8_12.xls +ootest_sheettypes_import_biff8_12.xls +ootest_writeprotection_import_biff3.xls +ootest_writeprotection_import_biff4.xls diff --git a/package.json b/package.json index 7a50a98..a1221c2 100644 --- a/package.json +++ b/package.json @@ -1,32 +1,39 @@ { - "name": "cfb", - "version": "0.10.0", - "author": "sheetjs", - "description": "Compound File Binary File Format extractor", - "keywords": [ "cfb", "compression", "office" ], - "bin": { - "cfb": "./bin/cfb" - }, - "main": "./cfb", - "dependencies": { - "commander":"" - }, - "devDependencies": { - "mocha":"", - "xlsjs":"", - "uglify-js":"" - }, - "repository": { "type":"git", "url":"git://github.com/SheetJS/js-cfb.git" }, - "scripts": { - "pretest": "make init", - "test": "make test" - }, - "config": { - "blanket": { - "pattern": "cfb.js" - } - }, - "bugs": { "url": "https://github.com/SheetJS/js-cfb/issues" }, - "license": "Apache-2.0", - "engines": { "node": ">=0.8" } + "name": "cfb", + "version": "0.10.1", + "author": "sheetjs", + "description": "Compound File Binary File Format extractor", + "keywords": [ "cfb", "compression", "office" ], + "bin": { + "cfb": "./bin/cfb" + }, + "main": "./cfb", + "files": [ + "LICENSE", + "README.md", + "bin/", + "dist/", + "cfb.js" + ], + "dependencies": { + "commander":"" + }, + "devDependencies": { + "mocha":"", + "xlsjs":"", + "uglify-js":"" + }, + "repository": { "type":"git", "url":"git://github.com/SheetJS/js-cfb.git" }, + "scripts": { + "pretest": "make init", + "test": "make test" + }, + "config": { + "blanket": { + "pattern": "cfb.js" + } + }, + "bugs": { "url": "https://github.com/SheetJS/js-cfb/issues" }, + "license": "Apache-2.0", + "engines": { "node": ">=0.8" } }