summary refs log tree commit diff
path: root/src/nix-store
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2006-08-11 20:26:49 +0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2006-08-11 20:26:49 +0000
commit4250b641d8e8edc4cb7def9bc463c7e4ff82e144 (patch)
treee90895b2154163a1b0be61616220e4215cf6159c /src/nix-store
parent92f7dfa5b73e44f7584eaed726927450a29a48b8 (diff)
downloadguix-4250b641d8e8edc4cb7def9bc463c7e4ff82e144.tar.gz
* `nix-store --gc --print-dead': print the total size of the store
  objects that would be freed.

Diffstat (limited to 'src/nix-store')
-rw-r--r--src/nix-store/main.cc15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/nix-store/main.cc b/src/nix-store/main.cc
index 132516cd93..fc458a246c 100644
--- a/src/nix-store/main.cc
+++ b/src/nix-store/main.cc
@@ -492,13 +492,17 @@ static void opCheckValidity(Strings opFlags, Strings opArgs)
 
 struct PrintFreed 
 {
-    bool show;
+    bool show, dryRun;
     unsigned long long bytesFreed;
-    PrintFreed(bool _show) : bytesFreed(0), show(_show) { }
+    PrintFreed(bool show, bool dryRun)
+        : bytesFreed(0), show(show), dryRun(dryRun) { }
     ~PrintFreed() 
     {
         if (show)
-            cout << format("%d bytes freed (%.2f MiB)\n")
+            cout << format(
+                (dryRun
+                    ? "%d bytes would be freed (%.2f MiB)\n"
+                    : "%d bytes freed (%.2f MiB)\n"))
                 % bytesFreed % (bytesFreed / (1024.0 * 1024.0));
     }
 };
@@ -518,7 +522,8 @@ static void opGC(Strings opFlags, Strings opArgs)
         else throw UsageError(format("bad sub-operation `%1%' in GC") % *i);
 
     PathSet result;
-    PrintFreed freed(action == gcDeleteDead);
+    PrintFreed freed(action == gcDeleteDead || action == gcReturnDead,
+        action == gcReturnDead);
     collectGarbage(action, PathSet(), false, result, freed.bytesFreed);
 
     if (action != gcDeleteDead) {
@@ -546,7 +551,7 @@ static void opDelete(Strings opFlags, Strings opArgs)
         pathsToDelete.insert(fixPath(*i));
     
     PathSet dummy;
-    PrintFreed freed(true);
+    PrintFreed freed(true, false);
     collectGarbage(gcDeleteSpecific, pathsToDelete, ignoreLiveness,
         dummy, freed.bytesFreed);
 }