diff options
author | Chun Kuan Lee <ken2812221@gmail.com> | 2018-07-25 17:33:22 +0800 |
---|---|---|
committer | Chun Kuan Lee <ken2812221@gmail.com> | 2018-08-28 00:55:13 +0800 |
commit | 1661a472b8245eb4588fedbf19c9ed07a41e7602 (patch) | |
tree | 6a9c19af730f79a66e4ba3524dbec5514353cb48 /src/fs.h | |
parent | f180e81d5780805a28bcc71c2bb6b16076336c3c (diff) |
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.
Diffstat (limited to 'src/fs.h')
-rw-r--r-- | src/fs.h | 20 |
1 files changed, 20 insertions, 0 deletions
@@ -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 |