mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
65 lines
1.3 KiB
JavaScript
65 lines
1.3 KiB
JavaScript
|
const nsILocalFile = Components.interfaces.nsILocalFile;
|
||
|
var prefix = "";
|
||
|
|
||
|
function ls(path, recur)
|
||
|
{
|
||
|
var file = Components.classes["@mozilla.org/file/local;1"].
|
||
|
createInstance(nsILocalFile);
|
||
|
try {
|
||
|
file.initWithPath( path );
|
||
|
|
||
|
if (file.isDirectory() && arguments.length == 1)
|
||
|
ls_dir(file, recur);
|
||
|
else
|
||
|
ls_file(file, recur);
|
||
|
}
|
||
|
catch (e) {
|
||
|
dump("Error Returned " + e + "\n");
|
||
|
}
|
||
|
}
|
||
|
function ls_file(file, recur)
|
||
|
{
|
||
|
dump(prefix);
|
||
|
|
||
|
try {
|
||
|
if (file.isDirectory()) {
|
||
|
dump("directory " + file.leafName + "\n");
|
||
|
if(recur)
|
||
|
ls_dir(file, true);
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
dump(file.leafName + " " + file.fileSize);
|
||
|
if (file.isSymlink())
|
||
|
dump(" -> " + file.target);
|
||
|
dump("\n");
|
||
|
}
|
||
|
|
||
|
catch (e) {
|
||
|
dump(file.leafName + " (error accessing)\n");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function ls_dir(file, recur)
|
||
|
{
|
||
|
var leafName = file.leafName;
|
||
|
|
||
|
var old = prefix;
|
||
|
prefix = prefix + " ";
|
||
|
|
||
|
iter = file.directoryEntries;
|
||
|
dump(iter + "\n");
|
||
|
|
||
|
foreach_iter(iter,
|
||
|
function (file) { ls_file(file, recur); });
|
||
|
prefix = old;
|
||
|
}
|
||
|
|
||
|
function foreach_iter(iter, fun)
|
||
|
{
|
||
|
while (iter.hasMoreElements()) {
|
||
|
var item = iter.getNext().QueryInterface(nsILocalFile);
|
||
|
fun(item);
|
||
|
}
|
||
|
}
|