https://github.com/Kitware/CMake
Revision 878632c90e4811ed08e5d1c298de8ae61d79f620 authored by Brad King on 11 February 2016, 14:52:37 UTC, committed by Brad King on 11 February 2016, 14:53:34 UTC
The fix in commit v3.5.0-rc1~84^2 (Xcode: Escape all backslashes in strings, 2015-12-27) is a change in behavior that can break existing projects that worked around the inconsistency with other generators. Add a release note to call attention to this change in behavior.
1 parent a5a5a68
Tip revision: 878632c90e4811ed08e5d1c298de8ae61d79f620 authored by Brad King on 11 February 2016, 14:52:37 UTC
Help: Add release note about Xcode escaping fix (#15969)
Help: Add release note about Xcode escaping fix (#15969)
Tip revision: 878632c
cmFileLockResult.cxx
/*============================================================================
CMake - Cross Platform Makefile Generator
Copyright 2014 Ruslan Baratov
Distributed under the OSI-approved BSD License (the "License");
see accompanying file Copyright.txt for details.
This software is distributed WITHOUT ANY WARRANTY; without even the
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the License for more information.
============================================================================*/
#include "cmFileLockResult.h"
#include <errno.h>
cmFileLockResult cmFileLockResult::MakeOk()
{
return cmFileLockResult(OK, 0);
}
cmFileLockResult cmFileLockResult::MakeSystem()
{
#if defined(_WIN32)
const Error lastError = GetLastError();
#else
const Error lastError = errno;
#endif
return cmFileLockResult(SYSTEM, lastError);
}
cmFileLockResult cmFileLockResult::MakeTimeout()
{
return cmFileLockResult(TIMEOUT, 0);
}
cmFileLockResult cmFileLockResult::MakeAlreadyLocked()
{
return cmFileLockResult(ALREADY_LOCKED, 0);
}
cmFileLockResult cmFileLockResult::MakeInternal()
{
return cmFileLockResult(INTERNAL, 0);
}
cmFileLockResult cmFileLockResult::MakeNoFunction()
{
return cmFileLockResult(NO_FUNCTION, 0);
}
bool cmFileLockResult::IsOk() const
{
return this->Type == OK;
}
std::string cmFileLockResult::GetOutputMessage() const
{
switch (this->Type)
{
case OK:
return "0";
case SYSTEM:
#if defined(_WIN32)
{
char* errorText = NULL;
// http://stackoverflow.com/a/455533/2288008
DWORD flags = FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_IGNORE_INSERTS;
::FormatMessageA(
flags,
NULL,
this->ErrorValue,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPSTR)&errorText,
0,
NULL
);
if (errorText != NULL)
{
const std::string message = errorText;
::LocalFree(errorText);
return message;
}
else
{
return "Internal error (FormatMessageA failed)";
}
}
#else
return strerror(this->ErrorValue);
#endif
case TIMEOUT:
return "Timeout reached";
case ALREADY_LOCKED:
return "File already locked";
case NO_FUNCTION:
return "'GUARD FUNCTION' not used in function definition";
case INTERNAL:
default:
return "Internal error";
}
}
cmFileLockResult::cmFileLockResult(ErrorType typeValue, Error errorValue):
Type(typeValue), ErrorValue(errorValue)
{
}
Computing file changes ...