r9218: make the winreg library code handle arbitrary paths more efficiently
[kai/samba.git] / testprogs / ejs / winreg.js
index 831528b05cb48f5a5f309e684ed4d91737b182f0..22b20739f2792de244c10e38d238658f9bb9a766 100755 (executable)
@@ -13,15 +13,15 @@ ok = GetOptions(ARGV, options,
                "POPT_COMMON_SAMBA",
                "POPT_COMMON_CREDENTIALS");
 if (ok == false) {
-   println("Failed to parse options: " + options.ERROR);
-   return -1;
+       println("Failed to parse options: " + options.ERROR);
+       return -1;
 }
 
 libinclude("base.js");
 
-if (options.ARGV.length != 1) {
-   println("Usage: winreg.js <BINDING>");
-   return -1;
+if (options.ARGV.length < 1) {
+       println("Usage: winreg.js <BINDING>");
+       return -1;
 }
 var binding = options.ARGV[0];
 reg = winreg_init();
@@ -30,8 +30,8 @@ security_init(reg);
 print("Connecting to " + binding + "\n");
 status = reg.connect(binding);
 if (status.is_ok != true) {
-   print("Failed to connect to " + binding + " - " + status.errstr + "\n");
-   return -1;
+       print("Failed to connect to " + binding + " - " + status.errstr + "\n");
+       return -1;
 }
 
 function list_path(path) {
@@ -41,18 +41,25 @@ function list_path(path) {
                return;
        }
        for (i=0;i<list.length;i++) {
-               var npath = path + "\\" + list[i];
+               var npath;
+               if (path) {
+                       npath = path + "\\" + list[i];
+               } else {
+                       npath = list[i];
+               }
                println(npath);
                list_path(npath);
        }
 }
 
-var trees = new Array("HKCR", "HKLM", "HKPD", "HKU");
+var root;
 
-for (i=0;i<trees.length;i++) {
-       printf("Listing tree '%s'\n", trees[i]);
-       list_path(trees[i]);
+if (options.ARGV.length > 1) {
+       root = options.ARGV[1];
+} else {
+       root = '';
 }
 
-print("All OK\n");
+printf("Listing registry tree '%s'\n", root);
+list_path(root);
 return 0;