-extern const char cgit_version[];
-
-extern char *cgit_root;
-extern char *cgit_root_title;
-extern char *cgit_css;
-extern char *cgit_logo;
-extern char *cgit_logo_link;
-extern char *cgit_virtual_root;
-extern char *cgit_cache_root;
-
-extern int cgit_nocache;
-extern int cgit_max_lock_attempts;
-extern int cgit_cache_root_ttl;
-extern int cgit_cache_repo_ttl;
-extern int cgit_cache_dynamic_ttl;
-extern int cgit_cache_static_ttl;
-extern int cgit_cache_max_create_time;
-
-extern char *cgit_repo_name;
-extern char *cgit_repo_desc;
-extern char *cgit_repo_owner;
-
-extern int cgit_query_has_symref;
-extern int cgit_query_has_sha1;
-
-extern char *cgit_querystring;
-extern char *cgit_query_repo;
-extern char *cgit_query_page;
-extern char *cgit_query_head;
-extern char *cgit_query_sha1;
-extern int cgit_query_ofs;
-
-extern int htmlfd;
-
-extern void cgit_global_config_cb(const char *name, const char *value);
+struct cgit_config {
+ char *agefile;
+ char *cache_root;
+ char *clone_prefix;
+ char *css;
+ char *favicon;
+ char *footer;
+ char *head_include;
+ char *header;
+ char *index_header;
+ char *index_info;
+ char *logo;
+ char *logo_link;
+ char *module_link;
+ char *repo_group;
+ char *robots;
+ char *root_title;
+ char *root_desc;
+ char *root_readme;
+ char *script_name;
+ char *virtual_root;
+ int cache_size;
+ int cache_dynamic_ttl;
+ int cache_max_create_time;
+ 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 local_time;
+ int max_repo_count;
+ int max_commit_count;
+ int max_lock_attempts;
+ int max_msg_len;
+ 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 {
+ time_t modified;
+ time_t expires;
+ size_t size;
+ char *mimetype;
+ char *charset;
+ char *filename;
+ char *etag;
+ char *title;
+ int status;
+ char *statusmsg;
+};
+
+struct cgit_context {
+ struct cgit_query qry;
+ struct cgit_config cfg;
+ struct cgit_repo *repo;
+ struct cgit_page page;
+};
+
+struct cgit_snapshot_format {
+ const char *suffix;
+ const char *mimetype;
+ write_archive_fn_t write_func;
+ int bit;
+};
+
+extern const char *cgit_version;
+
+extern struct cgit_repolist cgit_repolist;
+extern struct cgit_context ctx;
+extern const struct cgit_snapshot_format cgit_snapshot_formats[];
+
+extern struct cgit_repo *cgit_add_repo(const char *url);
+extern struct cgit_repo *cgit_get_repoinfo(const char *url);