From 1661a472b8245eb4588fedbf19c9ed07a41e7602 Mon Sep 17 00:00:00 2001 From: Chun Kuan Lee Date: Wed, 25 Jul 2018 17:33:22 +0800 Subject: add unicode compatible file_lock for Windows boost::interprocess::file_lock cannot open the files that contain characters which cannot be parsed by the user's code page on Windows. This commit add a new class to handle those specific file for Windows. --- src/fs.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/fs.h') diff --git a/src/fs.h b/src/fs.h index abb4be254b..e3ff51604d 100644 --- a/src/fs.h +++ b/src/fs.h @@ -19,6 +19,26 @@ namespace fs = boost::filesystem; namespace fsbridge { FILE *fopen(const fs::path& p, const char *mode); FILE *freopen(const fs::path& p, const char *mode, FILE *stream); + + class FileLock + { + public: + FileLock() = delete; + FileLock(const FileLock&) = delete; + FileLock(FileLock&&) = delete; + explicit FileLock(const fs::path& file); + ~FileLock(); + bool TryLock(); + std::string GetReason() { return reason; } + + private: + std::string reason; +#ifndef WIN32 + int fd = -1; +#else + void* hFile = (void*)-1; // INVALID_HANDLE_VALUE +#endif + }; }; #endif // BITCOIN_FS_H -- cgit v1.2.3