1
0
forked from 0ad/0ad

Convert wchar_t*/wstring arguments to UTF-8 strings in CLogger messages.

This was SVN commit r16188.
This commit is contained in:
Ykkrosh 2015-01-22 20:37:38 +00:00
parent e02d7ad949
commit 568c415d0a
25 changed files with 98 additions and 98 deletions

View File

@ -222,7 +222,7 @@ std::vector<std::string> CMapGeneratorWorker::GetCivData(ScriptInterface::CxPriv
{
// Some error reading directory
wchar_t error[200];
LOGERROR("CMapGeneratorWorker::GetCivData: Error reading directory '%s': %s", path.string8(), StatusDescription(ret, error, ARRAY_SIZE(error)));
LOGERROR("CMapGeneratorWorker::GetCivData: Error reading directory '%s': %s", path.string8(), utf8_from_wstring(StatusDescription(ret, error, ARRAY_SIZE(error))));
}
return data;
@ -284,7 +284,7 @@ bool CMapGeneratorWorker::LoadScripts(const std::wstring& libraryName)
{
// Some error reading directory
wchar_t error[200];
LOGERROR("CMapGeneratorWorker::LoadScripts: Error reading scripts in directory '%s': %s", path.string8(), StatusDescription(ret, error, ARRAY_SIZE(error)));
LOGERROR("CMapGeneratorWorker::LoadScripts: Error reading scripts in directory '%s': %s", path.string8(), utf8_from_wstring(StatusDescription(ret, error, ARRAY_SIZE(error))));
return false;
}

View File

@ -1052,7 +1052,7 @@ int CXMLReader::ReadEntities(XMBElement parent, double end_time)
entity_id_t player = cmpPlayerManager->GetPlayerByID(PlayerID);
if (ent == INVALID_ENTITY || player == INVALID_ENTITY)
{ // Don't add entities with invalid player IDs
LOGERROR("Failed to load entity template '%s'", TemplateName.c_str());
LOGERROR("Failed to load entity template '%s'", utf8_from_wstring(TemplateName));
}
else
{
@ -1430,7 +1430,7 @@ int CMapReader::ParseEntities()
entity_id_t player = cmpPlayerManager->GetPlayerByID(currEnt.playerID);
if (ent == INVALID_ENTITY || player == INVALID_ENTITY)
{ // Don't add entities with invalid player IDs
LOGERROR("Failed to load entity template '%s'", currEnt.templateName.c_str());
LOGERROR("Failed to load entity template '%s'", utf8_from_wstring(currEnt.templateName));
}
else
{

View File

@ -73,7 +73,7 @@ bool CObjectEntry::BuildVariation(const std::vector<std::set<CStr> >& selections
str << variation.color;
int r, g, b;
if (! (str >> r >> g >> b)) // Any trailing data is ignored
LOGERROR("Actor '%s' has invalid RGB colour '%s'", m_Base->m_ShortName.c_str(), variation.color.c_str());
LOGERROR("Actor '%s' has invalid RGB colour '%s'", utf8_from_wstring(m_Base->m_ShortName), variation.color);
else
m_Color = CColor(r/255.0f, g/255.0f, b/255.0f, 1.0f);
}
@ -133,7 +133,7 @@ bool CObjectEntry::BuildVariation(const std::vector<std::set<CStr> >& selections
if (m_Samplers.size() == 0)
{
LOGERROR("Actor '%s' has no textures.", m_Base->m_ShortName.c_str());
LOGERROR("Actor '%s' has no textures.", utf8_from_wstring(m_Base->m_ShortName));
}
std::vector<CObjectBase::Samp>::iterator samp;
@ -209,7 +209,7 @@ bool CObjectEntry::BuildVariation(const std::vector<std::set<CStr> >& selections
CObjectEntry* oe = objectManager.FindObjectVariation(prop.m_ModelName.c_str(), selections);
if (!oe)
{
LOGERROR("Failed to build prop model \"%s\" on actor \"%s\"", prop.m_ModelName.c_str(), m_Base->m_ShortName.c_str());
LOGERROR("Failed to build prop model \"%s\" on actor \"%s\"", utf8_from_wstring(prop.m_ModelName), utf8_from_wstring(m_Base->m_ShortName));
continue;
}
@ -240,7 +240,7 @@ bool CObjectEntry::BuildVariation(const std::vector<std::set<CStr> >& selections
propmodel->ToCModel()->SetAnimation(oe->GetRandomAnimation("idle"));
}
else
LOGERROR("Failed to find matching prop point called \"%s\" in model \"%s\" for actor \"%s\"", ppn.c_str(), m_ModelName.string8(), m_Base->m_ShortName.c_str());
LOGERROR("Failed to find matching prop point called \"%s\" in model \"%s\" for actor \"%s\"", ppn, m_ModelName.string8(), utf8_from_wstring(m_Base->m_ShortName));
}
// setup flags

View File

@ -96,7 +96,7 @@ CObjectBase* CObjectManager::FindObjectBase(const CStrW& objectname)
else
delete obj;
LOGERROR("CObjectManager::FindObjectBase(): Cannot find object '%s'", objectname.c_str());
LOGERROR("CObjectManager::FindObjectBase(): Cannot find object '%s'", utf8_from_wstring(objectname));
return 0;
}

View File

@ -56,8 +56,8 @@ CTerrainPropertiesPtr CTerrainProperties::FromXML(const CTerrainPropertiesPtr& p
if (rootName != "Terrains")
{
LOGERROR("TerrainProperties: Loading %s: Root node is not terrains (found \"%s\")",
pathname.string().c_str(),
rootName.c_str());
pathname.string8(),
rootName);
return CTerrainPropertiesPtr();
}
@ -80,8 +80,8 @@ CTerrainPropertiesPtr CTerrainProperties::FromXML(const CTerrainPropertiesPtr& p
else
{
LOGWARNING("TerrainProperties: Loading %s: Unexpected node %s\n",
pathname.string().c_str(),
XeroFile.GetElementString(child.GetNodeName()).c_str());
pathname.string8(),
XeroFile.GetElementString(child.GetNodeName()));
// Keep reading - typos shouldn't be showstoppers
}
}

View File

@ -253,7 +253,7 @@ void CTerrainTextureEntry::LoadAlphaMaps(VfsPath &amtype)
if (textures[i] < 0)
{
g_TexMan.m_TerrainAlphas.erase(it);
LOGERROR("Failed to load alphamap: %s", amtype.string());
LOGERROR("Failed to load alphamap: %s", amtype.string8());
VfsPath standard("standard");
if (path != standard)

View File

@ -1185,7 +1185,7 @@ void CGUI::Xeromyces_ReadObject(XMBElement Element, CXeromyces* pFile, IGUIObjec
// Try setting the value
if (object->SetSetting(pFile->GetAttributeString(attr.Name), attr.Value.FromUTF8(), true) != PSRETURN_OK)
{
LOGERROR("GUI: (object: %s) Can't set \"%s\" to \"%s\"", object->GetPresentableName().c_str(), pFile->GetAttributeString(attr.Name).c_str(), attr.Value.FromUTF8().c_str());
LOGERROR("GUI: (object: %s) Can't set \"%s\" to \"%s\"", object->GetPresentableName(), pFile->GetAttributeString(attr.Name), attr.Value);
// This is not a fatal error
}
@ -1248,7 +1248,7 @@ void CGUI::Xeromyces_ReadObject(XMBElement Element, CXeromyces* pFile, IGUIObjec
CVFSFile scriptfile;
if (scriptfile.Load(g_VFS, filename) != PSRETURN_OK)
{
LOGERROR("Error opening GUI script action file '%s'", filename.c_str());
LOGERROR("Error opening GUI script action file '%s'", utf8_from_wstring(filename));
throw PSERROR_GUI_JSOpenFailed();
}
@ -1348,21 +1348,21 @@ void CGUI::Xeromyces_ReadObject(XMBElement Element, CXeromyces* pFile, IGUIObjec
if (!filename.empty())
{
if (!directory.empty())
LOGWARNING("GUI: Include element found with file name (%s) and directory name (%s). Only the file will be processed.", filename.c_str(), directory.c_str());
LOGWARNING("GUI: Include element found with file name (%s) and directory name (%s). Only the file will be processed.", utf8_from_wstring(filename), utf8_from_wstring(directory));
Paths.insert(filename);
CXeromyces XeroIncluded;
if (XeroIncluded.Load(g_VFS, filename) != PSRETURN_OK)
{
LOGERROR("GUI: Error reading included XML: '%s'", filename.c_str());
LOGERROR("GUI: Error reading included XML: '%s'", utf8_from_wstring(filename));
continue;
}
XMBElement node = XeroIncluded.GetRoot();
if (node.GetNodeName() != XeroIncluded.GetElementID("object"))
{
LOGERROR("GUI: Error reading included XML: '%s', root element must have be of type 'object'.", filename.c_str());
LOGERROR("GUI: Error reading included XML: '%s', root element must have be of type 'object'.", utf8_from_wstring(filename));
continue;
}
Xeromyces_ReadObject(node, &XeroIncluded, object, NameSubst, Paths, nesting_depth+1);
@ -1491,7 +1491,7 @@ void CGUI::Xeromyces_ReadScript(XMBElement Element, CXeromyces* pFile, boost::un
}
catch (PSERROR_Scripting& e)
{
LOGERROR("GUI: Error executing script %s: %s", file.c_str(), e.what());
LOGERROR("GUI: Error executing script %s: %s", utf8_from_wstring(file), e.what());
}
}
@ -1636,7 +1636,7 @@ void CGUI::Xeromyces_ReadImage(XMBElement Element, CXeromyces* pFile, CGUISprite
{
CClientArea ca;
if (!GUI<CClientArea>::ParseString(attr_value, ca))
LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name.c_str(), attr_value.c_str());
LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name, utf8_from_wstring(attr_value));
else Image->m_Size = ca;
}
else
@ -1644,7 +1644,7 @@ void CGUI::Xeromyces_ReadImage(XMBElement Element, CXeromyces* pFile, CGUISprite
{
CClientArea ca;
if (!GUI<CClientArea>::ParseString(attr_value, ca))
LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name.c_str(), attr_value.c_str());
LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name, utf8_from_wstring(attr_value));
else Image->m_TextureSize = ca;
}
else
@ -1652,7 +1652,7 @@ void CGUI::Xeromyces_ReadImage(XMBElement Element, CXeromyces* pFile, CGUISprite
{
CRect rect;
if (!GUI<CRect>::ParseString(attr_value, rect))
LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name.c_str(), attr_value.c_str());
LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name, utf8_from_wstring(attr_value));
else Image->m_TexturePlacementInFile = rect;
}
else
@ -1660,7 +1660,7 @@ void CGUI::Xeromyces_ReadImage(XMBElement Element, CXeromyces* pFile, CGUISprite
{
CSize size;
if (!GUI<CSize>::ParseString(attr_value, size))
LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name.c_str(), attr_value.c_str());
LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name, utf8_from_wstring(attr_value));
else Image->m_CellSize = size;
}
else
@ -1668,7 +1668,7 @@ void CGUI::Xeromyces_ReadImage(XMBElement Element, CXeromyces* pFile, CGUISprite
{
float val;
if (!GUI<float>::ParseString(attr_value, val))
LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name.c_str(), attr_value.c_str());
LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name, utf8_from_wstring(attr_value));
else Image->m_FixedHAspectRatio = val;
}
else
@ -1676,7 +1676,7 @@ void CGUI::Xeromyces_ReadImage(XMBElement Element, CXeromyces* pFile, CGUISprite
{
bool b;
if (!GUI<bool>::ParseString(attr_value, b))
LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name.c_str(), attr_value.c_str());
LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name, utf8_from_wstring(attr_value));
else Image->m_RoundCoordinates = b;
}
else
@ -1689,14 +1689,14 @@ void CGUI::Xeromyces_ReadImage(XMBElement Element, CXeromyces* pFile, CGUISprite
else if (attr_value == L"clamp_to_edge")
Image->m_WrapMode = GL_CLAMP_TO_EDGE;
else
LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name.c_str(), attr_value.c_str());
LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name, utf8_from_wstring(attr_value));
}
else
if (attr_name == "z_level")
{
float z_level;
if (!GUI<float>::ParseString(attr_value, z_level))
LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name.c_str(), attr_value.c_str());
LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name, utf8_from_wstring(attr_value));
else Image->m_DeltaZ = z_level/100.f;
}
else
@ -1704,7 +1704,7 @@ void CGUI::Xeromyces_ReadImage(XMBElement Element, CXeromyces* pFile, CGUISprite
{
CColor color;
if (!GUI<CColor>::ParseString(attr_value, color))
LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name.c_str(), attr_value.c_str());
LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name, utf8_from_wstring(attr_value));
else Image->m_BackColor = color;
}
else
@ -1712,7 +1712,7 @@ void CGUI::Xeromyces_ReadImage(XMBElement Element, CXeromyces* pFile, CGUISprite
{
CColor color;
if (!GUI<CColor>::ParseString(attr_value, color))
LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name.c_str(), attr_value.c_str());
LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name, utf8_from_wstring(attr_value));
else Image->m_BorderColor = color;
}
else
@ -1720,7 +1720,7 @@ void CGUI::Xeromyces_ReadImage(XMBElement Element, CXeromyces* pFile, CGUISprite
{
bool b;
if (!GUI<bool>::ParseString(attr_value, b))
LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name.c_str(), attr_value.c_str());
LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name, utf8_from_wstring(attr_value));
else Image->m_Border = b;
}
else
@ -1773,7 +1773,7 @@ void CGUI::Xeromyces_ReadEffects(XMBElement Element, CXeromyces* pFile, SGUIImag
{
CColor color;
if (!GUI<int>::ParseColor(attr_value, color, 0))
LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name.c_str(), attr_value.c_str());
LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name, utf8_from_wstring(attr_value));
else effects.m_AddColor = color;
}
else if (attr_name == "grayscale")
@ -1853,7 +1853,7 @@ void CGUI::Xeromyces_ReadScrollBarStyle(XMBElement Element, CXeromyces* pFile)
{
bool b;
if (!GUI<bool>::ParseString(attr_value.FromUTF8(), b))
LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name.c_str(), attr_value.c_str());
LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name, attr_value);
else
scrollbar.m_UseEdgeButtons = b;
}
@ -1861,7 +1861,7 @@ void CGUI::Xeromyces_ReadScrollBarStyle(XMBElement Element, CXeromyces* pFile)
{
float f;
if (!GUI<float>::ParseString(attr_value.FromUTF8(), f))
LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name.c_str(), attr_value.c_str());
LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name, attr_value);
else
scrollbar.m_Width = f;
}
@ -1870,7 +1870,7 @@ void CGUI::Xeromyces_ReadScrollBarStyle(XMBElement Element, CXeromyces* pFile)
{
float f;
if (!GUI<float>::ParseString(attr_value.FromUTF8(), f))
LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name.c_str(), attr_value.c_str());
LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name, attr_value);
else
scrollbar.m_MinimumBarSize = f;
}
@ -1879,7 +1879,7 @@ void CGUI::Xeromyces_ReadScrollBarStyle(XMBElement Element, CXeromyces* pFile)
{
float f;
if (!GUI<float>::ParseString(attr_value.FromUTF8(), f))
LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name.c_str(), attr_value.c_str());
LOGERROR("GUI: Error parsing '%s' (\"%s\")", attr_name, attr_value);
else
scrollbar.m_MaximumBarSize = f;
}
@ -1952,7 +1952,7 @@ void CGUI::Xeromyces_ReadIcon(XMBElement Element, CXeromyces* pFile)
{
CSize size;
if (!GUI<CSize>::ParseString(attr_value.FromUTF8(), size))
LOGERROR("Error parsing '%s' (\"%s\") inside <icon>.", attr_name.c_str(), attr_value.c_str());
LOGERROR("Error parsing '%s' (\"%s\") inside <icon>.", attr_name, attr_value);
else
icon.m_Size = size;
}
@ -1960,7 +1960,7 @@ void CGUI::Xeromyces_ReadIcon(XMBElement Element, CXeromyces* pFile)
{
int cell_id;
if (!GUI<int>::ParseString(attr_value.FromUTF8(), cell_id))
LOGERROR("GUI: Error parsing '%s' (\"%s\") inside <icon>.", attr_name.c_str(), attr_value.c_str());
LOGERROR("GUI: Error parsing '%s' (\"%s\") inside <icon>.", attr_name, attr_value);
else
icon.m_CellID = cell_id;
}

