bool pager_read(struct view *view, char *data) { if (!data) return TRUE; return pager_common_read(view, data, get_line_type(data)); }
bool pager_read(struct view *view, struct buffer *buf) { if (!buf) return true; return pager_common_read(view, buf->data, get_line_type(buf->data), NULL); }
static bool log_read(struct view *view, struct buffer *buf) { struct line *line = NULL; enum line_type type; struct log_state *state = view->private; size_t len; char *commit; char *data; if (!buf) return true; data = buf->data; commit = strstr(data, "commit "); if (commit && get_graph_indent(data) == commit - data) state->graph_indent = commit - data; type = get_line_type(data + state->graph_indent); len = strlen(data + state->graph_indent); if (type == LINE_COMMIT) state->commit_title_read = true; else if (state->commit_title_read && len < 1) { state->commit_title_read = false; state->after_commit_header = true; } else if (state->after_commit_header && len < 1) { state->after_commit_header = false; state->reading_diff_stat = true; } else if (state->reading_diff_stat) { line = diff_common_add_diff_stat(view, data, state->graph_indent); if (line) { if (state->graph_indent) line->graph_indent = 1; return true; } state->reading_diff_stat = false; } if (!pager_common_read(view, data, type, &line)) return false; if (line && state->graph_indent) line->graph_indent = 1; return true; }