- removed .Directory and .Paths accessors - build script using bits/ - typescript definitions in misc/
33 lines
980 B
JavaScript
33 lines
980 B
JavaScript
/* [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]; }
|
|
|
|
for(i = q[0]; typeof i !== "undefined"; i = q.shift()) {
|
|
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 !== 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);
|
|
|