USERINFO* UM_AddUser(STATUSINFO* pStatusList, USERINFO** ppUserList, const TCHAR* pszUID, const TCHAR* pszNick, WORD wStatus) { USERINFO * pTemp = *ppUserList, *pLast = NULL; if (!pStatusList || !ppUserList || !ppUserList) return NULL; while (pTemp && UM_CompareItem(pTemp, pszNick, wStatus) <= 0) { pLast = pTemp; pTemp = pTemp->next; } // if (!UM_FindUser(*ppUserList, pszUI, wStatus) { USERINFO *node = (USERINFO*) mir_alloc(sizeof(USERINFO)); ZeroMemory(node, sizeof(USERINFO)); replaceStr(&node->pszUID, pszUID); if (*ppUserList == NULL) { // list is empty *ppUserList = node; node->next = NULL; } else { if (pLast) { node->next = pTemp; pLast->next = node; } else { node->next = *ppUserList; *ppUserList = node; } } return node; } return NULL; }
USERINFO * UM_SortUser(USERINFO** ppUserList, char * pszUID) { USERINFO * pTemp = *ppUserList, *pLast = NULL; USERINFO * node = NULL; if(!pTemp || !pszUID) return NULL; while(pTemp && lstrcmpiA((char *)pTemp->pszUID, (char *)pszUID)) { pLast = pTemp; pTemp = pTemp->next; } if(pTemp) { node = pTemp; if(pLast) pLast->next = pTemp->next; else *ppUserList = pTemp->next; pTemp = *ppUserList; pLast = NULL; while(pTemp && UM_CompareItem(pTemp, node->pszNick, node->Status) <= 0) { pLast = pTemp; pTemp = pTemp->next; } // if (!UM_FindUser(*ppUserList, pszUI, wStatus) { if (*ppUserList == NULL) // list is empty { *ppUserList = node; node->next = NULL; } else { if(pLast) { node->next = pTemp; pLast->next = node; } else { node->next = *ppUserList; *ppUserList = node; } } return node; } } return NULL; }
USERINFO * UM_SortUser(USERINFO** ppUserList, const TCHAR* pszUID) { USERINFO * pTemp = *ppUserList, *pLast = NULL; USERINFO * node = NULL; if (!pTemp || !pszUID) return NULL; while(pTemp && lstrcmpi( pTemp->pszUID, pszUID)) { pLast = pTemp; pTemp = pTemp->next; } if ( pTemp ) { node = pTemp; if (pLast) pLast->next = pTemp->next; else *ppUserList = pTemp->next; pTemp = *ppUserList; pLast = NULL; while ( pTemp && UM_CompareItem(pTemp, node->pszNick, node->Status ) <= 0) { pLast = pTemp; pTemp = pTemp->next; } if (*ppUserList == NULL) { // list is empty *ppUserList = node; node->next = NULL; } else { if ( pLast ) { node->next = pTemp; pLast->next = node; } else { node->next = *ppUserList; *ppUserList = node; } } return node; } return NULL; }
USERINFO * UM_AddUser(STATUSINFO* pStatusList, USERINFO** ppUserList, char * pszUID, char * pszNick, WORD wStatus) { USERINFO * pTemp = *ppUserList, *pLast = NULL; if(!pStatusList || !ppUserList || !ppUserList) return NULL; while(pTemp && UM_CompareItem(pTemp, pszNick, wStatus) <= 0) { pLast = pTemp; pTemp = pTemp->next; } // if (!UM_FindUser(*ppUserList, pszUI, wStatus) { USERINFO *node = (USERINFO*) malloc(sizeof(USERINFO)); ZeroMemory(node, sizeof(USERINFO)); node->pszUID = (char *) malloc(lstrlenA(pszUID) + 1); lstrcpyA(node->pszUID, pszUID); if (*ppUserList == NULL) // list is empty { *ppUserList = node; node->next = NULL; } else { if(pLast) { node->next = pTemp; pLast->next = node; } else { node->next = *ppUserList; *ppUserList = node; } } return node; } return NULL; }