Fix Windows strcmp for Unicode (#8190)
Summary: The code for strcmp that was present does work when compiled for Windows unicode file paths. Needs backporting to: * 6.17.fb * 6.18.fb * 6.19.fb Pull Request resolved: https://github.com/facebook/rocksdb/pull/8190 Reviewed By: akankshamahajan15 Differential Revision: D27765588 Pulled By: jay-zhuang fbshipit-source-id: 89f8a5ac61fd7edc758340dfd335b0a5f96dae6e
This commit is contained in:
parent
c871142988
commit
90e245697f
@ -682,7 +682,8 @@ IOStatus WinFileSystem::GetChildren(const std::string& dir,
|
|||||||
// which appear only on some platforms
|
// which appear only on some platforms
|
||||||
const bool ignore =
|
const bool ignore =
|
||||||
((data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0) &&
|
((data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0) &&
|
||||||
(strcmp(data.cFileName, ".") == 0 || strcmp(data.cFileName, "..") == 0);
|
(RX_FNCMP(data.cFileName, ".") == 0 ||
|
||||||
|
RX_FNCMP(data.cFileName, "..") == 0);
|
||||||
if (!ignore) {
|
if (!ignore) {
|
||||||
auto x = RX_FILESTRING(data.cFileName, RX_FNLEN(data.cFileName));
|
auto x = RX_FILESTRING(data.cFileName, RX_FNLEN(data.cFileName));
|
||||||
result->push_back(FN_TO_RX(x));
|
result->push_back(FN_TO_RX(x));
|
||||||
|
@ -355,6 +355,7 @@ extern void SetCpuPriority(ThreadId id, CpuPriority priority);
|
|||||||
#define RX_FILESTRING std::wstring
|
#define RX_FILESTRING std::wstring
|
||||||
#define RX_FN(a) ROCKSDB_NAMESPACE::port::utf8_to_utf16(a)
|
#define RX_FN(a) ROCKSDB_NAMESPACE::port::utf8_to_utf16(a)
|
||||||
#define FN_TO_RX(a) ROCKSDB_NAMESPACE::port::utf16_to_utf8(a)
|
#define FN_TO_RX(a) ROCKSDB_NAMESPACE::port::utf16_to_utf8(a)
|
||||||
|
#define RX_FNCMP(a, b) ::wcscmp(a, RX_FN(b).c_str())
|
||||||
#define RX_FNLEN(a) ::wcslen(a)
|
#define RX_FNLEN(a) ::wcslen(a)
|
||||||
|
|
||||||
#define RX_DeleteFile DeleteFileW
|
#define RX_DeleteFile DeleteFileW
|
||||||
@ -379,6 +380,7 @@ extern void SetCpuPriority(ThreadId id, CpuPriority priority);
|
|||||||
#define RX_FILESTRING std::string
|
#define RX_FILESTRING std::string
|
||||||
#define RX_FN(a) a
|
#define RX_FN(a) a
|
||||||
#define FN_TO_RX(a) a
|
#define FN_TO_RX(a) a
|
||||||
|
#define RX_FNCMP(a, b) strcmp(a, b)
|
||||||
#define RX_FNLEN(a) strlen(a)
|
#define RX_FNLEN(a) strlen(a)
|
||||||
|
|
||||||
#define RX_DeleteFile DeleteFileA
|
#define RX_DeleteFile DeleteFileA
|
||||||
|
Loading…
Reference in New Issue
Block a user