Why does strtok produce a seg fault?
Rule *parse_file(FILE *fp) {
    Rule *result;
    Rule *prev_rule;

    char line[MAXLINE];
    fgets(&(line[0]), MAXLINE, fp);

    Rule *head_rule = malloc(sizeof(Rule));
    result = head_rule;
    prev_rule = head_rule;

    char *token = strtok(&(line[0]), ":");
    if (head_rule != NULL && head_rule->target != NULL) {
        head_rule->target = malloc(strlen(token));
        strcpy(head_rule->target, token);
    }
    return result;
}