void 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); }