aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2019-01-30 15:52:05 +0100
committerWladimir J. van der Laan <laanwj@gmail.com>2019-01-30 15:52:14 +0100
commit29396bd6699980711c1479cf89f7a18e4912182d (patch)
tree0b71dcd38ae4794ad2936c792c5ed7a441097494 /src
parent72ca72e6370e4fabb40510f80c00b8863322aa50 (diff)
parentfa6180188b8ab89af97860e6497716405a48bab6 (diff)
downloadbitcoin-29396bd6699980711c1479cf89f7a18e4912182d.tar.xz
Merge #15270: Pull leveldb subtree
4f2e6c8b881b7ccda36233332dfd1bd231389a8e Squashed 'src/leveldb/' changes from 524b7e36a8..f545dfabff (MarcoFalke) Pull request description: Some windows-related fixes. Sanity check with: ``` git fetch https://github.com/bitcoin-core/leveldb ./test/lint/git-subtree-check.sh src/leveldb Tree-SHA512: ff94907ff3075b81cffb733129673a9bfd2abbe84240686b29274382b64b4e5845880236458043d6db0332bf70d12942d9c0e68b4fffab43931103d224cb59d4
Diffstat (limited to 'src')
-rw-r--r--src/leveldb/db/c.cc2
-rw-r--r--src/leveldb/port/port_win.h7
-rw-r--r--src/leveldb/util/env_win.cc25
3 files changed, 22 insertions, 12 deletions
diff --git a/src/leveldb/db/c.cc b/src/leveldb/db/c.cc
index 08ff0ad90a..b23e3dcc9d 100644
--- a/src/leveldb/db/c.cc
+++ b/src/leveldb/db/c.cc
@@ -5,7 +5,9 @@
#include "leveldb/c.h"
#include <stdlib.h>
+#ifndef WIN32
#include <unistd.h>
+#endif
#include "leveldb/cache.h"
#include "leveldb/comparator.h"
#include "leveldb/db.h"
diff --git a/src/leveldb/port/port_win.h b/src/leveldb/port/port_win.h
index e8bf46ef27..989c15cd91 100644
--- a/src/leveldb/port/port_win.h
+++ b/src/leveldb/port/port_win.h
@@ -32,9 +32,16 @@
#define STORAGE_LEVELDB_PORT_PORT_WIN_H_
#ifdef _MSC_VER
+#if !(_MSC_VER >= 1900)
#define snprintf _snprintf
+#endif
#define close _close
#define fread_unlocked _fread_nolock
+#ifdef _WIN64
+#define ssize_t int64_t
+#else
+#define ssize_t int32_t
+#endif
#endif
#include <string>
diff --git a/src/leveldb/util/env_win.cc b/src/leveldb/util/env_win.cc
index 81380216bb..830332abe9 100644
--- a/src/leveldb/util/env_win.cc
+++ b/src/leveldb/util/env_win.cc
@@ -203,24 +203,16 @@ public:
void ToWidePath(const std::string& value, std::wstring& target) {
wchar_t buffer[MAX_PATH];
- MultiByteToWideChar(CP_ACP, 0, value.c_str(), -1, buffer, MAX_PATH);
+ MultiByteToWideChar(CP_UTF8, 0, value.c_str(), -1, buffer, MAX_PATH);
target = buffer;
}
void ToNarrowPath(const std::wstring& value, std::string& target) {
char buffer[MAX_PATH];
- WideCharToMultiByte(CP_ACP, 0, value.c_str(), -1, buffer, MAX_PATH, NULL, NULL);
+ WideCharToMultiByte(CP_UTF8, 0, value.c_str(), -1, buffer, MAX_PATH, NULL, NULL);
target = buffer;
}
-std::string GetCurrentDir()
-{
- CHAR path[MAX_PATH];
- ::GetModuleFileNameA(::GetModuleHandleA(NULL),path,MAX_PATH);
- *strrchr(path,'\\') = 0;
- return std::string(path);
-}
-
std::wstring GetCurrentDirW()
{
WCHAR path[MAX_PATH];
@@ -229,6 +221,13 @@ std::wstring GetCurrentDirW()
return std::wstring(path);
}
+std::string GetCurrentDir()
+{
+ std::string path;
+ ToNarrowPath(GetCurrentDirW(), path);
+ return path;
+}
+
std::string& ModifyPath(std::string& path)
{
if(path[0] == '/' || path[0] == '\\'){
@@ -764,14 +763,16 @@ uint64_t Win32Env::NowMicros()
static Status CreateDirInner( const std::string& dirname )
{
Status sRet;
- DWORD attr = ::GetFileAttributes(dirname.c_str());
+ std::wstring dirnameW;
+ ToWidePath(dirname, dirnameW);
+ DWORD attr = ::GetFileAttributesW(dirnameW.c_str());
if (attr == INVALID_FILE_ATTRIBUTES) { // doesn't exist:
std::size_t slash = dirname.find_last_of("\\");
if (slash != std::string::npos){
sRet = CreateDirInner(dirname.substr(0, slash));
if (!sRet.ok()) return sRet;
}
- BOOL result = ::CreateDirectory(dirname.c_str(), NULL);
+ BOOL result = ::CreateDirectoryW(dirnameW.c_str(), NULL);
if (result == FALSE) {
sRet = Status::IOError(dirname, "Could not create directory.");
return sRet;