made all getWhat() methods on exceptions consistent. they now
all use format() the same way. also changed format() to actually do formatting. however, it doesn't try looking up formatting strings by id, it just uses the fallback format string.
This commit is contained in:
parent
1fd8e25f7d
commit
f129841b38
|
@ -1,5 +1,6 @@
|
||||||
#include "XBase.h"
|
#include "XBase.h"
|
||||||
#include <cerrno>
|
#include <cerrno>
|
||||||
|
#include <cstdarg>
|
||||||
|
|
||||||
// win32 wants a const char* argument to std::exception c'tor
|
// win32 wants a const char* argument to std::exception c'tor
|
||||||
#if WINDOWS_LIKE
|
#if WINDOWS_LIKE
|
||||||
|
@ -46,9 +47,22 @@ XBase::what() const
|
||||||
CString
|
CString
|
||||||
XBase::format(const char* /*id*/, const char* fmt, ...) const throw()
|
XBase::format(const char* /*id*/, const char* fmt, ...) const throw()
|
||||||
{
|
{
|
||||||
// FIXME -- use id to lookup formating string
|
// FIXME -- lookup message string using id as an index. set
|
||||||
// FIXME -- format string with arguments
|
// fmt to that string if it exists.
|
||||||
return fmt;
|
|
||||||
|
// format
|
||||||
|
CString result;
|
||||||
|
va_list args;
|
||||||
|
va_start(args, fmt);
|
||||||
|
try {
|
||||||
|
result = CStringUtil::vformat(fmt, args);
|
||||||
|
}
|
||||||
|
catch (...) {
|
||||||
|
// ignore
|
||||||
|
}
|
||||||
|
va_end(args);
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -48,20 +48,16 @@ XHTTP::addHeaders(CHTTPReply&) const
|
||||||
CString
|
CString
|
||||||
XHTTP::getWhat() const throw()
|
XHTTP::getWhat() const throw()
|
||||||
{
|
{
|
||||||
try {
|
const char* reason;
|
||||||
std::ostringstream s;
|
if (m_reason.empty()) {
|
||||||
s << m_status << " ";
|
reason = getReason(m_status);
|
||||||
if (!m_reason.empty()) {
|
|
||||||
s << m_reason.c_str();
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
s << getReason(m_status);
|
reason = m_reason.c_str();
|
||||||
}
|
|
||||||
return s.str();
|
|
||||||
}
|
|
||||||
catch (...) {
|
|
||||||
return CString();
|
|
||||||
}
|
}
|
||||||
|
return format("XHTTP", "%{1} %{2}",
|
||||||
|
CStringUtil::print("%d", m_status).c_str(),
|
||||||
|
reason);
|
||||||
}
|
}
|
||||||
|
|
||||||
const char*
|
const char*
|
||||||
|
|
|
@ -24,7 +24,7 @@ XIOErrno::XIOErrno(int err) :
|
||||||
CString
|
CString
|
||||||
XIOClose::getWhat() const throw()
|
XIOClose::getWhat() const throw()
|
||||||
{
|
{
|
||||||
return format("XIOClose", "close: %1", XIOErrno::getErrstr());
|
return format("XIOClose", "close: %{1}", XIOErrno::getErrstr());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -49,8 +49,9 @@ CString
|
||||||
XNetworkVersion::getWhat() const throw()
|
XNetworkVersion::getWhat() const throw()
|
||||||
{
|
{
|
||||||
return format("XNetworkVersion",
|
return format("XNetworkVersion",
|
||||||
"unsupported network version %d.%d",
|
"unsupported network version %{1}.%{2}",
|
||||||
m_major, m_minor);
|
CStringUtil::print("%d", m_major).c_str(),
|
||||||
|
CStringUtil::print("%d", m_minor).c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -73,6 +74,6 @@ CString
|
||||||
XNetworkFunctionUnavailable::getWhat() const throw()
|
XNetworkFunctionUnavailable::getWhat() const throw()
|
||||||
{
|
{
|
||||||
return format("XNetworkFunctionUnavailable",
|
return format("XNetworkFunctionUnavailable",
|
||||||
"missing network function %s",
|
"missing network function %{1}",
|
||||||
m_name.c_str());
|
m_name.c_str());
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,12 +34,21 @@ XSocketAddress::getPort() const throw()
|
||||||
CString
|
CString
|
||||||
XSocketAddress::getWhat() const throw()
|
XSocketAddress::getWhat() const throw()
|
||||||
{
|
{
|
||||||
return "no address";
|
static const char* s_errorID[] = {
|
||||||
/* FIXME
|
"XSocketAddressUnknown",
|
||||||
return format("XSocketAddress", "no address: %1:%2",
|
"XSocketAddressNotFound",
|
||||||
m_hostname.t_str(),
|
"XSocketAddressNoAddress",
|
||||||
CString::sprintf("%d", m_port).t_str());
|
"XSocketAddressBadPort"
|
||||||
*/
|
};
|
||||||
|
static const char* s_errorMsg[] = {
|
||||||
|
"unknown error for: %{1}:%{2}",
|
||||||
|
"address not found for: %{1}",
|
||||||
|
"no address for: %{1}",
|
||||||
|
"invalid port: %{2}"
|
||||||
|
};
|
||||||
|
return format(s_errorID[m_error], s_errorMsg[m_error],
|
||||||
|
m_hostname.c_str(),
|
||||||
|
CStringUtil::print("%d", m_port).c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -695,5 +695,5 @@ XConfigRead::~XConfigRead()
|
||||||
CString
|
CString
|
||||||
XConfigRead::getWhat() const throw()
|
XConfigRead::getWhat() const throw()
|
||||||
{
|
{
|
||||||
return m_error;
|
return format("XConfigRead", "read error: %s", m_error.c_str());
|
||||||
}
|
}
|
||||||
|
|
|
@ -336,9 +336,9 @@ parse(int argc, const char** argv)
|
||||||
try {
|
try {
|
||||||
s_synergyAddress = CNetworkAddress(argv[i + 1], kDefaultPort);
|
s_synergyAddress = CNetworkAddress(argv[i + 1], kDefaultPort);
|
||||||
}
|
}
|
||||||
catch (XSocketAddress&) {
|
catch (XSocketAddress& e) {
|
||||||
log((CLOG_PRINT "%s: invalid address for `%s'" BYE,
|
log((CLOG_PRINT "%s: invalid address for `%s'. %s." BYE,
|
||||||
pname, argv[i], pname));
|
pname, argv[i], e.what(), pname));
|
||||||
bye(kExitArgs);
|
bye(kExitArgs);
|
||||||
}
|
}
|
||||||
++i;
|
++i;
|
||||||
|
@ -349,9 +349,9 @@ parse(int argc, const char** argv)
|
||||||
try {
|
try {
|
||||||
s_httpAddress = CNetworkAddress(argv[i + 1], kDefaultPort + 1);
|
s_httpAddress = CNetworkAddress(argv[i + 1], kDefaultPort + 1);
|
||||||
}
|
}
|
||||||
catch (XSocketAddress&) {
|
catch (XSocketAddress& e) {
|
||||||
log((CLOG_PRINT "%s: invalid address for `%s'" BYE,
|
log((CLOG_PRINT "%s: invalid address for `%s'. %s." BYE,
|
||||||
pname, argv[i], pname));
|
pname, argv[i], e.what(), pname));
|
||||||
bye(kExitArgs);
|
bye(kExitArgs);
|
||||||
}
|
}
|
||||||
++i;
|
++i;
|
||||||
|
|
|
@ -370,5 +370,5 @@ CProtocolUtil::read(IInputStream* stream, void* vbuffer, UInt32 count)
|
||||||
CString
|
CString
|
||||||
XIOReadMismatch::getWhat() const throw()
|
XIOReadMismatch::getWhat() const throw()
|
||||||
{
|
{
|
||||||
return "CProtocolUtil::readf() mismatch";
|
return format("XIOReadMismatch", "CProtocolUtil::readf() mismatch");
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,5 +7,5 @@
|
||||||
CString
|
CString
|
||||||
XScreenOpenFailure::getWhat() const throw()
|
XScreenOpenFailure::getWhat() const throw()
|
||||||
{
|
{
|
||||||
return "XScreenOpenFailure";
|
return format("XScreenOpenFailure", "unable to open screen");
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,9 @@ XIncompatibleClient::getMinor() const throw()
|
||||||
CString
|
CString
|
||||||
XIncompatibleClient::getWhat() const throw()
|
XIncompatibleClient::getWhat() const throw()
|
||||||
{
|
{
|
||||||
return "XIncompatibleClient";
|
return format("XIncompatibleClient", "incompatible client %{1}.%{2}",
|
||||||
|
CStringUtil::print("%d", m_major).c_str(),
|
||||||
|
CStringUtil::print("%d", m_minor).c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -60,7 +62,7 @@ XDuplicateClient::getName() const throw()
|
||||||
CString
|
CString
|
||||||
XDuplicateClient::getWhat() const throw()
|
XDuplicateClient::getWhat() const throw()
|
||||||
{
|
{
|
||||||
return "XDuplicateClient";
|
return format("XDuplicateClient", "duplicate client %{1}", m_name.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -83,5 +85,5 @@ XUnknownClient::getName() const throw()
|
||||||
CString
|
CString
|
||||||
XUnknownClient::getWhat() const throw()
|
XUnknownClient::getWhat() const throw()
|
||||||
{
|
{
|
||||||
return "XUnknownClient";
|
return format("XUnknownClient", "unknown client %{1}", m_name.c_str());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue