int make_friends(const char *name1, const char *name2, User *head) {
    if (find_user(name1, head) == NULL || find_user(name2, head) == NULL) {
        return 4;
    } else if (strcmp(name1, name2) == 0) {
        return 3;
    } 

    User *user1 = find_user(name1, head);
    User *user1_friends[MAX_FRIENDS] = user1->friends;
    User *user2 = find_user(name2, head);
    User *user2_friends[MAX_FRIENDS] = user2->friends;
    for (int i = 0; i < MAX_FRIENDS; i++) {
        if (user1_friends[i] == user2) {
            return 1;
        } else if (user2_friends[i] == user1) {
            return 1;
        } 
    }

    if (user1_friends[MAX_FRIENDS - 1] != NULL || user2_friends[MAX_FRIENDS - 1] != NULL) {
        return 2;
    } else {
        int i = 0;
        while (user1_friends[i] != NULL) {
            i++;
        }
        user1_friends[i] = user2;

        int j = 0;
        while (user2_friends[j] != NULL) {
            j++;
        }
        user2_friends[j] = 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.