View File

@ -137,7 +137,7 @@ void CGUIManager::PopPageCB(shared_ptr<ScriptInterface::StructuredClone> args)
JS::RootedValue global(cx, scriptInterface->GetGlobalObject());
if (!scriptInterface->HasProperty(global, callback.c_str()))
{
LOGERROR("The specified callback function %s does not exist in the page %s", callback.c_str(), m_PageStack.back().name.c_str());
LOGERROR("The specified callback function %s does not exist in the page %s", callback, utf8_from_wstring(m_PageStack.back().name));
return;
}
@ -146,7 +146,7 @@ void CGUIManager::PopPageCB(shared_ptr<ScriptInterface::StructuredClone> args)
scriptInterface->ReadStructuredClone(args, &argVal);
if (!scriptInterface->CallFunctionVoid(global, callback.c_str(), argVal))
{
LOGERROR("Failed to call the callback function %s in the page %s", callback.c_str(), m_PageStack.back().name.c_str());
LOGERROR("Failed to call the callback function %s in the page %s", callback, utf8_from_wstring(m_PageStack.back().name));
return;
}
}
@ -204,7 +204,7 @@ void CGUIManager::LoadPage(SGUIPage& page)
if (root.GetNodeName() != elmt_page)
{
LOGERROR("GUI page '%s' must have root element <page>", page.name.c_str());
LOGERROR("GUI page '%s' must have root element <page>", utf8_from_wstring(page.name));
return;
}
@ -212,7 +212,7 @@ void CGUIManager::LoadPage(SGUIPage& page)
{
if (node.GetNodeName() != elmt_include)
{
LOGERROR("GUI page '%s' must only have <include> elements inside <page>", page.name.c_str());
LOGERROR("GUI page '%s' must only have <include> elements inside <page>", utf8_from_wstring(page.name));
continue;
}
@ -252,7 +252,7 @@ void CGUIManager::LoadPage(SGUIPage& page)
hotloadDataVal)
)
{
LOGERROR("GUI page '%s': Failed to call init() function", page.name.c_str());
LOGERROR("GUI page '%s': Failed to call init() function", utf8_from_wstring(page.name));
}
m_CurrentGUI = oldGUI;
@ -264,7 +264,7 @@ Status CGUIManager::ReloadChangedFile(const VfsPath& path)
{
if (it->inputs.count(path))
{
LOGMESSAGE("GUI file '%s' changed - reloading page '%s'", path.string8(), it->name.c_str());
LOGMESSAGE("GUI file '%s' changed - reloading page '%s'", path.string8(), utf8_from_wstring(it->name));
LoadPage(*it);
// TODO: this can crash if LoadPage runs an init script which modifies the page stack and breaks our iterators
}

View File

@ -144,7 +144,7 @@ void GUIRenderer::UpdateDrawCallCache(DrawCalls &Calls, const CStr& SpriteName,
// Check colour is valid
if (!GUI<CColor>::ParseString(value, color))
{
LOGERROR("GUI: Error parsing sprite 'colour' (\"%s\")", value.c_str());
LOGERROR("GUI: Error parsing sprite 'colour' (\"%s\")", utf8_from_wstring(value));
return;
}

View File

@ -306,7 +306,7 @@ void CGUIString::SetValue(const CStrW& str)
closing = false;
if (++p == l)
{
LOGERROR("Partial tag at end of string '%s'", str.c_str());
LOGERROR("Partial tag at end of string '%s'", utf8_from_wstring(str));
break;
}
if (str[p] == L'/')
@ -314,12 +314,12 @@ void CGUIString::SetValue(const CStrW& str)
closing = true;
if (tags.empty())
{
LOGERROR("Encountered closing tag without having any open tags. At %d in '%s'", p, str.c_str());
LOGERROR("Encountered closing tag without having any open tags. At %d in '%s'", p, utf8_from_wstring(str));
break;
}
if (++p == l)
{
LOGERROR("Partial closing tag at end of string '%s'", str.c_str());
LOGERROR("Partial closing tag at end of string '%s'", utf8_from_wstring(str));
break;
}
}
@ -332,7 +332,7 @@ void CGUIString::SetValue(const CStrW& str)
{
case L' ':
if (closing) // We still parse them to make error handling cleaner
LOGERROR("Closing tags do not support parameters (at pos %d '%s')", p, str.c_str());
LOGERROR("Closing tags do not support parameters (at pos %d '%s')", p, utf8_from_wstring(str));
// parse something="something else"
for (++p; p < l && str[p] != L'='; ++p)
@ -340,23 +340,23 @@ void CGUIString::SetValue(const CStrW& str)
if (p == l)
{
LOGERROR("Parameter without value at pos %d '%s'", p, str.c_str());
LOGERROR("Parameter without value at pos %d '%s'", p, utf8_from_wstring(str));
break;
}
// fall-through
case L'=':
// parse a quoted parameter
if (closing) // We still parse them to make error handling cleaner
LOGERROR("Closing tags do not support parameters (at pos %d '%s')", p, str.c_str());
LOGERROR("Closing tags do not support parameters (at pos %d '%s')", p, utf8_from_wstring(str));
if (++p == l)
{
LOGERROR("Expected parameter, got end of string '%s'", str.c_str());
LOGERROR("Expected parameter, got end of string '%s'", utf8_from_wstring(str));
break;
}
if (str[p] != L'"')
{
LOGERROR("Unquoted parameters are not supported (at pos %d '%s')", p, str.c_str());
LOGERROR("Unquoted parameters are not supported (at pos %d '%s')", p, utf8_from_wstring(str));
break;
}
for (++p; p < l && str[p] != L'"'; ++p)
@ -366,7 +366,7 @@ void CGUIString::SetValue(const CStrW& str)
case L'\\':
if (++p == l)
{
LOGERROR("Escape character at end of string '%s'", str.c_str());
LOGERROR("Escape character at end of string '%s'", utf8_from_wstring(str));
break;
}
// NOTE: We do not support \n in tag parameters
@ -392,7 +392,7 @@ void CGUIString::SetValue(const CStrW& str)
if (!tag_.SetTagType(tag))
{
LOGERROR("Invalid tag '%s' at %d in '%s'", tag.c_str(), p, str.c_str());
LOGERROR("Invalid tag '%s' at %d in '%s'", utf8_from_wstring(tag), p, utf8_from_wstring(str));
break;
}
if (!closing)
@ -415,7 +415,7 @@ void CGUIString::SetValue(const CStrW& str)
{
if (tag != tags.back())
{
LOGERROR("Closing tag '%s' does not match last opened tag '%s' at %d in '%s'", tag.c_str(), tags.back().c_str(), p, str.c_str());
LOGERROR("Closing tag '%s' does not match last opened tag '%s' at %d in '%s'", utf8_from_wstring(tag), utf8_from_wstring(tags.back()), p, utf8_from_wstring(str));
break;
}
@ -426,7 +426,7 @@ void CGUIString::SetValue(const CStrW& str)
case L'\\':
if (++p == l)
{
LOGERROR("Escape character at end of string '%s'", str.c_str());
LOGERROR("Escape character at end of string '%s'", utf8_from_wstring(str));
break;
}
if (str[p] == L'n')

View File

@ -428,7 +428,7 @@ bool CNetClient::OnAuthenticate(void* context, CFsmEvent* event)
CAuthenticateResultMessage* message = (CAuthenticateResultMessage*)event->GetParamRef();
LOGMESSAGE("Net: Authentication result: host=%u, %s", message->m_HostID, message->m_Message.c_str());
LOGMESSAGE("Net: Authentication result: host=%u, %s", message->m_HostID, utf8_from_wstring(message->m_Message));
bool isRejoining = (message->m_Code == ARC_OK_REJOINING);

View File

@ -810,7 +810,7 @@ bool CNetServerWorker::OnAuthenticate(void* context, CFsmEvent* event)
// Players who weren't already in the game are not allowed to join now that it's started
if (!isRejoining)
{
LOGMESSAGE("Refused connection after game start from not-previously-known user \"%s\"", username.c_str());
LOGMESSAGE("Refused connection after game start from not-previously-known user \"%s\"", utf8_from_wstring(username));
session->Disconnect(NDR_SERVER_ALREADY_IN_GAME);
return true;
}

View File

@ -48,12 +48,12 @@ static const int COMMAND_DELAY = 2;
#define NETTURN_LOG(args)
#endif
static std::wstring Hexify(const std::string& s)
static std::string Hexify(const std::string& s)
{
std::wstringstream str;
std::stringstream str;
str << std::hex;
for (size_t i = 0; i < s.size(); ++i)
str << std::setfill(L'0') << std::setw(2) << (int)(unsigned char)s[i];
str << std::setfill('0') << std::setw(2) << (int)(unsigned char)s[i];
return str.str();
}
@ -220,7 +220,7 @@ bool CNetTurnManager::UpdateFastForward()
void CNetTurnManager::OnSyncError(u32 turn, const std::string& expectedHash)
{
NETTURN_LOG((L"OnSyncError(%d, %ls)\n", turn, Hexify(expectedHash).c_str()));
NETTURN_LOG((L"OnSyncError(%d, %hs)\n", turn, Hexify(expectedHash).c_str()));
// Only complain the first time
if (m_HasSyncError)
@ -237,14 +237,14 @@ void CNetTurnManager::OnSyncError(u32 turn, const std::string& expectedHash)
m_Simulation2.DumpDebugState(file);
file.close();
std::wstringstream msg;
msg << L"Out of sync on turn " << turn << L": expected hash " << Hexify(expectedHash) << L"\n\n";
msg << L"Current state: turn " << m_CurrentTurn << L", hash " << Hexify(hash) << L"\n\n";
msg << L"Dumping current state to " << path;
std::stringstream msg;
msg << "Out of sync on turn " << turn << ": expected hash " << Hexify(expectedHash) << "\n\n";
msg << "Current state: turn " << m_CurrentTurn << ", hash " << Hexify(hash) << "\n\n";
msg << "Dumping current state to " << utf8_from_wstring(path.string());
if (g_GUI)
g_GUI->DisplayMessageBox(600, 350, L"Sync error", msg.str());
g_GUI->DisplayMessageBox(600, 350, L"Sync error", wstring_from_utf8(msg.str()));
else
LOGERROR("%s", msg.str().c_str());
LOGERROR("%s", msg.str());
}
void CNetTurnManager::Interpolate(float simFrameLength, float realFrameLength)
@ -408,7 +408,7 @@ void CNetClientTurnManager::NotifyFinishedUpdate(u32 turn)
ENSURE(ok);
}
NETTURN_LOG((L"NotifyFinishedUpdate(%d, %ls)\n", turn, Hexify(hash).c_str()));
NETTURN_LOG((L"NotifyFinishedUpdate(%d, %hs)\n", turn, Hexify(hash).c_str()));
m_Replay.Hash(hash, quick);
@ -546,7 +546,7 @@ void CNetServerTurnManager::NotifyFinishedClientUpdate(int client, u32 turn, con
for (std::map<int, std::string>::iterator cit = it->second.begin(); cit != it->second.end(); ++cit)
{
NETTURN_LOG((L"sync check %d: %d = %ls\n", it->first, cit->first, Hexify(cit->second).c_str()));
NETTURN_LOG((L"sync check %d: %d = %hs\n", it->first, cit->first, Hexify(cit->second).c_str()));
if (cit->second != expected)
{
// Oh no, out of sync

View File

@ -337,18 +337,18 @@ bool CConfigDB::Reload(EConfigNamespace ns)
CStr key(header + name);
newMap[key] = values;
if (key == "lobby.password")
LOGMESSAGE("Loaded config string \"%s\"", key.c_str());
LOGMESSAGE("Loaded config string \"%s\"", key);
else
{
std::string vals;
for (size_t i = 0; i < newMap[key].size() - 1; ++i)
vals += "\"" + EscapeString(newMap[key][i]) + "\", ";
vals += "\"" + EscapeString(newMap[key][values.size()-1]) + "\"";
LOGMESSAGE("Loaded config string \"%s\" = %s", key.c_str(), vals.c_str());
LOGMESSAGE("Loaded config string \"%s\" = %s", key, vals);
}
}
else if (!name.empty())
LOGERROR("Encountered config setting '%s' without value while parsing '%s' on line %d", name.c_str(), m_ConfigFile[ns].string8(), line);
LOGERROR("Encountered config setting '%s' without value while parsing '%s' on line %d", name, m_ConfigFile[ns].string8(), line);
name.clear();
values.clear();
@ -356,7 +356,7 @@ bool CConfigDB::Reload(EConfigNamespace ns)
}
if (!name.empty())
LOGERROR("Config file does not have a new line after the last config setting '%s'", name.c_str());
LOGERROR("Config file does not have a new line after the last config setting '%s'", name);
m_Map[ns].swap(newMap);

View File

@ -293,7 +293,7 @@ void Render()
#warning TODO: cursors for Android
#else
if (cursor_draw(g_VFS, cursorName.c_str(), g_mouse_x, g_yres-g_mouse_y, forceGL) < 0)
LOGWARNING("Failed to draw cursor '%s'", cursorName.c_str());
LOGWARNING("Failed to draw cursor '%s'", utf8_from_wstring(cursorName));
#endif
#if CONFIG2_GLES
@ -1246,7 +1246,7 @@ bool Autostart(const CmdLineArgs& args)
else
{
// Problem with JSON file
LOGERROR("Autostart: Error reading random map script '%s'", scriptPath.c_str());
LOGERROR("Autostart: Error reading random map script '%s'", utf8_from_wstring(scriptPath));
throw PSERROR_Game_World_MapLoadFailed("Error reading random map script.\nCheck application log for details.");
}
@ -1301,7 +1301,7 @@ bool Autostart(const CmdLineArgs& args)
}
else
{
LOGERROR("Autostart: Unrecognized map type '%s'", mapDirectory.c_str());
LOGERROR("Autostart: Unrecognized map type '%s'", utf8_from_wstring(mapDirectory));
throw PSERROR_Game_World_MapLoadFailed("Unrecognized map type.\nConsult readme.txt for the currently supported types.");
}
scriptInterface.SetProperty(attrs, "mapType", mapType);

View File

@ -39,8 +39,8 @@ static void errorHandler(void* UNUSED(userData), xmlErrorPtr error)
message.erase(message.length()-1);
LOGERROR("CXeromyces: Parse %s: %s:%d: %s",
error->level == XML_ERR_WARNING ? L"warning" : L"error",
error->file, error->line, message.c_str());
error->level == XML_ERR_WARNING ? "warning" : "error",
error->file, error->line, message);
// TODO: The (non-fatal) warnings and errors don't get stored in the XMB,
// so the caching is less transparent than it should be
}

