about summary refs log tree commit diff
path: root/src/libutil
diff options
context:
space:
mode:
Diffstat (limited to 'src/libutil')
-rw-r--r--src/libutil/util.cc36
-rw-r--r--src/libutil/util.hh1
2 files changed, 27 insertions, 10 deletions
diff --git a/src/libutil/util.cc b/src/libutil/util.cc
index 768acf811c09..bf14e8aadfaa 100644
--- a/src/libutil/util.cc
+++ b/src/libutil/util.cc
@@ -144,11 +144,11 @@ Strings readDirectory(const Path & path)
 }
 
 
-void deletePath(const Path & path)
+static void _deletePath(const Path & path)
 {
     checkInterrupt();
 
-    printMsg(lvlVomit, format("deleting path `%1%'") % path);
+    printMsg(lvlVomit, format("%1%") % path);
 
     struct stat st;
     if (lstat(path.c_str(), &st))
@@ -164,7 +164,7 @@ void deletePath(const Path & path)
 	}
 
 	for (Strings::iterator i = names.begin(); i != names.end(); ++i)
-            deletePath(path + "/" + *i);
+            _deletePath(path + "/" + *i);
     }
 
     if (remove(path.c_str()) == -1)
@@ -172,6 +172,14 @@ void deletePath(const Path & path)
 }
 
 
+void deletePath(const Path & path)
+{
+    startNest(nest, lvlDebug,
+        format("recursively deleting path `%1%'") % path);
+    _deletePath(path);
+}
+
+
 void makePathReadOnly(const Path & path)
 {
     checkInterrupt();
@@ -238,11 +246,7 @@ Nest::Nest()
 
 Nest::~Nest()
 {
-    if (nest) {
-        nestingLevel--;
-        if (logType == ltEscapes)
-            cerr << "\033[q";
-    }
+    close();
 }
 
 
@@ -259,14 +263,26 @@ void Nest::open(Verbosity level, const format & f)
 {
     if (level <= verbosity) {
         if (logType == ltEscapes)
-            cerr << "\033[" << escVerbosity(level) << "p";
-        printMsg_(level, f);
+            cerr << "\033[" << escVerbosity(level) << "p"
+                 << f.str() << "\n";
+        else
+            printMsg_(level, f);
         nest = true;
         nestingLevel++;
     }
 }
 
 
+void Nest::close()
+{
+    if (nest) {
+        nestingLevel--;
+        if (logType == ltEscapes)
+            cerr << "\033[q";
+    }
+}
+
+
 void printMsg_(Verbosity level, const format & f)
 {
     checkInterrupt();
diff --git a/src/libutil/util.hh b/src/libutil/util.hh
index ac96d7fc1a86..54673c28c6af 100644
--- a/src/libutil/util.hh
+++ b/src/libutil/util.hh
@@ -127,6 +127,7 @@ public:
     Nest();
     ~Nest();
     void open(Verbosity level, const format & f);
+    void close();
 };
 
 void printMsg_(Verbosity level, const format & f);