rendered paste bodyvoid ParseMessage(SOCKET sSock, LPSTR lpszMsg)
{
LPSTR lpszOriginal = new CHAR[ strlen(lpszMsg) + 1];
strcpy(lpszOriginal, lpszMsg);
IRCMSG iMsg;
if(*lpszMsg == ':'){ *lpszMsg = 0; lpszMsg++; }
LPSTR lpszExlca = strstr(lpszMsg, "!");
if(lpszExlca != NULL){
*lpszExlca = 0;
iMsg.lpszNick = new CHAR[ strlen(lpszMsg) + 1];
strcpy(iMsg.lpszNick, lpszMsg);
lpszMsg += strlen(lpszMsg) + 1;
}
LPSTR lpszUser = strstr(lpszMsg, "@");
if(lpszUser != NULL){
*lpszUser = 0;
iMsg.lpszUser = new CHAR[ strlen(lpszMsg) + 1];
strcpy(iMsg.lpszUser, lpszMsg);
lpszMsg += strlen(lpszMsg) + 1;
}
LPSTR lpszSpace = strstr(lpszMsg, " ");
if(lpszSpace != NULL){
*lpszSpace = 0;
iMsg.lpszHost = new CHAR[ strlen(lpszMsg) + 1];
strcpy(iMsg.lpszHost, lpszMsg);
lpszMsg += strlen(lpszMsg) + 1;
}
LPSTR lpszCmd = strstr(lpszMsg, " ");
if(lpszCmd != NULL){
*lpszCmd = 0;
iMsg.lpszCmd = new CHAR[ strlen(lpszMsg) + 1];
strcpy(iMsg.lpszCmd, lpszMsg);
lpszMsg += strlen(lpszMsg) + 1;
}else iMsg.lpszCmd = NULL;
int nCount = 0;
LPSTR lpszParam = NULL;
while((lpszParam = strstr(lpszMsg, " ")) && nCount < 16){
*lpszParam = 0;
iMsg.lpszParams[nCount] = lpszMsg;
lpszMsg += strlen(lpszMsg) + 1;
nCount++;
}
ProcessMessage(sSock, iMsg);
}