int make_friends(const char *name1, const char *name2, User *head) {
    if(find_user(name1, (const User *) head) == NULL || find_user(name2, (const User *) head) == NULL){
        return 4;
    }
    if(strcmp(name1, name2) == 0){
        return 3;
    }
    User *user1 = find_user(name1, (const User *) head);
    User *user2 = find_user(name2, (const User *) head);
    for(int i = 0; i < sizeof(user1->friends); i++){
        if(strcmp(user1->friends[i]->name, name2) == 0){
            return 1;
        }
    }
    for(int i = 0; i < sizeof(user2->friends); i++){
        if(strcmp(user2->friends[i]->name, name1) == 0){
            return 1;
        }
    }
    if (sizeof(user1->friends) >= MAX_FRIENDS || sizeof(user2->friends) >= MAX_FRIENDS){
        return 2;
    }
    for(int i = 0; i < MAX_FRIENDS; i++){
        if(user1->friends[i] == NULL){
            user1->friends[i] = user2;
        }
    }
    for(int i = 0; i < MAX_FRIENDS; i++){
        if(user2->friends[i] == NULL){
            user2->friends[i] = user1;
        }
    }

    
    return 0;
}
/*
 * Make two users friends with each other.  This is symmetric - a pointer to
 * each user must be stored in the 'friends' array of the other.
 *
 * New friends must be added in the first empty spot in the 'friends' array.
 *
 * Return:
 *   - 0 on success.
 *   - 1 if the two users are already friends.
 *   - 2 if the users are not already friends, but at least one already has
 *     MAX_FRIENDS friends.
 *   - 3 if the same user is passed in twice.
 *   - 4 if at least one user does not exist.
 *
 * Do not modify either user if the result is a failure.
 * NOTE: If multiple errors apply, return the *largest* error code that applies.
 */