[cache_repair, thin_repair] fix bug introduced in recent patch
I hadn't realised that check_file_exists() also checked that it was a regular file, which we don't want for the couple of uses I recently added. This patch adds an optional arg must_be_regular_file, and defaults it to true, preserving the original behaviour. The recent additions have this set to false.
This commit is contained in:
@@ -66,13 +66,13 @@ file_utils::file_exists(string const &path) {
|
||||
}
|
||||
|
||||
void
|
||||
file_utils::check_file_exists(string const &file) {
|
||||
file_utils::check_file_exists(string const &file, bool must_be_regular_file) {
|
||||
struct stat info;
|
||||
int r = ::stat(file.c_str(), &info);
|
||||
if (r)
|
||||
throw runtime_error("Couldn't stat file");
|
||||
|
||||
if (!S_ISREG(info.st_mode))
|
||||
if (must_be_regular_file && !S_ISREG(info.st_mode))
|
||||
throw runtime_error("Not a regular file");
|
||||
}
|
||||
|
||||
|
@@ -10,7 +10,7 @@
|
||||
namespace file_utils {
|
||||
int open_file(std::string const &path, int flags);
|
||||
bool file_exists(std::string const &path);
|
||||
void check_file_exists(std::string const &file);
|
||||
void check_file_exists(std::string const &file, bool must_be_regular_file = true);
|
||||
int create_block_file(std::string const &path, off_t file_size);
|
||||
int open_block_file(std::string const &path, off_t min_size, bool writeable, bool excl = true);
|
||||
uint64_t get_file_length(std::string const &file);
|
||||
|
Reference in New Issue
Block a user