is there seg fault
Rule *parse_file(FILE *fp) {
    Rule *head;
    char *token;
    char line[MAXLINE] = "";
    Rule *curr_rule;
    char *target;

    while (fgets(line, MAXLINE, fp) != NULL) {
        token = strtok(line, " ");

        if (token[0] != '\t' && token[0] != '#' && token[0] != '\n') {
            target = token;
            token = strtok(NULL, " ");
            while (token != NULL) {
                if (token[0] == ':') {
                    token = strtok(NULL, " ");
                } else {
                    fprintf(stdout, "hello");
                }
                token = strtok(NULL, " ");
            }
        }

        Rule *new_rule = malloc(sizeof(Rule));
        new_rule->target = strdup(target);
        new_rule->actions = NULL;
        new_rule->dependencies = NULL;
        new_rule->next_rule = NULL;

        if (head == NULL) {
            head = new_rule;
            printf("%s", new_rule->target);
        } else {
            curr_rule = head;
            int i = 0;
            while (curr_rule != NULL) {
                printf("%s = %s, %d", "in the while loop", curr_rule->target, i);
                i = i + 1;
                curr_rule = curr_rule->next_rule;
            }
            curr_rule->next_rule = new_rule;
            printf("%s + %s == %s", "this is executed", curr_rule->next_rule->target, new_rule->target);
        }
    }

    return head;
}
