void __stdcall RemoveLinebreaks( CMString& Message ) { while ( Message.Find( _T("\r\n\r\n"), 0) != -1 ) ReplaceString( Message, _T("\r\n\r\n"), _T("\r\n")); if (Message.Find( _T("\r\n"), 0) == 0) Message.Delete(0,2); if ( (Message.GetLength() > 1) && (Message.Find(_T("\r\n"), Message.GetLength()-2) == 0) ) Message.Delete(Message.GetLength()-2, 2); }
CMString& __stdcall ReplaceString ( CMString& text, const TCHAR* replaceme, const TCHAR* newword) { if ( !text.IsEmpty() && replaceme != NULL) { int i = 0; while (( i = text.Find(replaceme, i)) != -1 ) { text.Delete(i,lstrlen(replaceme)); text.Insert(i, newword); i = i + lstrlen(newword); } } return text; }
static CMString FormatOutput (const CIrcMessage* pmsg) { CMString sMessage; if ( pmsg->m_bIncoming ) { // Is it an incoming message? if ( pmsg->sCommand == _T("WALLOPS") && pmsg->parameters.getCount() > 0 ) { TCHAR temp[200]; *temp = '\0'; mir_sntprintf(temp, SIZEOF(temp), TranslateT("WallOps from %s: "), pmsg->prefix.sNick.c_str()); sMessage = temp; for ( int i=0; i < (int)pmsg->parameters.getCount(); i++ ) { sMessage += pmsg->parameters[i]; if (i != pmsg->parameters.getCount()-1) sMessage += _T(" "); } goto THE_END; } if ( pmsg->sCommand == _T("INVITE") && pmsg->parameters.getCount() > 1 ) { TCHAR temp[256]; *temp = '\0'; mir_sntprintf(temp, SIZEOF(temp), TranslateT("%s invites you to %s"), pmsg->prefix.sNick.c_str(), pmsg->parameters[1].c_str()); sMessage = temp; for ( int i=2; i < (int)pmsg->parameters.getCount(); i++ ) { sMessage += _T(": ") + pmsg->parameters[i]; if ( i != pmsg->parameters.getCount()-1 ) sMessage += _T(" "); } goto THE_END; } int index = StrToInt( pmsg->sCommand.c_str()); if ( index == 301 && pmsg->parameters.getCount() > 0 ) { TCHAR temp[500]; *temp = '\0'; mir_sntprintf(temp, SIZEOF(temp), TranslateT("%s is away"), pmsg->parameters[1].c_str()); sMessage = temp; for ( int i=2; i < (int)pmsg->parameters.getCount(); i++ ) { sMessage += _T(": ") + pmsg->parameters[i]; if ( i != pmsg->parameters.getCount()-1 ) sMessage += _T(" "); } goto THE_END; } if (( index == 443 || index == 441 ) && pmsg->parameters.getCount() > 3 ) return pmsg->parameters[1] + _T(" ") + pmsg->parameters[3] + _T(": ") + pmsg->parameters[2]; if ( index == 303 ) { // ISON command sMessage = TranslateT("These are online: "); for ( int i=1; i < (int)pmsg->parameters.getCount(); i++ ) { sMessage += pmsg->parameters[i]; if (i != pmsg->parameters.getCount()-1) sMessage += _T(", "); } goto THE_END; } if (( index > 400 || index < 500) && pmsg->parameters.getCount() > 2 && pmsg->sCommand[0] == '4' ) //all error messages return pmsg->parameters[2] + _T(": ") + pmsg->parameters[1]; } else if ( pmsg->sCommand == _T("NOTICE") && pmsg->parameters.getCount() > 1 ) { TCHAR temp[500]; *temp = '\0'; int l = pmsg->parameters[1].GetLength(); if ( l > 3 && pmsg->parameters[1][0] == 1 && pmsg->parameters[1][ l-1 ] == 1 ) { // CTCP reply CMString tempstr = pmsg->parameters[1]; tempstr.Delete(0,1); tempstr.Delete(tempstr.GetLength()-1,1); CMString type = GetWord(tempstr.c_str(), 0); if ( lstrcmpi(type.c_str(), _T("ping")) == 0) mir_sntprintf(temp, SIZEOF(temp), TranslateT("CTCP %s reply sent to %s"), type.c_str(), pmsg->parameters[0].c_str()); else mir_sntprintf(temp, SIZEOF(temp), TranslateT("CTCP %s reply sent to %s: %s"), type.c_str(), pmsg->parameters[0].c_str(), GetWordAddress(tempstr.c_str(), 1)); sMessage = temp; } else { mir_sntprintf(temp, SIZEOF(temp), TranslateT("Notice to %s: "), pmsg->parameters[0].c_str()); sMessage = temp; for ( int i=1; i < (int)pmsg->parameters.getCount(); i++ ) { sMessage += pmsg->parameters[i]; if (i != pmsg->parameters.getCount()-1) sMessage += _T(" "); } } goto THE_END; } // Default Message handler. if ( pmsg->m_bIncoming ) { if ( pmsg->parameters.getCount() < 2 && pmsg->parameters.getCount() > 0 ) return pmsg->sCommand + _T(" : ") + pmsg->parameters[0]; if ( pmsg->parameters.getCount() > 1 ) for ( int i=1; i < (int)pmsg->parameters.getCount(); i++ ) sMessage += pmsg->parameters[i] + _T(" "); } else { if ( pmsg->prefix.sNick.GetLength()) sMessage = pmsg->prefix.sNick + _T(" "); sMessage += pmsg->sCommand + _T(" "); for ( int i=0; i < (int)pmsg->parameters.getCount(); i++ ) sMessage += pmsg->parameters[i] + _T(" "); } THE_END: return sMessage; }