View File

@ -163,7 +163,7 @@ JSBool logmsg(JSContext* cx, uint argc, jsval* vp)
std::wstring str;
if (!ScriptInterface::FromJSVal(cx, args.handleAt(0), str))
return JS_FALSE;
LOGMESSAGE("%s", str.c_str());
LOGMESSAGE("%s", utf8_from_wstring(str));
args.rval().setUndefined();
return JS_TRUE;
}
@ -180,7 +180,7 @@ JSBool warn(JSContext* cx, uint argc, jsval* vp)
std::wstring str;
if (!ScriptInterface::FromJSVal(cx, args.handleAt(0), str))
return JS_FALSE;
LOGWARNING("%s", str.c_str());
LOGWARNING("%s", utf8_from_wstring(str));
args.rval().setUndefined();
return JS_TRUE;
}
@ -197,7 +197,7 @@ JSBool error(JSContext* cx, uint argc, jsval* vp)
std::wstring str;
if (!ScriptInterface::FromJSVal(cx, args.handleAt(0), str))
return JS_FALSE;
LOGERROR("%s", str.c_str());
LOGERROR("%s", utf8_from_wstring(str));
args.rval().setUndefined();
return JS_TRUE;
}
@ -946,7 +946,7 @@ bool ScriptInterface::ParseJSON(const std::string& string_utf8, JS::MutableHandl
std::wstring error;
ScriptInterface::FromJSVal(m->m_cx, rval, error);
LOGERROR("%s", error.c_str());
LOGERROR("%s", utf8_from_wstring(error));
return false;
}

View File

@ -828,7 +828,7 @@ static std::vector<std::string> GetJSONData(const VfsPath& path)
{
// Some error reading directory
wchar_t error[200];
LOGERROR("Error reading directory '%s': %s", path.string8(), StatusDescription(ret, error, ARRAY_SIZE(error)));
LOGERROR("Error reading directory '%s': %s", path.string8(), utf8_from_wstring(StatusDescription(ret, error, ARRAY_SIZE(error))));
return std::vector<std::string>();
}

View File

@ -124,7 +124,7 @@ private:
if (!m_ScriptInterface->GetProperty(global, moduleName.c_str(), &objectWithConstructor)
|| objectWithConstructor.isUndefined())
{
LOGERROR("Failed to create AI player: %s: can't find the module that should contain the constructor: '%s'", path.string8(), moduleName.c_str());
LOGERROR("Failed to create AI player: %s: can't find the module that should contain the constructor: '%s'", path.string8(), moduleName);
return false;
}
@ -138,7 +138,7 @@ private:
if (!m_ScriptInterface->GetProperty(objectWithConstructor, constructor.c_str(), &ctor)
|| ctor.isNull())
{
LOGERROR("Failed to create AI player: %s: can't find constructor '%s'", path.string8(), constructor.c_str());
LOGERROR("Failed to create AI player: %s: can't find constructor '%s'", path.string8(), constructor);
return false;
}
@ -160,7 +160,7 @@ private:
if (obj.isNull())
{
LOGERROR("Failed to create AI player: %s: error calling constructor '%s'", path.string8(), constructor.c_str());
LOGERROR("Failed to create AI player: %s: error calling constructor '%s'", path.string8(), constructor);
return false;
}
@ -261,7 +261,7 @@ public:
VfsPaths pathnames;
if (vfs::GetPathnames(g_VFS, L"simulation/ai/" + moduleName + L"/", L"*.js", pathnames) < 0)
{
LOGERROR("Failed to load AI scripts for module %s", moduleName.c_str());
LOGERROR("Failed to load AI scripts for module %s", utf8_from_wstring(moduleName));
return false;
}
@ -748,7 +748,7 @@ public:
std::pair<std::map<JSObject*, std::wstring>::iterator, bool> ret1 = m_SerializablePrototypes.insert(std::make_pair(obj, name));
std::pair<std::map<std::wstring, JSObject*>::iterator, bool> ret2 = m_DeserializablePrototypes.insert(std::make_pair(name, obj));
if (!ret1.second || !ret2.second)
LOGERROR("RegisterSerializablePrototype called with same prototype multiple times: p=%p n='%s'", obj, name.c_str());
LOGERROR("RegisterSerializablePrototype called with same prototype multiple times: p=%p n='%s'", (void *)obj, utf8_from_wstring(name));
}
private:

