idName = AB_pstrtok_r(nil,", ",&marker);
idName = AB_pstrtok_r(0,", ",&marker);
nsresult DIR_GetAttributeIDsForColumns(DIR_Server *server, DIR_AttributeId ** ids, PRInt32 * numIds){	DIR_AttributeId * idArray = nsnull;	nsresult status = NS_OK; 	PRInt32 numAdded = 0;  /* number of ids we actually added to the array...*/	PRInt32 indx = 0;	PRInt32 numItems = 0; 	char * idName = nsnull;	char * marker = nsnull;	char * columnIDs = nsnull;	if (server && numIds && ids)	{		if (server->columnAttributes) 		{            columnIDs = nsCRT::strdup(server->columnAttributes);			numItems = DIR_GetNumAttributeIDsForColumns(server);		}		if (columnIDs && numItems)		{			marker = columnIDs;			idArray = (DIR_AttributeId *) PR_Malloc(sizeof(DIR_AttributeId) * numItems);			if (idArray)			{				for (indx = 0; indx < numItems; indx++)				{					idName = AB_pstrtok_r(nil,", ",&marker);					if (idName)					{						status = DIR_AttributeNameToId(server, idName, &idArray[numAdded]);						if (NS_SUCCEEDED(status))							numAdded++;					}					else						break;				}			}			else				status = NS_ERROR_OUT_OF_MEMORY;		}		PR_FREEIF(columnIDs); 	}	if (ids)		*ids = idArray;	if (numIds)		*numIds = numAdded;	return status;}