+ char *url;
+ char *period;
+ int ofs;
+ int nohead;
+ char *sort;
+ int showmsg;
+ diff_type difftype;
+ int show_all;
+ int context;
+ int ignorews;
+ int follow;
+ char *vpath;
+};
+
+struct cgit_config {
+ char *agefile;
+ char *cache_root;
+ char *clone_prefix;
+ char *clone_url;
+ char *css;
+ char *favicon;
+ char *footer;
+ char *head_include;
+ char *header;
+ char *logo;
+ char *logo_link;
+ char *mimetype_file;
+ char *module_link;
+ char *project_list;
+ struct string_list readme;
+ char *robots;
+ char *root_title;
+ char *root_desc;
+ char *root_readme;
+ char *script_name;
+ char *section;
+ char *repository_sort;
+ char *virtual_root; /* Always ends with '/'. */
+ char *strict_export;
+ int cache_size;
+ int cache_dynamic_ttl;
+ int cache_max_create_time;
+ int cache_repo_ttl;
+ int cache_root_ttl;
+ int cache_scanrc_ttl;
+ int cache_static_ttl;
+ int cache_about_ttl;
+ int cache_snapshot_ttl;
+ int case_sensitive_sort;
+ int embedded;
+ int enable_filter_overrides;
+ int enable_follow_links;
+ int enable_http_clone;
+ int enable_index_links;
+ int enable_index_owner;
+ int enable_blame;
+ int enable_commit_graph;
+ int enable_log_filecount;
+ int enable_log_linecount;
+ int enable_remote_branches;
+ int enable_subject_links;
+ int enable_html_serving;
+ int enable_tree_linenumbers;
+ int enable_git_config;
+ int local_time;
+ int max_atom_items;
+ int max_repo_count;
+ int max_commit_count;
+ int max_lock_attempts;
+ int max_msg_len;
+ int max_repodesc_len;
+ int max_blob_size;
+ int max_stats;
+ int noplainemail;
+ int noheader;
+ int renamelimit;
+ int remove_suffix;
+ int scan_hidden_path;
+ int section_from_path;
+ int snapshots;
+ int section_sort;
+ int summary_branches;
+ int summary_log;
+ int summary_tags;
+ diff_type difftype;
+ int branch_sort;
+ int commit_sort;
+ struct string_list mimetypes;
+ struct cgit_filter *about_filter;
+ struct cgit_filter *commit_filter;
+ struct cgit_filter *source_filter;
+ struct cgit_filter *email_filter;
+ struct cgit_filter *owner_filter;
+ struct cgit_filter *auth_filter;
+};
+
+struct cgit_page {
+ time_t modified;
+ time_t expires;
+ size_t size;
+ const char *mimetype;
+ const char *charset;
+ const char *filename;
+ const char *etag;
+ const char *title;
+ int status;
+ const char *statusmsg;
+};
+
+struct cgit_environment {
+ const char *cgit_config;
+ const char *http_host;
+ const char *https;
+ const char *no_http;
+ const char *path_info;
+ const char *query_string;
+ const char *request_method;
+ const char *script_name;
+ const char *server_name;
+ const char *server_port;
+ const char *http_cookie;
+ const char *http_referer;
+ unsigned int content_length;
+ int authenticated;
+};
+
+struct cgit_context {
+ struct cgit_environment env;
+ struct cgit_query qry;
+ struct cgit_config cfg;
+ struct cgit_repo *repo;
+ struct cgit_page page;