#define CMD_SNAPSHOT 6
#define CMD_TAG 7
#define CMD_REFS 8
+#define CMD_PATCH 9
/*
* Dateformats used on misc. pages
int fd;
};
-struct repoinfo {
+struct cgit_repo {
char *url;
char *name;
char *path;
int enable_log_linecount;
};
-struct repolist {
+struct cgit_repolist {
int length;
int count;
- struct repoinfo *repos;
+ struct cgit_repo *repos;
};
struct commitinfo {
int count;
};
+struct cgit_query {
+ int has_symref;
+ int has_sha1;
+ char *raw;
+ char *repo;
+ char *page;
+ char *search;
+ char *grep;
+ char *head;
+ char *sha1;
+ char *sha2;
+ char *path;
+ char *name;
+ int ofs;
+};
+
+struct cgit_config {
+ char *agefile;
+ char *cache_root;
+ char *clone_prefix;
+ char *css;
+ char *index_header;
+ char *index_info;
+ char *logo;
+ char *logo_link;
+ char *module_link;
+ char *repo_group;
+ char *robots;
+ char *root_title;
+ char *script_name;
+ char *virtual_root;
+ int cache_dynamic_ttl;
+ int cache_max_create_time;
+ int cache_repo_ttl;
+ int cache_root_ttl;
+ int cache_static_ttl;
+ int enable_index_links;
+ int enable_log_filecount;
+ int enable_log_linecount;
+ int max_commit_count;
+ int max_lock_attempts;
+ int max_msg_len;
+ int max_repodesc_len;
+ int nocache;
+ int renamelimit;
+ int snapshots;
+ int summary_branches;
+ int summary_log;
+ int summary_tags;
+};
+
+struct cgit_context {
+ struct cgit_query qry;
+ struct cgit_config cfg;
+ struct cgit_repo *repo;
+};
+
extern const char *cgit_version;
-extern struct repolist cgit_repolist;
-extern struct repoinfo *cgit_repo;
+extern struct cgit_repolist cgit_repolist;
+extern struct cgit_context ctx;
extern int cgit_cmd;
-extern char *cgit_root_title;
-extern char *cgit_css;
-extern char *cgit_logo;
-extern char *cgit_index_header;
-extern char *cgit_index_info;
-extern char *cgit_logo_link;
-extern char *cgit_module_link;
-extern char *cgit_agefile;
-extern char *cgit_virtual_root;
-extern char *cgit_script_name;
-extern char *cgit_cache_root;
-extern char *cgit_repo_group;
-extern char *cgit_robots;
-extern char *cgit_clone_prefix;
-
-extern int cgit_nocache;
-extern int cgit_snapshots;
-extern int cgit_enable_index_links;
-extern int cgit_enable_log_filecount;
-extern int cgit_enable_log_linecount;
-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 int cgit_summary_log;
-extern int cgit_summary_tags;
-extern int cgit_summary_branches;
-
-extern int cgit_max_msg_len;
-extern int cgit_max_repodesc_len;
-extern int cgit_max_commit_count;
-
-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_search;
-extern char *cgit_query_grep;
-extern char *cgit_query_head;
-extern char *cgit_query_sha1;
-extern char *cgit_query_sha2;
-extern char *cgit_query_path;
-extern char *cgit_query_name;
-extern int cgit_query_ofs;
-
extern int htmlfd;
+extern void cgit_prepare_context(struct cgit_context *ctx);
extern int cgit_get_cmd_index(const char *cmd);
-extern struct repoinfo *cgit_get_repoinfo(const char *url);
+extern struct cgit_repo *cgit_get_repoinfo(const char *url);
extern void cgit_global_config_cb(const char *name, const char *value);
extern void cgit_repo_config_cb(const char *name, const char *value);
extern void cgit_querystring_cb(const char *name, const char *value);
extern void cgit_print_refs();
extern void cgit_print_tag(char *revname);
extern void cgit_print_diff(const char *new_hex, const char *old_hex, const char *prefix);
+extern void cgit_print_patch(char *hex, struct cacheitem *item);
extern void cgit_print_snapshot(struct cacheitem *item, const char *head,
const char *hex, const char *prefix,
const char *filename, int snapshot);