diff options
-rw-r--r-- | src/libmain/shared.cc | 4 | ||||
-rw-r--r-- | src/libmain/shared.hh | 2 | ||||
-rw-r--r-- | src/libutil/util.cc | 8 | ||||
-rw-r--r-- | src/libutil/util.hh | 1 |
4 files changed, 12 insertions, 3 deletions
diff --git a/src/libmain/shared.cc b/src/libmain/shared.cc index 76d510efebfc..d6f299d6bfda 100644 --- a/src/libmain/shared.cc +++ b/src/libmain/shared.cc @@ -58,12 +58,12 @@ static void setLogType(string lt) } -unsigned int getIntArg(const string & opt, +unsigned long long getIntArg(const string & opt, Strings::iterator & i, const Strings::iterator & end) { ++i; if (i == end) throw UsageError(format("`%1%' requires an argument") % opt); - int n; + long long n; if (!string2Int(*i, n) || n < 0) throw UsageError(format("`%1%' requires a non-negative integer") % opt); return n; diff --git a/src/libmain/shared.hh b/src/libmain/shared.hh index c38eeaf48131..95d80bacdae1 100644 --- a/src/libmain/shared.hh +++ b/src/libmain/shared.hh @@ -26,7 +26,7 @@ namespace nix { Path makeRootName(const Path & gcRoot, int & counter); void printGCWarning(); -unsigned int getIntArg(const string & opt, +unsigned long long getIntArg(const string & opt, Strings::iterator & i, const Strings::iterator & end); /* Whether we're running setuid. */ diff --git a/src/libutil/util.cc b/src/libutil/util.cc index 1873ccfe536c..4f6c367da8b1 100644 --- a/src/libutil/util.cc +++ b/src/libutil/util.cc @@ -1020,6 +1020,14 @@ bool string2Int(const string & s, int & n) } +bool string2Int(const string & s, long long & n) +{ + std::istringstream str(s); + str >> n; + return str && str.get() == EOF; +} + + void ignoreException() { try { diff --git a/src/libutil/util.hh b/src/libutil/util.hh index d1e30fa6b9e3..5d28a8308cb8 100644 --- a/src/libutil/util.hh +++ b/src/libutil/util.hh @@ -287,6 +287,7 @@ bool statusOk(int status); /* Parse a string into an integer. */ string int2String(int n); bool string2Int(const string & s, int & n); +bool string2Int(const string & s, long long & n); /* Exception handling in destructors: print an error message, then |