+typedef void (*filepair_fn)(struct diff_filepair *pair);
+typedef void (*linediff_fn)(char *line, int len);
+
+typedef enum {
+ ABOUT, COMMIT, SOURCE
+} filter_type;
+
+struct cgit_filter {
+ char *cmd;
+ char **argv;
+ int old_stdout;
+ int pipe_fh[2];
+ int pid;
+ int exitstatus;
+};
+
+struct cgit_repo {
+ char *url;
+ char *name;
+ char *path;
+ char *desc;
+ char *owner;
+ char *defbranch;
+ char *module_link;
+ char *readme;
+ char *section;
+ char *clone_url;
+ char *logo;
+ char *logo_link;
+ int snapshots;
+ int enable_commit_graph;
+ int enable_log_filecount;
+ int enable_log_linecount;
+ int enable_remote_branches;
+ int enable_subject_links;
+ int max_stats;
+ time_t mtime;
+ struct cgit_filter *about_filter;
+ struct cgit_filter *commit_filter;
+ struct cgit_filter *source_filter;
+};
+
+typedef void (*repo_config_fn)(struct cgit_repo *repo, const char *name,
+ const char *value);
+
+struct cgit_repolist {
+ int length;
+ int count;
+ struct cgit_repo *repos;
+};
+
+struct commitinfo {
+ struct commit *commit;
+ char *author;
+ char *author_email;
+ unsigned long author_date;
+ char *committer;
+ char *committer_email;
+ unsigned long committer_date;
+ char *subject;
+ char *msg;
+ char *msg_encoding;
+};
+
+struct taginfo {
+ char *tagger;
+ char *tagger_email;
+ unsigned long tagger_date;
+ char *msg;
+};