Ok, I see what FirstItem refers to -- the head of the item linked list.
When I said the two functions were identical I meant the code within the functions, not the parameters. The first parameter to AddItemToClient() is just a single pointer because it is the node in the Client linked list that you want to add items to. You don't want a double pointer for this because, unlike the other function, this function will not modify it's address.
struct item* AddItemToClient(struct client *client_head, char item[])
{
struct item *temp = malloc(sizeof(struct item));
temp->next = NULL;
strcpy(temp->item_name,item);
if( client_head->FirstItem == NULL)
head->FirstItem = temp;
else
{
struct item *t = FindTail(client_head->FirstItem);
t->next = temp;
}
return temp;
}