Switch to side-by-side view

--- a/src/utils/conftree.h
+++ b/src/utils/conftree.h
@@ -105,6 +105,7 @@
     virtual int eraseKey(const string &) = 0;
     virtual void listall()  {};
     virtual list<string> getSubKeys() = 0;
+    virtual list<string> getSubKeys(bool) = 0;
     virtual bool holdWrites(bool) = 0;
 };
 
@@ -205,6 +206,7 @@
     /**
      * Return all subkeys 
      */
+    virtual list<string> getSubKeys(bool) {return getSubKeys();}
     virtual list<string> getSubKeys();
 
     virtual string getFilename() {return m_filename;}
@@ -435,7 +437,8 @@
 	return nms;
     }
 
-    virtual list<string> getSubKeys() 
+    virtual list<string> getSubKeys(){return getSubKeys(false);}
+    virtual list<string> getSubKeys(bool shallow)
     {
 	list<string> sks;
 	typename list<T*>::iterator it;
@@ -443,6 +446,8 @@
 	    list<string> lst;
 	    lst = (*it)->getSubKeys();
 	    sks.insert(sks.end(), lst.begin(), lst.end());
+	    if (shallow)
+		break;
 	}
 	sks.sort();
 	sks.unique();