From 078bbcf019d220b2f074e762bd85c312cf300756 Mon Sep 17 00:00:00 2001 From: prozacx Date: Sat, 7 May 2005 11:42:10 +0000 Subject: [PATCH] Moved some more functions from CUtils into CString git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@246 726aef4b-f618-498e-8847-2d620e286838 --- Chan.cpp | 2 +- DCCBounce.cpp | 4 +- FileUtils.cpp | 4 +- IRCSock.cpp | 70 ++++++++++----------- User.cpp | 4 +- UserSock.cpp | 34 +++++----- Utils.cpp | 170 +++++++++++++++++++++----------------------------- Utils.h | 106 +++++++++++++++---------------- znc.cpp | 38 +++++------ 9 files changed, 200 insertions(+), 232 deletions(-) diff --git a/Chan.cpp b/Chan.cpp index 69eea7be..119d4aaa 100644 --- a/Chan.cpp +++ b/Chan.cpp @@ -7,7 +7,7 @@ CChan::CChan(const CString& sName, CUser* pUser) { m_sName = sName.Token(0); m_sKey = sName.Token(1); - if (CUtils::Left(m_sName, 1) != "#" && CUtils::Left(m_sName, 1) != "&") { + if (m_sName.Left(1) != "#" && m_sName.Left(1) != "&") { m_sName = "#" + m_sName; } diff --git a/DCCBounce.cpp b/DCCBounce.cpp index 914b5b21..33ad5e0f 100644 --- a/DCCBounce.cpp +++ b/DCCBounce.cpp @@ -3,8 +3,8 @@ void CDCCBounce::ReadLine(const CString& sData) { CString sLine = sData; - while ((CUtils::Right(sLine, 1) == "\r") || (CUtils::Right(sLine, 1) == "\n")) { - CUtils::RightChomp(sLine); + while ((sLine.Right(1) == "\r") || (sLine.Right(1) == "\n")) { + sLine.RightChomp(); } DEBUG_ONLY(cout << GetSockName() << " <- [" << sLine << "]" << endl); diff --git a/FileUtils.cpp b/FileUtils.cpp index befc29eb..d3f09f30 100644 --- a/FileUtils.cpp +++ b/FileUtils.cpp @@ -7,8 +7,8 @@ CFile::CFile(const CString& sLongName) { m_sShortName = sLongName; // @todo shouldn't this be Right() and RightChomp() ?! - while (CUtils::Left(m_sShortName, 1) == "/") { - CUtils::LeftChomp(m_sShortName); + while (m_sShortName.Left(1) == "/") { + m_sShortName.LeftChomp(); } CString::size_type uPos = m_sShortName.rfind('/'); diff --git a/IRCSock.cpp b/IRCSock.cpp index 68504adb..fdfc3f0f 100644 --- a/IRCSock.cpp +++ b/IRCSock.cpp @@ -45,8 +45,8 @@ CIRCSock::~CIRCSock() { void CIRCSock::ReadLine(const CString& sData) { CString sLine = sData; - while ((CUtils::Right(sLine, 1) == "\r") || (CUtils::Right(sLine, 1) == "\n")) { - CUtils::RightChomp(sLine); + while ((sLine.Right(1) == "\r") || (sLine.Right(1) == "\n")) { + sLine.RightChomp(); } DEBUG_ONLY(cout << GetSockName() << " <- [" << sLine << "]" << endl); @@ -63,7 +63,7 @@ void CIRCSock::ReadLine(const CString& sData) { CString sCmd = sLine.Token(1); if ((sCmd.length() == 3) && (isdigit(sCmd[0])) && (isdigit(sCmd[1])) && (isdigit(sCmd[2]))) { - CString sServer = sLine.Token(0); CUtils::LeftChomp(sServer); + CString sServer = sLine.Token(0); sServer.LeftChomp(); unsigned int uRaw = strtoul(sCmd.c_str(), NULL, 10); CString sNick = sLine.Token(2); CString sRest = sLine.Token(3, true); @@ -147,29 +147,29 @@ void CIRCSock::ReadLine(const CString& sData) { if ((!sAltNick.empty()) && (strcasecmp(sConfNick.c_str(), sAltNick.c_str()) != 0)) { PutServ("NICK " + sAltNick); } else { - PutServ("NICK " + CUtils::Left(sConfNick, 8) + "-"); + PutServ("NICK " + sConfNick.Left(8) + "-"); } } else if (strcasecmp(sBadNick.c_str(), sAltNick.c_str()) == 0) { - PutServ("NICK " + CUtils::Left(sConfNick, 8) + "-"); - } else if (strcasecmp(sBadNick.c_str(), CString(CUtils::Left(sConfNick, 8) + "-").c_str()) == 0) { - PutServ("NICK " + CUtils::Left(sConfNick, 8) + "|"); - } else if (strcasecmp(sBadNick.c_str(), CString(CUtils::Left(sConfNick, 8) + "|").c_str()) == 0) { - PutServ("NICK " + CUtils::Left(sConfNick, 8) + "^"); + PutServ("NICK " + sConfNick.Left(8) + "-"); + } else if (strcasecmp(sBadNick.c_str(), CString(sConfNick.Left(8) + "-").c_str()) == 0) { + PutServ("NICK " + sConfNick.Left(8) + "|"); + } else if (strcasecmp(sBadNick.c_str(), CString(sConfNick.Left(8) + "|").c_str()) == 0) { + PutServ("NICK " + sConfNick.Left(8) + "^"); } else { char cLetter = 0; if (sBadNick.empty()) { - Close(); - return; + Close(); + return; } - cLetter = CUtils::Right(sBadNick, 1)[0]; + cLetter = sBadNick.Right(1)[0]; if (cLetter == 'z') { Close(); return; } - CString sSend = "NICK " + CUtils::Left(sConfNick, 8) + cLetter++; + CString sSend = "NICK " + sConfNick.Left(8) + cLetter++; PutServ(sSend); } @@ -212,7 +212,7 @@ void CIRCSock::ReadLine(const CString& sData) { if (pChan) { CString sTopic = sLine.Token(4, true); - CUtils::LeftChomp(sTopic); + sTopic.LeftChomp(); pChan->SetTopic(sTopic); } @@ -239,7 +239,7 @@ void CIRCSock::ReadLine(const CString& sData) { CString sIdent = sLine.Token(4); CString sHost = sLine.Token(5); - CUtils::LeftChomp(sServer); + sServer.LeftChomp(); if (strcasecmp(sNick.c_str(), GetNick().c_str()) == 0) { m_Nick.SetIdent(sIdent); @@ -272,8 +272,8 @@ void CIRCSock::ReadLine(const CString& sData) { CChan* pChan = m_pUser->FindChan(sRest.Token(1)); if (pChan) { CString sNicks = sRest.Token(2, true); - if (CUtils::Left(sNicks, 1) == ":") { - CUtils::LeftChomp(sNicks); + if (sNicks.Left(1) == ":") { + sNicks.LeftChomp(); } pChan->AddNicks(sNicks); @@ -329,7 +329,7 @@ void CIRCSock::ReadLine(const CString& sData) { } } else { //if (CUtils::wildcmp(":*!*@* * *", sLine.c_str())) { CString sNickMask = sLine.Token(0); - CUtils::LeftChomp(sNickMask); + sNickMask.LeftChomp(); CString sNick = sNickMask.Token(0, false, '!'); CString sCmd = sLine.Token(1); @@ -339,8 +339,8 @@ void CIRCSock::ReadLine(const CString& sData) { CString sNewNick = sRest; bool bIsVisible = false; - if (CUtils::Left(sNewNick, 1) == ":") { - CUtils::LeftChomp(sNewNick); + if (sNewNick.Left(1) == ":") { + sNewNick.LeftChomp(); } vector vFoundChans; @@ -378,8 +378,8 @@ void CIRCSock::ReadLine(const CString& sData) { CString sMessage = sRest; bool bIsVisible = false; - if (CUtils::Left(sMessage, 1) == ":") { - CUtils::LeftChomp(sMessage); + if (sMessage.Left(1) == ":") { + sMessage.LeftChomp(); } // :nick!ident@host.com QUIT :message @@ -413,8 +413,8 @@ void CIRCSock::ReadLine(const CString& sData) { } } else if (strcasecmp(sCmd.c_str(), "JOIN") == 0) { CString sChan = sRest.Token(0); - if (CUtils::Left(sChan, 1) == ":") { - CUtils::LeftChomp(sChan); + if (sChan.Left(1) == ":") { + sChan.LeftChomp(); } if (strcasecmp(sNick.c_str(), GetNick().c_str()) == 0) { @@ -433,8 +433,8 @@ void CIRCSock::ReadLine(const CString& sData) { } } else if (strcasecmp(sCmd.c_str(), "PART") == 0) { CString sChan = sRest.Token(0); - if (CUtils::Left(sChan, 1) == ":") { - CUtils::LeftChomp(sChan); + if (sChan.Left(1) == ":") { + sChan.LeftChomp(); } CChan* pChan = m_pUser->FindChan(sChan); @@ -469,7 +469,7 @@ void CIRCSock::ReadLine(const CString& sData) { CString sChan = sRest.Token(0); CString sKickedNick = sRest.Token(1); CString sMsg = sRest.Token(2, true); - CUtils::LeftChomp(sMsg); + sMsg.LeftChomp(); CChan* pChan = m_pUser->FindChan(sChan); @@ -501,11 +501,11 @@ void CIRCSock::ReadLine(const CString& sData) { CString sTarget = sRest.Token(0); CString sMsg = sRest.Token(1, true); - CUtils::LeftChomp(sMsg); + sMsg.LeftChomp(); if (CUtils::wildcmp("\001*\001", sMsg.c_str())) { - CUtils::LeftChomp(sMsg); - CUtils::RightChomp(sMsg); + sMsg.LeftChomp(); + sMsg.RightChomp(); if (strcasecmp(sTarget.c_str(), GetNick().c_str()) == 0) { if (OnCTCPReply(sNickMask, sMsg)) { @@ -536,7 +536,7 @@ void CIRCSock::ReadLine(const CString& sData) { if (pChan) { CNick Nick(sNickMask); CString sTopic = sLine.Token(3, true); - CUtils::LeftChomp(sTopic); + sTopic.LeftChomp(); pChan->SetTopicOwner(Nick.GetNick()); pChan->SetTopicDate((unsigned long) time(NULL)); // @todo use local time pChan->SetTopic(sTopic); @@ -548,13 +548,13 @@ void CIRCSock::ReadLine(const CString& sData) { CString sTarget = sRest.Token(0); CString sMsg = sRest.Token(1, true); - if (CUtils::Left(sMsg, 1) == ":") { - CUtils::LeftChomp(sMsg); + if (sMsg.Left(1) == ":") { + sMsg.LeftChomp(); } if (CUtils::wildcmp("\001*\001", sMsg.c_str())) { - CUtils::LeftChomp(sMsg); - CUtils::RightChomp(sMsg); + sMsg.LeftChomp(); + sMsg.RightChomp(); if (strcasecmp(sTarget.c_str(), GetNick().c_str()) == 0) { if (OnPrivCTCP(sNickMask, sMsg)) { diff --git a/User.cpp b/User.cpp index 630cb967..05958bdb 100644 --- a/User.cpp +++ b/User.cpp @@ -199,9 +199,9 @@ bool CUser::AddServer(const CString& sName) { CString sHost = sLine.Token(0); CString sPort = sLine.Token(1); - if (CUtils::Left(sPort, 1) == "+") { + if (sPort.Left(1) == "+") { bSSL = true; - CUtils::LeftChomp(sPort); + sPort.LeftChomp(); } unsigned short uPort = strtoul(sPort.c_str(), NULL, 10); diff --git a/UserSock.cpp b/UserSock.cpp index d66a13f3..80648529 100644 --- a/UserSock.cpp +++ b/UserSock.cpp @@ -10,8 +10,8 @@ void CUserSock::ReadLine(const CString& sData) { CString sLine = sData; - while ((CUtils::Right(sLine, 1) == "\r") || (CUtils::Right(sLine, 1) == "\n")) { - CUtils::RightChomp(sLine); + while ((sLine.Right(1) == "\r") || (sLine.Right(1) == "\n")) { + sLine.RightChomp(); } DEBUG_ONLY(cout << GetSockName() << " <- [" << sLine << "]" << endl); @@ -68,8 +68,8 @@ void CUserSock::ReadLine(const CString& sData) { return; // Don't forward this msg. ZNC has already registered us. } else if (strcasecmp(sCommand.c_str(), "NICK") == 0) { CString sNick = sLine.Token(1); - if (CUtils::Left(sNick, 1) == ":") { - CUtils::LeftChomp(sNick); + if (sNick.Left(1) == ":") { + sNick.LeftChomp(); } if (!m_bAuthed) { @@ -99,8 +99,8 @@ void CUserSock::ReadLine(const CString& sData) { return; // Don't forward this msg. ZNC has already registered us. } else if (strcasecmp(sCommand.c_str(), "JOIN") == 0) { CString sChan = sLine.Token(1); - if (CUtils::Left(sChan, 1) == ":") { - CUtils::LeftChomp(sChan); + if (sChan.Left(1) == ":") { + sChan.LeftChomp(); } if (m_pUser) { @@ -122,8 +122,8 @@ void CUserSock::ReadLine(const CString& sData) { CString sTarget = sLine.Token(1); CString sMsg = sLine.Token(2, true); - if (CUtils::Left(sMsg, 1) == ":") { - CUtils::LeftChomp(sMsg); + if (sMsg.Left(1) == ":") { + sMsg.LeftChomp(); } if ((!m_pUser) || (strcasecmp(sTarget.c_str(), CString(m_pUser->GetStatusPrefix() + "status").c_str())) == 0) { @@ -134,7 +134,7 @@ void CUserSock::ReadLine(const CString& sData) { #ifdef _MODULES if (m_pUser) { CString sModule = sTarget; - CUtils::LeftChomp(sModule, m_pUser->GetStatusPrefix().length()); + sModule.LeftChomp(m_pUser->GetStatusPrefix().length()); CModule* pModule = m_pUser->GetModules().FindModule(sModule); if (pModule) { @@ -160,8 +160,8 @@ void CUserSock::ReadLine(const CString& sData) { #ifdef _MODULES if (CUtils::wildcmp("\001*\001", sMsg.c_str())) { CString sCTCP = sMsg; - CUtils::LeftChomp(sCTCP); - CUtils::RightChomp(sCTCP); + sCTCP.LeftChomp(); + sCTCP.RightChomp(); if ((m_pUser) && (m_pUser->GetModules().OnUserCTCPReply(sTarget, sCTCP))) { return; @@ -181,14 +181,14 @@ void CUserSock::ReadLine(const CString& sData) { CString sTarget = sLine.Token(1); CString sMsg = sLine.Token(2, true); - if (CUtils::Left(sMsg, 1) == ":") { - CUtils::LeftChomp(sMsg); + if (sMsg.Left(1) == ":") { + sMsg.LeftChomp(); } if (CUtils::wildcmp("\001*\001", sMsg.c_str())) { CString sCTCP = sMsg; - CUtils::LeftChomp(sCTCP); - CUtils::RightChomp(sCTCP); + sCTCP.LeftChomp(); + sCTCP.RightChomp(); if (strncasecmp(sCTCP.c_str(), "DCC ", 4) == 0) { CString sType = sCTCP.Token(1); @@ -288,7 +288,7 @@ void CUserSock::ReadLine(const CString& sData) { if (strncasecmp(sTarget.c_str(), m_pUser->GetStatusPrefix().c_str(), m_pUser->GetStatusPrefix().length()) == 0) { #ifdef _MODULES CString sModule = sTarget; - CUtils::LeftChomp(sModule, m_pUser->GetStatusPrefix().length()); + sModule.LeftChomp(m_pUser->GetStatusPrefix().length()); CModule* pModule = m_pUser->GetModules().FindModule(sModule); if (pModule) { @@ -324,7 +324,7 @@ void CUserSock::ReadLine(const CString& sData) { #ifdef _MODULES if (m_pUser) { CString sModule = sTarget; - CUtils::LeftChomp(sModule, m_pUser->GetStatusPrefix().length()); + sModule.LeftChomp(m_pUser->GetStatusPrefix().length()); CModule* pModule = m_pUser->GetModules().FindModule(sModule); if (pModule) { diff --git a/Utils.cpp b/Utils.cpp index 8254206e..c22cdebb 100644 --- a/Utils.cpp +++ b/Utils.cpp @@ -63,7 +63,7 @@ void CUtils::GenerateCert(FILE *pOut, bool bEncPrivKey) { pHostName = "unknown.com"; } - string sEmailAddr = pLogName; + CString sEmailAddr = pLogName; sEmailAddr += "@"; sEmailAddr += pHostName; @@ -88,7 +88,7 @@ void CUtils::GenerateCert(FILE *pOut, bool bEncPrivKey) { }; #endif /* HAVE_LIBSSL */ -string CUtils::GetIP(unsigned long addr) { +CString CUtils::GetIP(unsigned long addr) { char szBuf[16]; memset((char*) szBuf, 0, 16); @@ -104,7 +104,7 @@ string CUtils::GetIP(unsigned long addr) { return szBuf; } -unsigned long CUtils::GetLongIP(const string& sIP) { +unsigned long CUtils::GetLongIP(const CString& sIP) { register int i; char *addr = (char *) malloc(sIP.length() +1); char ip[4][4], n; @@ -129,8 +129,8 @@ CString CUtils::ChangeDir(const CString& sPath, const CString& sAdd, const CStri CString sAddDir = sAdd; - if (CUtils::Left(sAddDir, 2) == "~/") { - CUtils::LeftChomp(sAddDir); + if (sAddDir.Left(2) == "~/") { + sAddDir.LeftChomp(); sAddDir = sHomeDir + sAddDir; } @@ -138,8 +138,8 @@ CString CUtils::ChangeDir(const CString& sPath, const CString& sAdd, const CStri sAddDir += "/"; CString sCurDir; - if (CUtils::Right(sRet, 1) == "/") { - CUtils::RightChomp(sRet); + if (sRet.Right(1) == "/") { + sRet.RightChomp(); } for (unsigned int a = 0; a < sAddDir.size(); a++) { @@ -162,11 +162,11 @@ CString CUtils::ChangeDir(const CString& sPath, const CString& sAdd, const CStri return (sRet.empty()) ? "/" : sRet; } -int CUtils::MakeDir(const string& sPath, mode_t iMode) { - string sDir = sPath; - string::size_type iFind = sDir.find("/"); +int CUtils::MakeDir(const CString& sPath, mode_t iMode) { + CString sDir = sPath; + CString::size_type iFind = sDir.find("/"); - if (iFind == string::npos) { + if (iFind == CString::npos) { return mkdir(sDir.c_str(), iMode); } iFind++; @@ -179,8 +179,8 @@ int CUtils::MakeDir(const string& sPath, mode_t iMode) { return mkdir(sDir.c_str(), iMode); } - string sWorkDir = sDir.substr(0, iFind); // include the trailing slash - string sNewDir = sDir.erase(0, iFind); + CString sWorkDir = sDir.substr(0, iFind); // include the trailing slash + CString sNewDir = sDir.erase(0, iFind); struct stat st; @@ -220,7 +220,7 @@ int CUtils::MakeDir(const string& sPath, mode_t iMode) { return -1; } -string CUtils::GetHashPass() { +CString CUtils::GetHashPass() { while (true) { char* pass = CUtils::GetPass("Enter Password"); char* pass1 = (char*) malloc(strlen(pass) +1); @@ -234,7 +234,7 @@ string CUtils::GetHashPass() { } else if (!iLen) { CUtils::PrintError("You can not use an empty password"); } else { - string sRet((const char*) CMD5(pass1, iLen)); + CString sRet((const char*) CMD5(pass1, iLen)); memset((char*) pass1, 0, iLen); // null out our pass so it doesn't sit in memory memset((char*) pass2, 0, strlen(pass2)); // null out our pass so it doesn't sit in memory free(pass1); @@ -250,17 +250,17 @@ string CUtils::GetHashPass() { return ""; } -char* CUtils::GetPass(const string& sPrompt) { +char* CUtils::GetPass(const CString& sPrompt) { PrintPrompt(sPrompt); return getpass(""); } -bool CUtils::GetBoolInput(const string& sPrompt, bool bDefault) { +bool CUtils::GetBoolInput(const CString& sPrompt, bool bDefault) { return CUtils::GetBoolInput(sPrompt, &bDefault); } -bool CUtils::GetBoolInput(const string& sPrompt, bool *pbDefault) { - string sRet, sDefault; +bool CUtils::GetBoolInput(const CString& sPrompt, bool *pbDefault) { + CString sRet, sDefault; if (pbDefault) { sDefault = (*pbDefault) ? "yes" : "no"; @@ -277,13 +277,13 @@ bool CUtils::GetBoolInput(const string& sPrompt, bool *pbDefault) { return GetBoolInput(sPrompt, pbDefault); } -bool CUtils::GetNumInput(const string& sPrompt, unsigned int& uRet, unsigned int uMin, unsigned int uMax, unsigned int uDefault) { +bool CUtils::GetNumInput(const CString& sPrompt, unsigned int& uRet, unsigned int uMin, unsigned int uMax, unsigned int uDefault) { if (uMin > uMax) { return false; } - string sDefault = (uDefault != (unsigned int) ~0) ? CUtils::ToString(uDefault) : ""; - string sNum, sHint; + CString sDefault = (uDefault != (unsigned int) ~0) ? CUtils::ToString(uDefault) : ""; + CString sNum, sHint; if (uMax != (unsigned int) ~0) { sHint = CUtils::ToString(uMin) + " to " + CUtils::ToString(uMax); @@ -309,8 +309,8 @@ bool CUtils::GetNumInput(const string& sPrompt, unsigned int& uRet, unsigned int return true; } -bool CUtils::GetInput(const string& sPrompt, string& sRet, const string& sDefault, const string& sHint) { - string sExtra; +bool CUtils::GetInput(const CString& sPrompt, CString& sRet, const CString& sDefault, const CString& sHint) { + CString sExtra; sExtra += (!sHint.empty()) ? (" (" + sHint + ")") : ""; sExtra += (!sDefault.empty()) ? (" [" + sDefault + "]") : ""; @@ -320,8 +320,8 @@ bool CUtils::GetInput(const string& sPrompt, string& sRet, const string& sDefaul fgets(szBuf, 1024, stdin); sRet = szBuf; - if (CUtils::Right(sRet, 1) == "\n") { - CUtils::RightChomp(sRet); + if (sRet.Right(1) == "\n") { + sRet.RightChomp(); } if (sRet.empty()) { @@ -331,15 +331,15 @@ bool CUtils::GetInput(const string& sPrompt, string& sRet, const string& sDefaul return !sRet.empty(); } -void CUtils::PrintError(const string& sMessage) { +void CUtils::PrintError(const CString& sMessage) { fprintf(stdout, "\033[1m\033[34m[\033[31m ** \033[34m]\033[39m\033[22m %s\n", sMessage.c_str()); } -void CUtils::PrintPrompt(const string& sMessage) { +void CUtils::PrintPrompt(const CString& sMessage) { fprintf(stdout, "\033[1m\033[34m[\033[33m ?? \033[34m]\033[39m\033[22m %s: ", sMessage.c_str()); } -void CUtils::PrintMessage(const string& sMessage, bool bStrong) { +void CUtils::PrintMessage(const CString& sMessage, bool bStrong) { fprintf(stdout, "\033[1m\033[34m[\033[33m ** \033[34m]\033[39m\033[22m %s%s%s\n", ((bStrong) ? "\033[1m" : ""), sMessage.c_str(), @@ -347,12 +347,12 @@ void CUtils::PrintMessage(const string& sMessage, bool bStrong) { ); } -void CUtils::PrintAction(const string& sMessage) { +void CUtils::PrintAction(const CString& sMessage) { fprintf(stdout, "\033[1m\033[34m[\033[32m \033[34m]\033[39m\033[22m %s... ", sMessage.c_str()); fflush(stdout); } -void CUtils::PrintStatus(bool bSuccess, const string& sMessage) { +void CUtils::PrintStatus(bool bSuccess, const CString& sMessage) { if (!sMessage.empty()) { if (bSuccess) { fprintf(stdout, "%s", sMessage.c_str()); @@ -370,94 +370,68 @@ void CUtils::PrintStatus(bool bSuccess, const string& sMessage) { } } -string CUtils::ToString(short i) { stringstream s; s << i; return s.str(); } -string CUtils::ToString(unsigned short i) { stringstream s; s << i; return s.str(); } -string CUtils::ToString(int i) { stringstream s; s << i; return s.str(); } -string CUtils::ToString(unsigned int i) { stringstream s; s << i; return s.str(); } -string CUtils::ToString(long i) { stringstream s; s << i; return s.str(); } -string CUtils::ToString(unsigned long i) { stringstream s; s << i; return s.str(); } -string CUtils::ToString(unsigned long long i) { stringstream s; s << i; return s.str(); } -string CUtils::ToString(double i) { stringstream s; s << i; return s.str(); } -string CUtils::ToString(float i) { stringstream s; s << i; return s.str(); } +CString CUtils::ToString(short i) { stringstream s; s << i; return s.str(); } +CString CUtils::ToString(unsigned short i) { stringstream s; s << i; return s.str(); } +CString CUtils::ToString(int i) { stringstream s; s << i; return s.str(); } +CString CUtils::ToString(unsigned int i) { stringstream s; s << i; return s.str(); } +CString CUtils::ToString(long i) { stringstream s; s << i; return s.str(); } +CString CUtils::ToString(unsigned long i) { stringstream s; s << i; return s.str(); } +CString CUtils::ToString(unsigned long long i) { stringstream s; s << i; return s.str(); } +CString CUtils::ToString(double i) { stringstream s; s << i; return s.str(); } +CString CUtils::ToString(float i) { stringstream s; s << i; return s.str(); } -string CUtils::ToPercent(double d) { +CString CUtils::ToPercent(double d) { char szRet[32]; snprintf(szRet, 32, "%.02f%%", d); return szRet; } -string CUtils::ToKBytes(double d) { +CString CUtils::ToKBytes(double d) { char szRet[32]; snprintf(szRet, 32, "%.0f K/s", d); return szRet; } -string CUtils::Left(const string& s, unsigned int u) { - u = (u > s.length()) ? s.length() : u; - return s.substr(0, u); -} - -string CUtils::Right(const string& s, unsigned int u) { - u = (u > s.length()) ? s.length() : u; - return s.substr(s.length() - u, u); -} - -string& CUtils::Trim(string& s) { - while ((Right(s, 1) == " ") || (Right(s, 1) == "\t") || (Right(s, 1) == "\r") || (Right(s, 1) == "\n")) { - RightChomp(s); +CString& CUtils::Trim(CString& s) { + while ((s.Right(1) == " ") || (s.Right(1) == "\t") || (s.Right(1) == "\r") || (s.Right(1) == "\n")) { + s.RightChomp(); } - while ((Left(s, 1) == " ") || (Left(s, 1) == "\t") || (Left(s, 1) == "\r") || (Left(s, 1) == "\n")) { - LeftChomp(s); + while ((s.Left(1) == " ") || (s.Left(1) == "\t") || (s.Left(1) == "\r") || (s.Left(1) == "\n")) { + s.LeftChomp(); } return s; } -string& CUtils::LeftChomp(string& s, unsigned int uLen) { - while ((uLen--) && (s.length())) { - s.erase(0, 1); - } - - return s; -} - -string& CUtils::RightChomp(string& s, unsigned int uLen) { - while ((uLen--) && (s.length())) { - s.erase(s.length() -1); - } - - return s; -} - -bool CUtils::wildcmp(const string& sWild, const string& sString) { +bool CUtils::wildcmp(const CString& sWild, const CString& sString) { // Written by Jack Handy - jakkhandy@hotmail.com - const char *wild = sWild.c_str(), *string = sString.c_str(); + const char *wild = sWild.c_str(), *CString = sString.c_str(); const char *cp = NULL, *mp = NULL; - while ((*string) && (*wild != '*')) { - if ((*wild != *string) && (*wild != '?')) { + while ((*CString) && (*wild != '*')) { + if ((*wild != *CString) && (*wild != '?')) { return false; } wild++; - string++; + CString++; } - while (*string) { + while (*CString) { if (*wild == '*') { if (!*++wild) { return true; } mp = wild; - cp = string+1; - } else if ((*wild == *string) || (*wild == '?')) { + cp = CString+1; + } else if ((*wild == *CString) || (*wild == '?')) { wild++; - string++; + CString++; } else { wild = mp; - string = cp++; + CString = cp++; } } @@ -477,7 +451,7 @@ CTable::~CTable() { clear(); } -bool CTable::AddColumn(const string& sName) { +bool CTable::AddColumn(const CString& sName) { for (unsigned int a = 0; a < m_vsHeaders.size(); a++) { if (strcasecmp(m_vsHeaders[a].c_str(), sName.c_str()) == 0) { return false; @@ -489,11 +463,11 @@ bool CTable::AddColumn(const string& sName) { } unsigned int CTable::AddRow() { - push_back(new map); + push_back(new map); return size() -1; } -bool CTable::SetCell(const string& sColumn, const string& sValue, unsigned int uRowIdx) { +bool CTable::SetCell(const CString& sColumn, const CString& sValue, unsigned int uRowIdx) { if (uRowIdx == (unsigned int) ~0) { if (!size()) { return false; @@ -506,7 +480,7 @@ bool CTable::SetCell(const string& sColumn, const string& sValue, unsigned int u return true; } -bool CTable::GetLine(unsigned int uIdx, string& sLine) { +bool CTable::GetLine(unsigned int uIdx, CString& sLine) { stringstream ssRet; if (!size()) { @@ -542,7 +516,7 @@ bool CTable::GetLine(unsigned int uIdx, string& sLine) { uIdx -= 3; if (uIdx < size()) { - map* pRow = (*this)[uIdx]; + map* pRow = (*this)[uIdx]; ssRet.fill(' '); ssRet << "| "; @@ -569,7 +543,7 @@ bool CTable::Output(std::ostream oOut) { oOut << endl << ssSep.str() << endl; for (unsigned int b = 0; b < size(); b++) { - map* pRow = (*this)[b]; + map* pRow = (*this)[b]; oOut << " | "; @@ -592,16 +566,16 @@ unsigned int CTable::GetColumnWidth(unsigned int uIdx) { return 0; } - const string& sColName = m_vsHeaders[uIdx]; + const CString& sColName = m_vsHeaders[uIdx]; unsigned int uRet = sColName.size(); - map::iterator it = m_msuWidths.find(sColName); + map::iterator it = m_msuWidths.find(sColName); if (it != m_msuWidths.end()) { return it->second; } for (unsigned int a = 0; a < size(); a++) { - map* pRow = (*this)[a]; + map* pRow = (*this)[a]; uRet = uRet >? (*pRow)[m_vsHeaders[uIdx]].size(); } @@ -610,7 +584,7 @@ unsigned int CTable::GetColumnWidth(unsigned int uIdx) { #ifdef HAVE_LIBSSL -CBlowfish::CBlowfish(const string & sPassword, int iEncrypt, const string & sIvec) { +CBlowfish::CBlowfish(const CString & sPassword, int iEncrypt, const CString & sIvec) { m_iEncrypt = iEncrypt; m_ivec = (unsigned char *)calloc(sizeof(unsigned char), 8); m_num = 0; @@ -633,9 +607,9 @@ unsigned char *CBlowfish::MD5(const unsigned char *input, u_int ilen) { return output; } -//! returns an md5 of the string (not hex encoded) -string CBlowfish::MD5(const string & sInput, bool bHexEncode) { - string sRet; +//! returns an md5 of the CString (not hex encoded) +CString CBlowfish::MD5(const CString & sInput, bool bHexEncode) { + CString sRet; unsigned char *data = MD5((const unsigned char *)sInput.data(), sInput.length()); if (!bHexEncode) { @@ -663,9 +637,9 @@ unsigned char * CBlowfish::Crypt(unsigned char *input, u_int ibytes) { return buff; } -string CBlowfish::Crypt(const string & sData) { +CString CBlowfish::Crypt(const CString & sData) { unsigned char *buff = Crypt((unsigned char *)sData.data(), sData.length()); - string sOutput; + CString sOutput; sOutput.append((const char *)buff, sData.length()); free(buff); return sOutput; diff --git a/Utils.h b/Utils.h index 82b8c31d..f1e8a4a1 100644 --- a/Utils.h +++ b/Utils.h @@ -8,10 +8,8 @@ #include #include "String.h" -#include #include #include -using std::string; using std::vector; using std::map; @@ -28,40 +26,36 @@ public: CUtils(); virtual ~CUtils(); - static string GetIP(unsigned long addr); - static unsigned long GetLongIP(const string& sIP); + static CString GetIP(unsigned long addr); + static unsigned long GetLongIP(const CString& sIP); static CString ChangeDir(const CString& sPath, const CString& sAdd, const CString& sHomeDir); - static int MakeDir(const string& sPath, mode_t iMode = 0700); - static void PrintError(const string& sMessage); - static void PrintMessage(const string& sMessage, bool bStrong = false); - static void PrintPrompt(const string& sMessage); - static void PrintAction(const string& sMessage); - static void PrintStatus(bool bSuccess, const string& sMessage = ""); - static string GetHashPass(); - static char* GetPass(const string& sPrompt); - static bool GetInput(const string& sPrompt, string& sRet, const string& sDefault = "", const string& sHint = ""); - static bool GetBoolInput(const string& sPrompt, bool bDefault); - static bool GetBoolInput(const string& sPrompt, bool *pbDefault = NULL); - static bool GetNumInput(const string& sPrompt, unsigned int& uRet, unsigned int uMin = 0, unsigned int uMax = ~0, unsigned int uDefault = ~0); + static int MakeDir(const CString& sPath, mode_t iMode = 0700); + static void PrintError(const CString& sMessage); + static void PrintMessage(const CString& sMessage, bool bStrong = false); + static void PrintPrompt(const CString& sMessage); + static void PrintAction(const CString& sMessage); + static void PrintStatus(bool bSuccess, const CString& sMessage = ""); + static CString GetHashPass(); + static char* GetPass(const CString& sPrompt); + static bool GetInput(const CString& sPrompt, CString& sRet, const CString& sDefault = "", const CString& sHint = ""); + static bool GetBoolInput(const CString& sPrompt, bool bDefault); + static bool GetBoolInput(const CString& sPrompt, bool *pbDefault = NULL); + static bool GetNumInput(const CString& sPrompt, unsigned int& uRet, unsigned int uMin = 0, unsigned int uMax = ~0, unsigned int uDefault = ~0); - static string ToString(short i); - static string ToString(unsigned short i); - static string ToString(int i); - static string ToString(unsigned int i); - static string ToString(long i); - static string ToString(unsigned long i); - static string ToString(unsigned long long i); - static string ToString(double i); - static string ToString(float i); - static string ToPercent(double d); - static string ToKBytes(double d); + static CString ToString(short i); + static CString ToString(unsigned short i); + static CString ToString(int i); + static CString ToString(unsigned int i); + static CString ToString(long i); + static CString ToString(unsigned long i); + static CString ToString(unsigned long long i); + static CString ToString(double i); + static CString ToString(float i); + static CString ToPercent(double d); + static CString ToKBytes(double d); - static string Left(const string& s, unsigned int u); - static string Right(const string& s, unsigned int u); - static string& Trim(string& s); - static string& LeftChomp(string& s, unsigned int uLen = 1); - static string& RightChomp(string& s, unsigned int uLen = 1); - static bool wildcmp(const string& sWild, const string& sString); + static CString& Trim(CString& s); + static bool wildcmp(const CString& sWild, const CString& sString); static unsigned long long GetMillTime() { struct timeval tv; @@ -87,7 +81,7 @@ public: m_pid = 0; } - CLockFile(const string& sFile) { + CLockFile(const CString& sFile) { Open(sFile); } @@ -103,7 +97,7 @@ public: } } - void Open(const string& sFile) { + void Open(const CString& sFile) { m_fd = open(sFile.c_str(), O_RDONLY); m_bCreated = false; @@ -118,7 +112,7 @@ public: } //! timeout in milliseconds - bool TryExLock(const string& sLockFile, unsigned long long iTimeout = 0) { + bool TryExLock(const CString& sLockFile, unsigned long long iTimeout = 0) { Open(sLockFile); return TryExLock(iTimeout); } @@ -187,7 +181,7 @@ private: int m_fd; int m_pid; bool m_bCreated; - string m_sFileName; + CString m_sFileName; }; class CException { @@ -209,21 +203,21 @@ protected: }; -class CTable : public vector* > { +class CTable : public vector* > { public: CTable(); virtual ~CTable(); - bool AddColumn(const string& sName); + bool AddColumn(const CString& sName); unsigned int AddRow(); - bool SetCell(const string& sColumn, const string& sValue, unsigned int uRowIdx = ~0); - bool GetLine(unsigned int uIdx, string& sLine); + bool SetCell(const CString& sColumn, const CString& sValue, unsigned int uRowIdx = ~0); + bool GetLine(unsigned int uIdx, CString& sLine); unsigned int GetColumnWidth(unsigned int uIdx); private: protected: - vector m_vsHeaders; - map m_msuWidths; // Used to cache the width of a column + vector m_vsHeaders; + map m_msuWidths; // Used to cache the width of a column }; @@ -238,21 +232,21 @@ public: * @iEncrypt encrypt method (BF_DECRYPT or BF_ENCRYPT) * @sIvec what to set the ivector to start with, default sets it all 0's */ - CBlowfish(const string & sPassword, int iEncrypt, const string & sIvec = ""); + CBlowfish(const CString & sPassword, int iEncrypt, const CString & sIvec = ""); ~CBlowfish(); //! output must be freed static unsigned char *MD5(const unsigned char *input, u_int ilen); - //! returns an md5 of the string (not hex encoded) - static string MD5(const string & sInput, bool bHexEncode = false); + //! returns an md5 of the CString (not hex encoded) + static CString MD5(const CString & sInput, bool bHexEncode = false); //! output must be the same size as input void Crypt(unsigned char *input, unsigned char *output, u_int ibytes); //! must free result unsigned char * Crypt(unsigned char *input, u_int ibytes); - string Crypt(const string & sData); + CString Crypt(const CString & sData); private: unsigned char *m_ivec; @@ -263,7 +257,7 @@ private: #endif /* HAVE_LIBSSL */ #define RF_BUFF 4096 -inline bool ReadFile(const string & sFilename, string & sLine) { +inline bool ReadFile(const CString & sFilename, CString & sLine) { char inbuff[RF_BUFF]; int bytes; // clear ourselves out @@ -287,7 +281,7 @@ inline bool ReadFile(const string & sFilename, string & sLine) { return true; } -inline bool WriteFile(const string & sFilename, const string & sData) { +inline bool WriteFile(const CString & sFilename, const CString & sData) { FILE *f = fopen(sFilename.c_str(), "w"); if (!f) { return false; @@ -304,7 +298,7 @@ inline bool WriteFile(const string & sFilename, const string & sData) { return true; } -inline bool ReadLine(const string & sData, string & sLine, u_int & iPos) { +inline bool ReadLine(const CString & sData, CString & sLine, u_int & iPos) { sLine.clear(); if (iPos >= sData.length()) { @@ -313,9 +307,9 @@ inline bool ReadLine(const string & sData, string & sLine, u_int & iPos) { u_int iFind = sData.find("\n", iPos); - if (iFind == string::npos) { + if (iFind == CString::npos) { sLine = sData.substr(iPos, (sData.length() - iPos)); - iPos = string::npos; + iPos = CString::npos; return true; } @@ -325,8 +319,8 @@ inline bool ReadLine(const string & sData, string & sLine, u_int & iPos) { return true; } -inline string Lower(const string & sLine) { - string sRet; +inline CString Lower(const CString & sLine) { + CString sRet; for(u_int a = 0; a < sLine.length(); a++) { sRet += tolower(sLine[a]); } @@ -334,8 +328,8 @@ inline string Lower(const string & sLine) { return sRet; } -inline string Upper(const string & sLine) { - string sRet; +inline CString Upper(const CString & sLine) { + CString sRet; for(u_int a = 0; a < sLine.length(); a++) { sRet += toupper(sLine[a]); } diff --git a/znc.cpp b/znc.cpp index cc03dc9f..ddd4a1a9 100644 --- a/znc.cpp +++ b/znc.cpp @@ -237,9 +237,9 @@ CString CZNC::GetConfigPath(const CString& sConfigFile) { if (sConfigFile.empty()) { sRetPath = GetZNCPath() + "/znc.conf"; } else { - if (CUtils::Left(sConfigFile, 2) == "./" || CUtils::Left(sConfigFile, 3) == "../") { + if (sConfigFile.Left(2) == "./" || sConfigFile.Left(3) == "../") { sRetPath = GetCurPath() + "/" + sConfigFile; - } else if (CUtils::Left(sConfigFile, 1) != "/") { + } else if (sConfigFile.Left(1) != "/") { sRetPath = GetZNCPath() + "/" + sConfigFile; } else { sRetPath = sConfigFile; @@ -322,8 +322,8 @@ bool CZNC::WriteNewConfig(const CString& sConfig) { const CModInfo& Info = *it; CString sName = Info.GetName(); - if (strcasecmp(CUtils::Right(sName, 3).c_str(), ".so") == 0) { - CUtils::RightChomp(sName, 3); + if (strcasecmp(sName.Right(3).c_str(), ".so") == 0) { + sName.RightChomp(3); } if (CUtils::GetBoolInput("Load " + CString((Info.IsSystem()) ? "system" : "local") + " module <\033[1m" + sName + "\033[22m>?", false)) { @@ -448,16 +448,16 @@ bool CZNC::ParseConfig(const CString& sConfig) { CChan* pChan = NULL; // Used to keep track of which chan block we are in while (File.ReadLine(sLine)) { - while ((CUtils::Right(sLine, 1) == "\r") || (CUtils::Right(sLine, 1) == "\n")) { + while ((sLine.Right(1) == "\r") || (sLine.Right(1) == "\n")) { CUtils::Trim(sLine); } - if ((sLine.empty()) || (sLine[0] == '#') || (CUtils::Left(sLine, 2) == "//")) { + if ((sLine.empty()) || (sLine[0] == '#') || (sLine.Left(2) == "//")) { continue; } - if (CUtils::Left(sLine, 2) == "/*") { - if (CUtils::Right(sLine, 2) != "*/") { + if (sLine.Left(2) == "/*") { + if (sLine.Right(2) != "*/") { bCommented = true; } @@ -465,17 +465,17 @@ bool CZNC::ParseConfig(const CString& sConfig) { } if (bCommented) { - if (CUtils::Right(sLine, 2) == "*/") { + if (sLine.Right(2) == "*/") { bCommented = false; } continue; } - if ((CUtils::Left(sLine, 1) == "<") && (CUtils::Right(sLine, 1) == ">")) { - CUtils::LeftChomp(sLine); - CUtils::RightChomp(sLine); - CUtils::Trim(sLine); + if ((sLine.Left(1) == "<") && (sLine.Right(1) == ">")) { + sLine.LeftChomp(); + sLine.RightChomp(); + sLine.Trim(); CString sTag = sLine.substr(0, sLine.find_first_of(" \t\r\n")); CString sValue = (sTag.size() < sLine.size()) ? sLine.substr(sTag.size() +1) : ""; @@ -483,7 +483,7 @@ bool CZNC::ParseConfig(const CString& sConfig) { CUtils::Trim(sTag); CUtils::Trim(sValue); - if (CUtils::Left(sLine, 1) == "/") { + if (sLine.Left(1) == "/") { CString sTag = sLine.substr(1); if (pUser) { @@ -599,9 +599,9 @@ bool CZNC::ParseConfig(const CString& sConfig) { pUser->SetAltNick(sValue); continue; } else if (strcasecmp(sName.c_str(), "Pass") == 0) { - if (CUtils::Right(sValue, 1) == "-") { - CUtils::RightChomp(sValue); - CUtils::Trim(sValue); + if (sValue.Right(1) == "-") { + sValue.RightChomp(); + sValue.Trim(); pUser->SetPass(sValue, true); } else { pUser->SetPass(sValue, false); @@ -672,8 +672,8 @@ bool CZNC::ParseConfig(const CString& sConfig) { if (strcasecmp(sName.c_str(), "ListenPort") == 0) { m_bSSL = false; CString sPort = sValue; - if (CUtils::Left(sPort, 1) == "+") { - CUtils::LeftChomp(sPort); + if (sPort.Left(1) == "+") { + sPort.LeftChomp(); m_bSSL = true; }