int make_friends(const char *name1, const char *name2, User *head) {
    // find the two users
    User *u1 = find_user(name1, head);
    User *u2 = find_user(name2, head);

    // make sure that neither of them is NULL aka they both do exist
    if(u1 == NULL || u2 == NULL){
        return 4;
    }

    // check that the same user has not been passed in twice
    if (strcmp(name1, name2) == 0){
        return 3;
    }

    //check that they are not already friends
    // iterate through each list of pointers to friends (aka other users)
    // not covering the case where they're already friends
    for (int i = 0; i < MAX_FRIENDS; i++) {
        if (u1->friends[i] != NULL) {
            if (strcmp(u2->friends[i]->name, name2) == 0) {
                    return 1;
                    }
            }
        }

    // last, check that neither has max friends
    // check that u1 doesnt
    int u1_friends = 0;
    int u2_friends = 0;
    while(u1->friends[u1_friends] != NULL){
        u1_friends += 1;
    }
    while(u2->friends[u2_friends] != NULL){
        u2_friends += 1;
    }
    if (u1_friends >= MAX_FRIENDS || u2_friends >= MAX_FRIENDS){
        return 2;
    }
    // go thorugh each array of pointers friends to find the first empty spot
    // based on the checks already done, we know that there is at least one empty spot
    // CERTAIN that i will find an empty spot before reaching the end of the list
    // thats why the while loop stopping conditions are what they are
    int spot1 = 0;
    int spot2 = 0;
    while(u1->friends[spot1] != NULL){
        spot1 ++;
    }
    while(u2->friends[spot2] != NULL){
        spot2 ++;
    }
    // once the first empty spot in both users' friends have been found
    // add u2 to the first empty spot in the friends array of u1
    // not working when a user already has at least one friend!!!!
    u1->friends[spot1] = u2;
    // vice versa
    u2->friends[spot2] = u1;
    return 0;
}