Commit 78aee1b1 authored by Feng Xiao's avatar Feng Xiao Committed by GitHub

Merge pull request #2044 from wychen/Win32ANSI

Fix Win32 error messages on Unicode build
parents 643a02bc a7eaf369
...@@ -10,7 +10,7 @@ goto :error ...@@ -10,7 +10,7 @@ goto :error
echo Building C++ echo Building C++
mkdir build_msvc mkdir build_msvc
cd build_msvc cd build_msvc
cmake -G "%generator%" -Dprotobuf_BUILD_SHARED_LIBS=%BUILD_DLL% ../cmake cmake -G "%generator%" -Dprotobuf_BUILD_SHARED_LIBS=%BUILD_DLL% -Dprotobuf_UNICODE=%UNICODE% ../cmake
msbuild protobuf.sln /p:Platform=%vcplatform% /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll" || goto error msbuild protobuf.sln /p:Platform=%vcplatform% /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll" || goto error
cd %configuration% cd %configuration%
tests.exe || goto error tests.exe || goto error
......
...@@ -11,6 +11,7 @@ environment: ...@@ -11,6 +11,7 @@ environment:
matrix: matrix:
- language: cpp - language: cpp
BUILD_DLL: ON BUILD_DLL: ON
UNICODE: ON
- language: csharp - language: csharp
......
...@@ -159,6 +159,10 @@ else (MSVC) ...@@ -159,6 +159,10 @@ else (MSVC)
set(LIB_PREFIX) set(LIB_PREFIX)
endif (MSVC) endif (MSVC)
if (protobuf_UNICODE)
add_definitions(-DUNICODE -D_UNICODE)
endif (protobuf_UNICODE)
include(libprotobuf-lite.cmake) include(libprotobuf-lite.cmake)
include(libprotobuf.cmake) include(libprotobuf.cmake)
include(libprotoc.cmake) include(libprotoc.cmake)
......
...@@ -719,6 +719,11 @@ TEST_F(CommandLineInterfaceTest, TrailingBackslash) { ...@@ -719,6 +719,11 @@ TEST_F(CommandLineInterfaceTest, TrailingBackslash) {
ExpectGenerated("test_generator", "", "foo.proto", "Foo"); ExpectGenerated("test_generator", "", "foo.proto", "Foo");
} }
TEST_F(CommandLineInterfaceTest, Win32ErrorMessage) {
EXPECT_EQ("The system cannot find the file specified.\r\n",
Subprocess::Win32ErrorMessage(ERROR_FILE_NOT_FOUND));
}
#endif // defined(_WIN32) || defined(__CYGWIN__) #endif // defined(_WIN32) || defined(__CYGWIN__)
TEST_F(CommandLineInterfaceTest, PathLookup) { TEST_F(CommandLineInterfaceTest, PathLookup) {
......
...@@ -261,11 +261,11 @@ string Subprocess::Win32ErrorMessage(DWORD error_code) { ...@@ -261,11 +261,11 @@ string Subprocess::Win32ErrorMessage(DWORD error_code) {
char* message; char* message;
// WTF? // WTF?
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS, FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, error_code, 0, NULL, error_code, 0,
(LPTSTR)&message, // NOT A BUG! (LPSTR)&message, // NOT A BUG!
0, NULL); 0, NULL);
string result = message; string result = message;
......
...@@ -141,12 +141,12 @@ void File::DeleteRecursively(const string& name, ...@@ -141,12 +141,12 @@ void File::DeleteRecursively(const string& name,
#ifdef _MSC_VER #ifdef _MSC_VER
// This interface is so weird. // This interface is so weird.
WIN32_FIND_DATA find_data; WIN32_FIND_DATAA find_data;
HANDLE find_handle = FindFirstFile((name + "/*").c_str(), &find_data); HANDLE find_handle = FindFirstFileA((name + "/*").c_str(), &find_data);
if (find_handle == INVALID_HANDLE_VALUE) { if (find_handle == INVALID_HANDLE_VALUE) {
// Just delete it, whatever it is. // Just delete it, whatever it is.
DeleteFile(name.c_str()); DeleteFileA(name.c_str());
RemoveDirectory(name.c_str()); RemoveDirectoryA(name.c_str());
return; return;
} }
...@@ -156,15 +156,15 @@ void File::DeleteRecursively(const string& name, ...@@ -156,15 +156,15 @@ void File::DeleteRecursively(const string& name,
string path = name + "/" + entry_name; string path = name + "/" + entry_name;
if (find_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { if (find_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
DeleteRecursively(path, NULL, NULL); DeleteRecursively(path, NULL, NULL);
RemoveDirectory(path.c_str()); RemoveDirectoryA(path.c_str());
} else { } else {
DeleteFile(path.c_str()); DeleteFileA(path.c_str());
} }
} }
} while(FindNextFile(find_handle, &find_data)); } while(FindNextFileA(find_handle, &find_data));
FindClose(find_handle); FindClose(find_handle);
RemoveDirectory(name.c_str()); RemoveDirectoryA(name.c_str());
#else #else
// Use opendir()! Yay! // Use opendir()! Yay!
// lstat = Don't follow symbolic links. // lstat = Don't follow symbolic links.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment