if (XML_Parse(sc->parser, chunk.c_str(), chunk.length(), final) == XML_STATUS_ERROR)
{
- strprintf(&sc->errorMsg, "XML parse error at line %d: %s",
+ strprintf(&sc->errorMsg, "XML parse error at line %d, %d: %s. Is final: %d",
static_cast<int>(XML_GetCurrentLineNumber(sc->parser)),
- XML_ErrorString(XML_GetErrorCode(sc->parser)));
- printf("%s\n", sc->errorMsg.c_str());
+ static_cast<int>(XML_GetCurrentColumnNumber(sc->parser)),
+ XML_ErrorString(XML_GetErrorCode(sc->parser)), (int)final);
return false;
}
int SERVCONF::ChgService(const SERVICE_CONF_RES & conf, SIMPLE::CALLBACK f, void * data)
{
-return pImpl->Exec<SIMPLE::PARSER>("SetService", "<SetService name=\"" + conf.name.data() + "\">" + CHG_SERVICE::Serialize(conf, pImpl->Encoding()) + "</SetService>", f, data);
+return pImpl->Exec<SIMPLE::PARSER>("SetService", "<SetService " + CHG_SERVICE::Serialize(conf, pImpl->Encoding()) + "/>", f, data);
}
int SERVCONF::AddService(const std::string & name,
int res = pImpl->Exec<SIMPLE::PARSER>("AddService", "<AddService name=\"" + name + "\"/>", f, data);
if (res != st_ok)
return res;
-return pImpl->Exec<SIMPLE::PARSER>("SetService", "<SetService name=\"" + name + "\">" + CHG_SERVICE::Serialize(conf, pImpl->Encoding()) + "</SetService>", f, data);
+return pImpl->Exec<SIMPLE::PARSER>("SetService", "<SetService " + CHG_SERVICE::Serialize(conf, pImpl->Encoding()) + "/>", f, data);
}
int SERVCONF::DelService(const std::string & name, SIMPLE::CALLBACK f, void * data)
: nt(server, port, login, password)
{
setlocale(LC_ALL, "");
+setlocale(LC_NUMERIC, "C");
encoding = nl_langinfo(CODESET);
parser = XML_ParserCreate(NULL);
}
: nt(server, port, localAddress, localPort, login, password)
{
setlocale(LC_ALL, "");
+setlocale(LC_NUMERIC, "C");
encoding = nl_langinfo(CODESET);
parser = XML_ParserCreate(NULL);
}