summaryrefslogtreecommitdiffstats
path: root/src/libs/xpcom18a4/xpcom/tests/utils/ls.js
blob: 8ae62f06fef06abcc6bbde6a0000f3d328ca0c40 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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);
    }
}