author | Lars Hjemli <hjemli@gmail.com> | 2008-04-08 19:29:21 (UTC) |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2008-04-08 19:29:21 (UTC) |
commit | 23296ad648c0e2a9e3cf40a3de322b10ad25cce3 (patch) (unidiff) | |
tree | 136493d8228b0ff4971feb06b0e8aee296367b00 /cgit.h | |
parent | e2a44cf0923398396b7a321d5ce894ad3bf6f580 (diff) | |
parent | c6f747649ace1a92ed5dfaae9cc1ea3affe0bf51 (diff) | |
download | cgit-23296ad648c0e2a9e3cf40a3de322b10ad25cce3.zip cgit-23296ad648c0e2a9e3cf40a3de322b10ad25cce3.tar.gz cgit-23296ad648c0e2a9e3cf40a3de322b10ad25cce3.tar.bz2 |
Merge branch 'lh/cleanup'
* lh/cleanup: (21 commits)
Reset ctx.repo to NULL when the config parser is finished
Move cgit_parse_query() from parsing.c to html.c as http_parse_querystring()
Move function for configfile parsing into configfile.[ch]
Add cache.h
Remove global and obsolete cgit_cmd
Makefile: copy the QUIET constructs from the Makefile in git.git
Move cgit_version from shared.c to cgit.c
Makefile: autobuild dependency rules
Initial Makefile cleanup
Move non-generic functions from shared.c to cgit.c
Add ui-shared.h
Add separate header-files for each page/view
Refactor snapshot support
Add command dispatcher
Remove obsolete cacheitem parameter to ui-functions
Add struct cgit_page to cgit_context
Introduce html.h
Improve initialization of git directory
Move cgit_repo into cgit_context
Add all config variables into struct cgit_context
...
-rw-r--r-- | cgit.h | 237 |
1 files changed, 83 insertions, 154 deletions
@@ -15,29 +15,16 @@ | |||
15 | #include <revision.h> | 15 | #include <revision.h> |
16 | #include <log-tree.h> | 16 | #include <log-tree.h> |
17 | #include <archive.h> | 17 | #include <archive.h> |
18 | #include <xdiff/xdiff.h> | 18 | #include <xdiff/xdiff.h> |
19 | #include <utf8.h> | 19 | #include <utf8.h> |
20 | 20 | ||
21 | 21 | ||
22 | /* | 22 | /* |
23 | * The valid cgit repo-commands | ||
24 | */ | ||
25 | #define CMD_LOG 1 | ||
26 | #define CMD_COMMIT 2 | ||
27 | #define CMD_DIFF 3 | ||
28 | #define CMD_TREE 4 | ||
29 | #define CMD_BLOB 5 | ||
30 | #define CMD_SNAPSHOT 6 | ||
31 | #define CMD_TAG 7 | ||
32 | #define CMD_REFS 8 | ||
33 | #define CMD_PATCH 9 | ||
34 | |||
35 | /* | ||
36 | * Dateformats used on misc. pages | 23 | * Dateformats used on misc. pages |
37 | */ | 24 | */ |
38 | #define FMT_LONGDATE "%Y-%m-%d %H:%M:%S" | 25 | #define FMT_LONGDATE "%Y-%m-%d %H:%M:%S" |
39 | #define FMT_SHORTDATE "%Y-%m-%d" | 26 | #define FMT_SHORTDATE "%Y-%m-%d" |
40 | 27 | ||
41 | 28 | ||
42 | /* | 29 | /* |
43 | * Limits used for relative dates | 30 | * Limits used for relative dates |
@@ -54,43 +41,36 @@ | |||
54 | * Default encoding | 41 | * Default encoding |
55 | */ | 42 | */ |
56 | #define PAGE_ENCODING "UTF-8" | 43 | #define PAGE_ENCODING "UTF-8" |
57 | 44 | ||
58 | typedef void (*configfn)(const char *name, const char *value); | 45 | typedef void (*configfn)(const char *name, const char *value); |
59 | typedef void (*filepair_fn)(struct diff_filepair *pair); | 46 | typedef void (*filepair_fn)(struct diff_filepair *pair); |
60 | typedef void (*linediff_fn)(char *line, int len); | 47 | typedef void (*linediff_fn)(char *line, int len); |
61 | 48 | ||
62 | struct cacheitem { | 49 | struct cgit_repo { |
63 | char *name; | ||
64 | struct stat st; | ||
65 | int ttl; | ||
66 | int fd; | ||
67 | }; | ||
68 | |||
69 | struct repoinfo { | ||
70 | char *url; | 50 | char *url; |
71 | char *name; | 51 | char *name; |
72 | char *path; | 52 | char *path; |
73 | char *desc; | 53 | char *desc; |
74 | char *owner; | 54 | char *owner; |
75 | char *defbranch; | 55 | char *defbranch; |
76 | char *group; | 56 | char *group; |
77 | char *module_link; | 57 | char *module_link; |
78 | char *readme; | 58 | char *readme; |
79 | char *clone_url; | 59 | char *clone_url; |
80 | int snapshots; | 60 | int snapshots; |
81 | int enable_log_filecount; | 61 | int enable_log_filecount; |
82 | int enable_log_linecount; | 62 | int enable_log_linecount; |
83 | }; | 63 | }; |
84 | 64 | ||
85 | struct repolist { | 65 | struct cgit_repolist { |
86 | int length; | 66 | int length; |
87 | int count; | 67 | int count; |
88 | struct repoinfo *repos; | 68 | struct cgit_repo *repos; |
89 | }; | 69 | }; |
90 | 70 | ||
91 | struct commitinfo { | 71 | struct commitinfo { |
92 | struct commit *commit; | 72 | struct commit *commit; |
93 | char *author; | 73 | char *author; |
94 | char *author_email; | 74 | char *author_email; |
95 | unsigned long author_date; | 75 | unsigned long author_date; |
96 | char *committer; | 76 | char *committer; |
@@ -118,84 +98,104 @@ struct refinfo { | |||
118 | }; | 98 | }; |
119 | 99 | ||
120 | struct reflist { | 100 | struct reflist { |
121 | struct refinfo **refs; | 101 | struct refinfo **refs; |
122 | int alloc; | 102 | int alloc; |
123 | int count; | 103 | int count; |
124 | }; | 104 | }; |
125 | 105 | ||
106 | struct cgit_query { | ||
107 | int has_symref; | ||
108 | int has_sha1; | ||
109 | char *raw; | ||
110 | char *repo; | ||
111 | char *page; | ||
112 | char *search; | ||
113 | char *grep; | ||
114 | char *head; | ||
115 | char *sha1; | ||
116 | char *sha2; | ||
117 | char *path; | ||
118 | char *name; | ||
119 | int ofs; | ||
120 | }; | ||
121 | |||
122 | struct cgit_config { | ||
123 | char *agefile; | ||
124 | char *cache_root; | ||
125 | char *clone_prefix; | ||
126 | char *css; | ||
127 | char *index_header; | ||
128 | char *index_info; | ||
129 | char *logo; | ||
130 | char *logo_link; | ||
131 | char *module_link; | ||
132 | char *repo_group; | ||
133 | char *robots; | ||
134 | char *root_title; | ||
135 | char *script_name; | ||
136 | char *virtual_root; | ||
137 | int cache_dynamic_ttl; | ||
138 | int cache_max_create_time; | ||
139 | int cache_repo_ttl; | ||
140 | int cache_root_ttl; | ||
141 | int cache_static_ttl; | ||
142 | int enable_index_links; | ||
143 | int enable_log_filecount; | ||
144 | int enable_log_linecount; | ||
145 | int max_commit_count; | ||
146 | int max_lock_attempts; | ||
147 | int max_msg_len; | ||
148 | int max_repodesc_len; | ||
149 | int nocache; | ||
150 | int renamelimit; | ||
151 | int snapshots; | ||
152 | int summary_branches; | ||
153 | int summary_log; | ||
154 | int summary_tags; | ||
155 | }; | ||
156 | |||
157 | struct cgit_page { | ||
158 | time_t modified; | ||
159 | time_t expires; | ||
160 | char *mimetype; | ||
161 | char *charset; | ||
162 | char *filename; | ||
163 | char *title; | ||
164 | }; | ||
165 | |||
166 | struct cgit_context { | ||
167 | struct cgit_query qry; | ||
168 | struct cgit_config cfg; | ||
169 | struct cgit_repo *repo; | ||
170 | struct cgit_page page; | ||
171 | }; | ||
172 | |||
173 | struct cgit_snapshot_format { | ||
174 | const char *suffix; | ||
175 | const char *mimetype; | ||
176 | write_archive_fn_t write_func; | ||
177 | int bit; | ||
178 | }; | ||
179 | |||
126 | extern const char *cgit_version; | 180 | extern const char *cgit_version; |
127 | 181 | ||
128 | extern struct repolist cgit_repolist; | 182 | extern struct cgit_repolist cgit_repolist; |
129 | extern struct repoinfo *cgit_repo; | 183 | extern struct cgit_context ctx; |
130 | extern int cgit_cmd; | 184 | extern const struct cgit_snapshot_format cgit_snapshot_formats[]; |
131 | 185 | ||
132 | extern char *cgit_root_title; | 186 | extern struct cgit_repo *cgit_add_repo(const char *url); |
133 | extern char *cgit_css; | 187 | extern struct cgit_repo *cgit_get_repoinfo(const char *url); |
134 | extern char *cgit_logo; | ||
135 | extern char *cgit_index_header; | ||
136 | extern char *cgit_index_info; | ||
137 | extern char *cgit_logo_link; | ||
138 | extern char *cgit_module_link; | ||
139 | extern char *cgit_agefile; | ||
140 | extern char *cgit_virtual_root; | ||
141 | extern char *cgit_script_name; | ||
142 | extern char *cgit_cache_root; | ||
143 | extern char *cgit_repo_group; | ||
144 | extern char *cgit_robots; | ||
145 | extern char *cgit_clone_prefix; | ||
146 | |||
147 | extern int cgit_nocache; | ||
148 | extern int cgit_snapshots; | ||
149 | extern int cgit_enable_index_links; | ||
150 | extern int cgit_enable_log_filecount; | ||
151 | extern int cgit_enable_log_linecount; | ||
152 | extern int cgit_max_lock_attempts; | ||
153 | extern int cgit_cache_root_ttl; | ||
154 | extern int cgit_cache_repo_ttl; | ||
155 | extern int cgit_cache_dynamic_ttl; | ||
156 | extern int cgit_cache_static_ttl; | ||
157 | extern int cgit_cache_max_create_time; | ||
158 | extern int cgit_summary_log; | ||
159 | extern int cgit_summary_tags; | ||
160 | extern int cgit_summary_branches; | ||
161 | |||
162 | extern int cgit_max_msg_len; | ||
163 | extern int cgit_max_repodesc_len; | ||
164 | extern int cgit_max_commit_count; | ||
165 | |||
166 | extern int cgit_query_has_symref; | ||
167 | extern int cgit_query_has_sha1; | ||
168 | |||
169 | extern char *cgit_querystring; | ||
170 | extern char *cgit_query_repo; | ||
171 | extern char *cgit_query_page; | ||
172 | extern char *cgit_query_search; | ||
173 | extern char *cgit_query_grep; | ||
174 | extern char *cgit_query_head; | ||
175 | extern char *cgit_query_sha1; | ||
176 | extern char *cgit_query_sha2; | ||
177 | extern char *cgit_query_path; | ||
178 | extern char *cgit_query_name; | ||
179 | extern int cgit_query_ofs; | ||
180 | |||
181 | extern int htmlfd; | ||
182 | |||
183 | extern int cgit_get_cmd_index(const char *cmd); | ||
184 | extern struct repoinfo *cgit_get_repoinfo(const char *url); | ||
185 | extern void cgit_global_config_cb(const char *name, const char *value); | ||
186 | extern void cgit_repo_config_cb(const char *name, const char *value); | 188 | extern void cgit_repo_config_cb(const char *name, const char *value); |
187 | extern void cgit_querystring_cb(const char *name, const char *value); | ||
188 | 189 | ||
189 | extern int chk_zero(int result, char *msg); | 190 | extern int chk_zero(int result, char *msg); |
190 | extern int chk_positive(int result, char *msg); | 191 | extern int chk_positive(int result, char *msg); |
191 | extern int chk_non_negative(int result, char *msg); | 192 | extern int chk_non_negative(int result, char *msg); |
192 | 193 | ||
193 | extern int hextoint(char c); | ||
194 | extern char *trim_end(const char *str, char c); | 194 | extern char *trim_end(const char *str, char c); |
195 | extern char *strlpart(char *txt, int maxlen); | 195 | extern char *strlpart(char *txt, int maxlen); |
196 | extern char *strrpart(char *txt, int maxlen); | 196 | extern char *strrpart(char *txt, int maxlen); |
197 | 197 | ||
198 | extern void cgit_add_ref(struct reflist *list, struct refinfo *ref); | 198 | extern void cgit_add_ref(struct reflist *list, struct refinfo *ref); |
199 | extern int cgit_refs_cb(const char *refname, const unsigned char *sha1, | 199 | extern int cgit_refs_cb(const char *refname, const unsigned char *sha1, |
200 | int flags, void *cb_data); | 200 | int flags, void *cb_data); |
201 | 201 | ||
@@ -208,88 +208,17 @@ extern int cgit_diff_files(const unsigned char *old_sha1, | |||
208 | extern void cgit_diff_tree(const unsigned char *old_sha1, | 208 | extern void cgit_diff_tree(const unsigned char *old_sha1, |
209 | const unsigned char *new_sha1, | 209 | const unsigned char *new_sha1, |
210 | filepair_fn fn, const char *prefix); | 210 | filepair_fn fn, const char *prefix); |
211 | 211 | ||
212 | extern void cgit_diff_commit(struct commit *commit, filepair_fn fn); | 212 | extern void cgit_diff_commit(struct commit *commit, filepair_fn fn); |
213 | 213 | ||
214 | extern char *fmt(const char *format,...); | 214 | extern char *fmt(const char *format,...); |
215 | 215 | ||
216 | extern void html(const char *txt); | ||
217 | extern void htmlf(const char *format,...); | ||
218 | extern void html_txt(char *txt); | ||
219 | extern void html_ntxt(int len, char *txt); | ||
220 | extern void html_attr(char *txt); | ||
221 | extern void html_hidden(char *name, char *value); | ||
222 | extern void html_option(char *value, char *text, char *selected_value); | ||
223 | extern void html_link_open(char *url, char *title, char *class); | ||
224 | extern void html_link_close(void); | ||
225 | extern void html_filemode(unsigned short mode); | ||
226 | extern int html_include(const char *filename); | ||
227 | |||
228 | extern int cgit_read_config(const char *filename, configfn fn); | ||
229 | extern int cgit_parse_query(char *txt, configfn fn); | ||
230 | extern struct commitinfo *cgit_parse_commit(struct commit *commit); | 216 | extern struct commitinfo *cgit_parse_commit(struct commit *commit); |
231 | extern struct taginfo *cgit_parse_tag(struct tag *tag); | 217 | extern struct taginfo *cgit_parse_tag(struct tag *tag); |
232 | extern void cgit_parse_url(const char *url); | 218 | extern void cgit_parse_url(const char *url); |
233 | 219 | ||
234 | extern char *cache_safe_filename(const char *unsafe); | ||
235 | extern int cache_lock(struct cacheitem *item); | ||
236 | extern int cache_unlock(struct cacheitem *item); | ||
237 | extern int cache_cancel_lock(struct cacheitem *item); | ||
238 | extern int cache_exist(struct cacheitem *item); | ||
239 | extern int cache_expired(struct cacheitem *item); | ||
240 | |||
241 | extern char *cgit_repourl(const char *reponame); | ||
242 | extern char *cgit_fileurl(const char *reponame, const char *pagename, | ||
243 | const char *filename, const char *query); | ||
244 | extern char *cgit_pageurl(const char *reponame, const char *pagename, | ||
245 | const char *query); | ||
246 | |||
247 | extern const char *cgit_repobasename(const char *reponame); | 220 | extern const char *cgit_repobasename(const char *reponame); |
248 | 221 | ||
249 | extern void cgit_tree_link(char *name, char *title, char *class, char *head, | ||
250 | char *rev, char *path); | ||
251 | extern void cgit_log_link(char *name, char *title, char *class, char *head, | ||
252 | char *rev, char *path, int ofs, char *grep, | ||
253 | char *pattern); | ||
254 | extern void cgit_commit_link(char *name, char *title, char *class, char *head, | ||
255 | char *rev); | ||
256 | extern void cgit_refs_link(char *name, char *title, char *class, char *head, | ||
257 | char *rev, char *path); | ||
258 | extern void cgit_snapshot_link(char *name, char *title, char *class, | ||
259 | char *head, char *rev, char *archivename); | ||
260 | extern void cgit_diff_link(char *name, char *title, char *class, char *head, | ||
261 | char *new_rev, char *old_rev, char *path); | ||
262 | |||
263 | extern void cgit_object_link(struct object *obj); | ||
264 | |||
265 | extern void cgit_print_error(char *msg); | ||
266 | extern void cgit_print_date(time_t secs, char *format); | ||
267 | extern void cgit_print_age(time_t t, time_t max_relative, char *format); | ||
268 | extern void cgit_print_docstart(char *title, struct cacheitem *item); | ||
269 | extern void cgit_print_docend(); | ||
270 | extern void cgit_print_pageheader(char *title, int show_search); | ||
271 | extern void cgit_print_snapshot_start(const char *mimetype, | ||
272 | const char *filename, | ||
273 | struct cacheitem *item); | ||
274 | extern void cgit_print_branches(int maxcount); | ||
275 | extern void cgit_print_tags(int maxcount); | ||
276 | |||
277 | extern void cgit_print_repolist(struct cacheitem *item); | ||
278 | extern void cgit_print_summary(); | ||
279 | extern void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, | ||
280 | char *pattern, char *path, int pager); | ||
281 | extern void cgit_print_blob(struct cacheitem *item, const char *hex, char *path); | ||
282 | extern void cgit_print_tree(const char *rev, char *path); | ||
283 | extern void cgit_print_commit(char *hex); | ||
284 | extern void cgit_print_refs(); | ||
285 | extern void cgit_print_tag(char *revname); | ||
286 | extern void cgit_print_diff(const char *new_hex, const char *old_hex, const char *prefix); | ||
287 | extern void cgit_print_patch(char *hex, struct cacheitem *item); | ||
288 | extern void cgit_print_snapshot(struct cacheitem *item, const char *head, | ||
289 | const char *hex, const char *prefix, | ||
290 | const char *filename, int snapshot); | ||
291 | extern void cgit_print_snapshot_links(const char *repo, const char *head, | ||
292 | const char *hex, int snapshots); | ||
293 | extern int cgit_parse_snapshots_mask(const char *str); | 222 | extern int cgit_parse_snapshots_mask(const char *str); |
294 | 223 | ||
295 | #endif /* CGIT_H */ | 224 | #endif /* CGIT_H */ |