is there a segmentation fault
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);
    }
}
