static struct line * tree_entry(struct view *view, enum line_type type, const char *path, const char *mode, const char *id, unsigned long size) { bool custom = type == LINE_HEADER || tree_path_is_parent(path); struct tree_entry *entry; struct line *line = add_line_alloc(view, &entry, type, strlen(path), custom); if (!line) return NULL; strncpy(entry->name, path, strlen(path)); if (mode) entry->mode = strtoul(mode, NULL, 8); if (id) string_copy_rev(entry->id, id); entry->size = size; return line; }
static bool branch_open_visitor(void *data, const struct ref *ref) { struct view *view = data; struct branch_state *state = view->private; struct branch *branch; bool is_all = ref == &branch_all; size_t ref_length; if (ref->tag || ref->ltag) return TRUE; if (!add_line_alloc(view, &branch, LINE_DEFAULT, 0, is_all)) return FALSE; ref_length = is_all ? STRING_SIZE(BRANCH_ALL_NAME) : strlen(ref->name); if (ref_length > state->max_ref_length) state->max_ref_length = ref_length; branch->ref = ref; return TRUE; }
static bool blame_read_file(struct view *view, const char *text, struct blame_state *state) { if (!text) { const char *blame_argv[] = { "git", "blame", encoding_arg, "%(blameargs)", "--incremental", *view->env->ref ? view->env->ref : "--incremental", "--", view->env->file, NULL }; if (failed_to_load_initial_view(view)) die("No blame exist for %s", view->vid); if (view->lines == 0 || !begin_update(view, repo.cdup, blame_argv, OPEN_EXTRA)) { report("Failed to load blame data"); return TRUE; } if (view->env->lineno > 0) { select_view_line(view, view->env->lineno); view->env->lineno = 0; } state->done_reading = TRUE; return FALSE; } else { size_t textlen = strlen(text); struct blame *blame; if (!add_line_alloc(view, &blame, LINE_ID, textlen, FALSE)) return FALSE; blame->commit = NULL; strncpy(blame->text, text, textlen); blame->text[textlen] = 0; return TRUE; } }
main_add_commit(struct view *view, enum line_type type, struct commit *template, const char *title, bool custom) { struct main_state *state = view->private; size_t titlelen = strlen(title); struct commit *commit; char buf[SIZEOF_STR / 2]; struct line *line; /* FIXME: More graceful handling of titles; append "..." to * shortened titles, etc. */ string_expand(buf, sizeof(buf), title, 1); title = buf; titlelen = strlen(title); line = add_line_alloc(view, &commit, type, titlelen, custom); if (!line) return NULL; *commit = *template; strncpy(commit->title, title, titlelen); state->graph.canvas = &commit->graph; memset(template, 0, sizeof(*template)); state->reflogmsg[0] = 0; view_column_info_update(view, line); return commit; } static inline void main_flush_commit(struct view *view, struct commit *commit)