2014-06-24 04:00:39 +00:00
|
|
|
/* [MS-CFB] 2.6.4 */
|
2017-07-28 17:53:08 +00:00
|
|
|
function make_find_path(FullPaths/*:Array<string>*/, Paths/*:Array<string>*/, FileIndex/*:CFBFileIndex*/, files/*:CFBFiles*/, root_name/*:string*/)/*:CFBFindPath*/ {
|
|
|
|
var UCFullPaths/*:Array<string>*/ = [];
|
|
|
|
var UCPaths/*:Array<string>*/ = [], i = 0;
|
2014-11-03 04:02:42 +00:00
|
|
|
for(i = 0; i < FullPaths.length; ++i) UCFullPaths[i] = FullPaths[i].toUpperCase().replace(chr0,'').replace(chr1,'!');
|
|
|
|
for(i = 0; i < Paths.length; ++i) UCPaths[i] = Paths[i].toUpperCase().replace(chr0,'').replace(chr1,'!');
|
2017-07-28 17:53:08 +00:00
|
|
|
return function find_path(path/*:string*/)/*:?CFBEntry*/ {
|
|
|
|
var k/*:boolean*/ = false;
|
2014-06-24 04:00:39 +00:00
|
|
|
if(path.charCodeAt(0) === 47 /* "/" */) { k=true; path = root_name + path; }
|
|
|
|
else k = path.indexOf("/") !== -1;
|
2017-07-28 17:53:08 +00:00
|
|
|
var UCPath/*:string*/ = path.toUpperCase().replace(chr0,'').replace(chr1,'!');
|
|
|
|
var w/*:number*/ = k === true ? UCFullPaths.indexOf(UCPath) : UCPaths.indexOf(UCPath);
|
2014-06-24 04:00:39 +00:00
|
|
|
if(w === -1) return null;
|
|
|
|
return k === true ? FileIndex[w] : files[Paths[w]];
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|