Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 4
0
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;
}