diff options
author | Marius Bakke <mbakke@fastmail.com> | 2020-01-12 20:57:38 +0100 |
---|---|---|
committer | Marius Bakke <mbakke@fastmail.com> | 2020-01-12 20:57:38 +0100 |
commit | 8f1ab291bca31e84bec50da4374175367d498a6f (patch) | |
tree | e96a6f7a44382646733ac08ecaccb2f57182f017 /nix/libutil/util.cc | |
parent | f0bce2e08feb157b3d8b5100b1ea26bbbd6141e3 (diff) | |
parent | 2e4bb89354d909b661208b3900abfeaa621a1582 (diff) |
Merge branch 'master' into staging
Diffstat (limited to 'nix/libutil/util.cc')
-rw-r--r-- | nix/libutil/util.cc | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/nix/libutil/util.cc b/nix/libutil/util.cc index faba3789df..fb2dfad1f7 100644 --- a/nix/libutil/util.cc +++ b/nix/libutil/util.cc @@ -305,7 +305,7 @@ void writeLine(int fd, string s) } -static void _deletePath(const Path & path, unsigned long long & bytesFreed) +static void _deletePath(const Path & path, unsigned long long & bytesFreed, size_t linkThreshold) { checkInterrupt(); @@ -324,7 +324,7 @@ static void _deletePath(const Path & path, unsigned long long & bytesFreed) struct stat st = lstat(path); #endif - if (!S_ISDIR(st.st_mode) && st.st_nlink == 1) + if (!S_ISDIR(st.st_mode) && st.st_nlink <= linkThreshold) bytesFreed += st.st_size; if (S_ISDIR(st.st_mode)) { @@ -335,7 +335,7 @@ static void _deletePath(const Path & path, unsigned long long & bytesFreed) } for (auto & i : readDirectory(path)) - _deletePath(path + "/" + i.name, bytesFreed); + _deletePath(path + "/" + i.name, bytesFreed, linkThreshold); } #undef st_mode #undef st_size @@ -353,12 +353,12 @@ void deletePath(const Path & path) } -void deletePath(const Path & path, unsigned long long & bytesFreed) +void deletePath(const Path & path, unsigned long long & bytesFreed, size_t linkThreshold) { startNest(nest, lvlDebug, format("recursively deleting path `%1%'") % path); bytesFreed = 0; - _deletePath(path, bytesFreed); + _deletePath(path, bytesFreed, linkThreshold); } |