Beispiel #1
0
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);
}
Beispiel #2
0
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;
}
Beispiel #3
0
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;
}