Remove remove_all. A compiler has no need for recursively deleting a directory.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198955 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola
2014-01-10 20:36:42 +00:00
parent d91c160b0a
commit 217c714a67
5 changed files with 22 additions and 60 deletions

View File

@@ -983,45 +983,6 @@ error_code identify_magic(const Twine &path, file_magic &result) {
return error_code::success();
}
namespace {
error_code remove_all_r(StringRef path, file_type ft, uint32_t &count) {
if (ft == file_type::directory_file) {
// This code would be a lot better with exceptions ;/.
error_code ec;
directory_iterator i(path, ec);
if (ec) return ec;
for (directory_iterator e; i != e; i.increment(ec)) {
if (ec) return ec;
file_status st;
if (error_code ec = i->status(st)) return ec;
if (error_code ec = remove_all_r(i->path(), st.type(), count)) return ec;
}
bool obviously_this_exists;
if (error_code ec = remove(path, obviously_this_exists)) return ec;
assert(obviously_this_exists);
++count; // Include the directory itself in the items removed.
} else {
bool obviously_this_exists;
if (error_code ec = remove(path, obviously_this_exists)) return ec;
assert(obviously_this_exists);
++count;
}
return error_code::success();
}
} // end unnamed namespace
error_code remove_all(const Twine &path, uint32_t &num_removed) {
SmallString<128> path_storage;
StringRef p = path.toStringRef(path_storage);
file_status fs;
if (error_code ec = status(path, fs))
return ec;
num_removed = 0;
return remove_all_r(p, fs.type(), num_removed);
}
error_code directory_entry::status(file_status &result) const {
return fs::status(Path, result);
}