View File

@ -175,7 +175,7 @@ uint32_t CCmpProjectileManager::LaunchProjectile(entity_id_t source, CFixedVecto
{
// If the actor was actually loaded, complain that it doesn't have a projectile
if (!cmpSourceVisual->GetActorShortName().empty())
LOGERROR("Unit with actor '%s' launched a projectile but has no actor on 'projectile' attachpoint", cmpSourceVisual->GetActorShortName().c_str());
LOGERROR("Unit with actor '%s' launched a projectile but has no actor on 'projectile' attachpoint", utf8_from_wstring(cmpSourceVisual->GetActorShortName()));
return 0;
}

View File

@ -317,7 +317,7 @@ void CBinarySerializerScriptImpl::HandleScriptVal(JS::HandleValue val)
}
}
LOGERROR("Cannot serialise JS objects of type 'function': %s", funcname.c_str());
LOGERROR("Cannot serialise JS objects of type 'function': %s", utf8_from_wstring(funcname));
throw PSERROR_Serialize_InvalidScriptValue();
}
case JSTYPE_STRING:

View File

@ -887,13 +887,13 @@ entity_id_t CComponentManager::AddEntity(const std::wstring& templateName, entit
CComponentManager::ComponentTypeId cid = LookupCID(it->first);
if (cid == CID__Invalid)
{
LOGERROR("Unrecognised component type name '%s' in entity template '%s'", it->first.c_str(), templateName.c_str());
LOGERROR("Unrecognised component type name '%s' in entity template '%s'", it->first, utf8_from_wstring(templateName));
return INVALID_ENTITY;
}
if (!AddComponent(handle, cid, it->second))
{
LOGERROR("Failed to construct component type name '%s' in entity template '%s'", it->first.c_str(), templateName.c_str());
LOGERROR("Failed to construct component type name '%s' in entity template '%s'", it->first, utf8_from_wstring(templateName));
return INVALID_ENTITY;
}
// TODO: maybe we should delete already-constructed components if one of them fails?
@ -1226,7 +1226,7 @@ std::vector<std::string> CComponentManager::Script_FindJSONFiles(ScriptInterface
{
// Some error reading directory
wchar_t error[200];
LOGERROR("Error reading directory '%s': %s", cbData.path.string8(), StatusDescription(ret, error, ARRAY_SIZE(error)));
LOGERROR("Error reading directory '%s': %s", cbData.path.string8(), utf8_from_wstring(StatusDescription(ret, error, ARRAY_SIZE(error))));
}
return cbData.templates;

View File

@ -124,7 +124,7 @@ void CParamNode::ApplyLayer(const XMBFile& xmb, const XMBElement& element, const
tokens.erase(tokenIt);
else
LOGWARNING("[ParamNode] Could not remove token '%s' from node '%s'%s; not present in list nor inherited (possible typo?)",
newTokens[i].substr(1).c_str(), name.c_str(), sourceIdentifier ? (L" in '" + std::wstring(sourceIdentifier) + L"'").c_str() : L"");
utf8_from_wstring(newTokens[i].substr(1)), name, sourceIdentifier ? (" in '" + utf8_from_wstring(sourceIdentifier) + "'").c_str() : "");
}
else
{

View File

@ -354,7 +354,7 @@ Status CSoundManager::AlcInit()
debug_printf(L"Sound: AlcInit success, using %hs\n", dev_name);
else
{
LOGERROR("Sound: AlcInit failed, m_Device=%p m_Context=%p dev_name=%s err=%x\n", m_Device, m_Context, dev_name, err);
LOGERROR("Sound: AlcInit failed, m_Device=%p m_Context=%p dev_name=%s err=%x\n", (void *)m_Device, (void *)m_Context, dev_name, err);
// FIXME Hack to get around exclusive access to the sound device
#if OS_UNIX

View File

@ -227,7 +227,7 @@ static void HandleError(const CStrW& message, const VfsPath& pathname, Status er
{
if (err == ERR::AGAIN)
return; // open failed because sound is disabled (don't log this)
LOGERROR("%s: pathname=%s, error=%s", message.c_str(), pathname.string8(), ErrorString(err));
LOGERROR("%s: pathname=%s, error=%s", utf8_from_wstring(message), pathname.string8(), utf8_from_wstring(ErrorString(err)));
}
void CSoundGroup::PlayNext(const CVector3D& position, entity_id_t source)