#include <revision.h>
#include <log-tree.h>
#include <archive.h>
+#include <string-list.h>
#include <xdiff-interface.h>
#include <xdiff/xdiff.h>
#include <utf8.h>
typedef void (*filepair_fn)(struct diff_filepair *pair);
typedef void (*linediff_fn)(char *line, int len);
+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;
int enable_log_linecount;
int max_stats;
time_t mtime;
+ struct cgit_filter *about_filter;
+ struct cgit_filter *commit_filter;
+ struct cgit_filter *source_filter;
};
struct cgit_repolist {
char *css;
char *favicon;
char *footer;
+ char *head_include;
char *header;
char *index_header;
char *index_info;
int cache_repo_ttl;
int cache_root_ttl;
int cache_static_ttl;
+ int embedded;
int enable_index_links;
int enable_log_filecount;
int enable_log_linecount;
int max_repodesc_len;
int max_stats;
int nocache;
+ int noplainemail;
+ int noheader;
int renamelimit;
int snapshots;
int summary_branches;
int summary_log;
int summary_tags;
+ struct string_list mimetypes;
+ struct cgit_filter *about_filter;
+ struct cgit_filter *commit_filter;
+ struct cgit_filter *source_filter;
};
struct cgit_page {
char *mimetype;
char *charset;
char *filename;
+ char *etag;
char *title;
+ int status;
+ char *statusmsg;
+};
+
+struct cgit_environment {
+ char *cgit_config;
+ char *http_host;
+ char *https;
+ char *no_http;
+ char *path_info;
+ char *query_string;
+ char *request_method;
+ char *script_name;
+ char *server_name;
+ char *server_port;
};
struct cgit_context {
+ struct cgit_environment env;
struct cgit_query qry;
struct cgit_config cfg;
struct cgit_repo *repo;
extern int cgit_parse_snapshots_mask(const char *str);
+extern int cgit_open_filter(struct cgit_filter *filter);
+extern int cgit_close_filter(struct cgit_filter *filter);
+
+extern int readfile(const char *path, char **buf, size_t *size);
#endif /* CGIT_H */