this code should be reading dependency information into structs and linking them to rules 
Rule *parse_file(FILE *fp) {
    // Implement this function and remove the stubbed return statement below.
    
    char line[MAXLINE];
    char buffer[MAXLINE]; // buffer

    Rule *first_rule;
    Rule *curr;

    while (fgets(line, MAXLINE, fp)){
        if (is_comment_or_empty(line)){
            continue; // skip empty or comment lines 
        }
        if (line[0] == '\t' || line[0] == '\r' || line[0] == '\n'){
            // actions
            continue;
            //hello
        } else{

            // handle dependencies
            
            char *dependency = strtok(strtok(NULL, ":"), " ");
            while (dependency != NULL){
                make_dependency(curr, dependency, first_rule);
                strncpy(dependency, strtok(NULL, " "), MAXLINE);
            }
            
        }
    }    

    return first_rule;
}

Dependency *make_dependency(Rule *parent_rule, char *filename, Rule *first_rule){
    Rule *dep_rule = get_rule(filename, first_rule);
    if (dep_rule == NULL){
        dep_rule = make_new_rule(filename);
        get_tail(first_rule)->next_rule = dep_rule;
    }
    Dependency *curr_dep = malloc(sizeof(Dependency));
    curr_dep->rule = dep_rule;
    Dependency *tail_dep = parent_rule->dependencies;
    if (tail_dep == NULL){
        parent_rule->dependencies = curr_dep;
    } else {
        while (tail_dep->next_dep != NULL){
            tail_dep = tail_dep->next_dep;
        }
        tail_dep->next_dep = curr_dep;
    }
    return curr_dep;
}