about summary refs log tree commit diff
path: root/src/nix-env
diff options
context:
space:
mode:
authorMatthew O'Gorman <mog@rldn.net>2016-05-19T19·42-0400
committerMatthew O'Gorman <mog@rldn.net>2018-03-02T02·47-0500
commit0312d30315a3a77ab659b742b76ec32685145715 (patch)
treedf40aa3e5f5dcd40b1dcb258f70cf6bd3a92fb15 /src/nix-env
parent429154b74c7f4b4d679ae79bbc939049f537bfaf (diff)
this updates issues that were addressed by people in pr
Diffstat (limited to 'src/nix-env')
-rw-r--r--src/nix-env/nix-env.cc8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/nix-env/nix-env.cc b/src/nix-env/nix-env.cc
index 1440b7744f..0da31588d2 100644
--- a/src/nix-env/nix-env.cc
+++ b/src/nix-env/nix-env.cc
@@ -1285,7 +1285,13 @@ static void opDeleteGenerations(Globals & globals, Strings opFlags, Strings opAr
     } else if (opArgs.size() == 1 && opArgs.front().find('d') != string::npos) {
         deleteGenerationsOlderThan(globals.profile, opArgs.front(), globals.dryRun);
     } else if (opArgs.size() == 1 && opArgs.front().find('+') != string::npos) {
-        deleteGenerationsGreaterThan(globals.profile, opArgs.front(), globals.dryRun);
+        if(opArgs.front().size() < 2)
+            throw Error(format("invalid number of generations ‘%1%’") % opArgs.front());
+        string str_max = string(opArgs.front() 1, opArgs.front().size());
+        int max;
+        if (!string2Int(str_max, max) || max == 0)
+            throw Error(format("invalid number of generations to keep ‘%1%’") % opArgs.front());
+        deleteGenerationsGreaterThan(globals.profile, max, globals.dryRun);
     } else {
         std::set<unsigned int> gens;
         for (auto & i : opArgs) {