summaryrefslogtreecommitdiffabout
path: root/cgit.h
authorLars Hjemli <hjemli@gmail.com>2009-07-31 14:55:27 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2009-07-31 15:41:21 (UTC)
commit46b7abed99e957008c01c02cf612aa526ba92f04 (patch) (unidiff)
tree2cdbfe5281c2ffa645def488d53db0a8b82842f4 /cgit.h
parent18dfbdc099c1398016427b6fa7f1a1facb363998 (diff)
downloadcgit-46b7abed99e957008c01c02cf612aa526ba92f04.zip
cgit-46b7abed99e957008c01c02cf612aa526ba92f04.tar.gz
cgit-46b7abed99e957008c01c02cf612aa526ba92f04.tar.bz2
ui-tree: add support for source-filter option
This new option is used to specify an external command which will be executed when displaying blob content in the tree view. Blob content will be written to STDIN of the filter and STDOUT from the filter will be included verbatim in the html output from cgit. The file name of the blob will be passed as the only argument to the filter command. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (limited to 'cgit.h') (more/less context) (ignore whitespace changes)
-rw-r--r--cgit.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/cgit.h b/cgit.h
index d0fff1f..f9cf0df 100644
--- a/cgit.h
+++ b/cgit.h
@@ -1,264 +1,265 @@
1#ifndef CGIT_H 1#ifndef CGIT_H
2#define CGIT_H 2#define CGIT_H
3 3
4 4
5#include <git-compat-util.h> 5#include <git-compat-util.h>
6#include <cache.h> 6#include <cache.h>
7#include <grep.h> 7#include <grep.h>
8#include <object.h> 8#include <object.h>
9#include <tree.h> 9#include <tree.h>
10#include <commit.h> 10#include <commit.h>
11#include <tag.h> 11#include <tag.h>
12#include <diff.h> 12#include <diff.h>
13#include <diffcore.h> 13#include <diffcore.h>
14#include <refs.h> 14#include <refs.h>
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-interface.h> 18#include <xdiff-interface.h>
19#include <xdiff/xdiff.h> 19#include <xdiff/xdiff.h>
20#include <utf8.h> 20#include <utf8.h>
21 21
22 22
23/* 23/*
24 * Dateformats used on misc. pages 24 * Dateformats used on misc. pages
25 */ 25 */
26#define FMT_LONGDATE "%Y-%m-%d %H:%M:%S (%Z)" 26#define FMT_LONGDATE "%Y-%m-%d %H:%M:%S (%Z)"
27#define FMT_SHORTDATE "%Y-%m-%d" 27#define FMT_SHORTDATE "%Y-%m-%d"
28#define FMT_ATOMDATE "%Y-%m-%dT%H:%M:%SZ" 28#define FMT_ATOMDATE "%Y-%m-%dT%H:%M:%SZ"
29 29
30 30
31/* 31/*
32 * Limits used for relative dates 32 * Limits used for relative dates
33 */ 33 */
34#define TM_MIN 60 34#define TM_MIN 60
35#define TM_HOUR (TM_MIN * 60) 35#define TM_HOUR (TM_MIN * 60)
36#define TM_DAY (TM_HOUR * 24) 36#define TM_DAY (TM_HOUR * 24)
37#define TM_WEEK (TM_DAY * 7) 37#define TM_WEEK (TM_DAY * 7)
38#define TM_YEAR (TM_DAY * 365) 38#define TM_YEAR (TM_DAY * 365)
39#define TM_MONTH (TM_YEAR / 12.0) 39#define TM_MONTH (TM_YEAR / 12.0)
40 40
41 41
42/* 42/*
43 * Default encoding 43 * Default encoding
44 */ 44 */
45#define PAGE_ENCODING "UTF-8" 45#define PAGE_ENCODING "UTF-8"
46 46
47typedef void (*configfn)(const char *name, const char *value); 47typedef void (*configfn)(const char *name, const char *value);
48typedef void (*filepair_fn)(struct diff_filepair *pair); 48typedef void (*filepair_fn)(struct diff_filepair *pair);
49typedef void (*linediff_fn)(char *line, int len); 49typedef void (*linediff_fn)(char *line, int len);
50 50
51struct cgit_repo { 51struct cgit_repo {
52 char *url; 52 char *url;
53 char *name; 53 char *name;
54 char *path; 54 char *path;
55 char *desc; 55 char *desc;
56 char *owner; 56 char *owner;
57 char *defbranch; 57 char *defbranch;
58 char *group; 58 char *group;
59 char *module_link; 59 char *module_link;
60 char *readme; 60 char *readme;
61 char *clone_url; 61 char *clone_url;
62 int snapshots; 62 int snapshots;
63 int enable_log_filecount; 63 int enable_log_filecount;
64 int enable_log_linecount; 64 int enable_log_linecount;
65 int max_stats; 65 int max_stats;
66 time_t mtime; 66 time_t mtime;
67}; 67};
68 68
69struct cgit_repolist { 69struct cgit_repolist {
70 int length; 70 int length;
71 int count; 71 int count;
72 struct cgit_repo *repos; 72 struct cgit_repo *repos;
73}; 73};
74 74
75struct commitinfo { 75struct commitinfo {
76 struct commit *commit; 76 struct commit *commit;
77 char *author; 77 char *author;
78 char *author_email; 78 char *author_email;
79 unsigned long author_date; 79 unsigned long author_date;
80 char *committer; 80 char *committer;
81 char *committer_email; 81 char *committer_email;
82 unsigned long committer_date; 82 unsigned long committer_date;
83 char *subject; 83 char *subject;
84 char *msg; 84 char *msg;
85 char *msg_encoding; 85 char *msg_encoding;
86}; 86};
87 87
88struct taginfo { 88struct taginfo {
89 char *tagger; 89 char *tagger;
90 char *tagger_email; 90 char *tagger_email;
91 unsigned long tagger_date; 91 unsigned long tagger_date;
92 char *msg; 92 char *msg;
93}; 93};
94 94
95struct refinfo { 95struct refinfo {
96 const char *refname; 96 const char *refname;
97 struct object *object; 97 struct object *object;
98 union { 98 union {
99 struct taginfo *tag; 99 struct taginfo *tag;
100 struct commitinfo *commit; 100 struct commitinfo *commit;
101 }; 101 };
102}; 102};
103 103
104struct reflist { 104struct reflist {
105 struct refinfo **refs; 105 struct refinfo **refs;
106 int alloc; 106 int alloc;
107 int count; 107 int count;
108}; 108};
109 109
110struct cgit_query { 110struct cgit_query {
111 int has_symref; 111 int has_symref;
112 int has_sha1; 112 int has_sha1;
113 char *raw; 113 char *raw;
114 char *repo; 114 char *repo;
115 char *page; 115 char *page;
116 char *search; 116 char *search;
117 char *grep; 117 char *grep;
118 char *head; 118 char *head;
119 char *sha1; 119 char *sha1;
120 char *sha2; 120 char *sha2;
121 char *path; 121 char *path;
122 char *name; 122 char *name;
123 char *mimetype; 123 char *mimetype;
124 char *url; 124 char *url;
125 char *period; 125 char *period;
126 int ofs; 126 int ofs;
127 int nohead; 127 int nohead;
128 char *sort; 128 char *sort;
129 int showmsg; 129 int showmsg;
130}; 130};
131 131
132struct cgit_filter { 132struct cgit_filter {
133 char *cmd; 133 char *cmd;
134 char **argv; 134 char **argv;
135 int old_stdout; 135 int old_stdout;
136 int pipe_fh[2]; 136 int pipe_fh[2];
137 int pid; 137 int pid;
138 int exitstatus; 138 int exitstatus;
139}; 139};
140 140
141struct cgit_config { 141struct cgit_config {
142 char *agefile; 142 char *agefile;
143 char *cache_root; 143 char *cache_root;
144 char *clone_prefix; 144 char *clone_prefix;
145 char *css; 145 char *css;
146 char *favicon; 146 char *favicon;
147 char *footer; 147 char *footer;
148 char *head_include; 148 char *head_include;
149 char *header; 149 char *header;
150 char *index_header; 150 char *index_header;
151 char *index_info; 151 char *index_info;
152 char *logo; 152 char *logo;
153 char *logo_link; 153 char *logo_link;
154 char *module_link; 154 char *module_link;
155 char *repo_group; 155 char *repo_group;
156 char *robots; 156 char *robots;
157 char *root_title; 157 char *root_title;
158 char *root_desc; 158 char *root_desc;
159 char *root_readme; 159 char *root_readme;
160 char *script_name; 160 char *script_name;
161 char *virtual_root; 161 char *virtual_root;
162 int cache_size; 162 int cache_size;
163 int cache_dynamic_ttl; 163 int cache_dynamic_ttl;
164 int cache_max_create_time; 164 int cache_max_create_time;
165 int cache_repo_ttl; 165 int cache_repo_ttl;
166 int cache_root_ttl; 166 int cache_root_ttl;
167 int cache_static_ttl; 167 int cache_static_ttl;
168 int embedded; 168 int embedded;
169 int enable_index_links; 169 int enable_index_links;
170 int enable_log_filecount; 170 int enable_log_filecount;
171 int enable_log_linecount; 171 int enable_log_linecount;
172 int local_time; 172 int local_time;
173 int max_repo_count; 173 int max_repo_count;
174 int max_commit_count; 174 int max_commit_count;
175 int max_lock_attempts; 175 int max_lock_attempts;
176 int max_msg_len; 176 int max_msg_len;
177 int max_repodesc_len; 177 int max_repodesc_len;
178 int max_stats; 178 int max_stats;
179 int nocache; 179 int nocache;
180 int noheader; 180 int noheader;
181 int renamelimit; 181 int renamelimit;
182 int snapshots; 182 int snapshots;
183 int summary_branches; 183 int summary_branches;
184 int summary_log; 184 int summary_log;
185 int summary_tags; 185 int summary_tags;
186 struct cgit_filter *source_filter;
186}; 187};
187 188
188struct cgit_page { 189struct cgit_page {
189 time_t modified; 190 time_t modified;
190 time_t expires; 191 time_t expires;
191 size_t size; 192 size_t size;
192 char *mimetype; 193 char *mimetype;
193 char *charset; 194 char *charset;
194 char *filename; 195 char *filename;
195 char *etag; 196 char *etag;
196 char *title; 197 char *title;
197 int status; 198 int status;
198 char *statusmsg; 199 char *statusmsg;
199}; 200};
200 201
201struct cgit_context { 202struct cgit_context {
202 struct cgit_query qry; 203 struct cgit_query qry;
203 struct cgit_config cfg; 204 struct cgit_config cfg;
204 struct cgit_repo *repo; 205 struct cgit_repo *repo;
205 struct cgit_page page; 206 struct cgit_page page;
206}; 207};
207 208
208struct cgit_snapshot_format { 209struct cgit_snapshot_format {
209 const char *suffix; 210 const char *suffix;
210 const char *mimetype; 211 const char *mimetype;
211 write_archive_fn_t write_func; 212 write_archive_fn_t write_func;
212 int bit; 213 int bit;
213}; 214};
214 215
215extern const char *cgit_version; 216extern const char *cgit_version;
216 217
217extern struct cgit_repolist cgit_repolist; 218extern struct cgit_repolist cgit_repolist;
218extern struct cgit_context ctx; 219extern struct cgit_context ctx;
219extern const struct cgit_snapshot_format cgit_snapshot_formats[]; 220extern const struct cgit_snapshot_format cgit_snapshot_formats[];
220 221
221extern struct cgit_repo *cgit_add_repo(const char *url); 222extern struct cgit_repo *cgit_add_repo(const char *url);
222extern struct cgit_repo *cgit_get_repoinfo(const char *url); 223extern struct cgit_repo *cgit_get_repoinfo(const char *url);
223extern void cgit_repo_config_cb(const char *name, const char *value); 224extern void cgit_repo_config_cb(const char *name, const char *value);
224 225
225extern int chk_zero(int result, char *msg); 226extern int chk_zero(int result, char *msg);
226extern int chk_positive(int result, char *msg); 227extern int chk_positive(int result, char *msg);
227extern int chk_non_negative(int result, char *msg); 228extern int chk_non_negative(int result, char *msg);
228 229
229extern char *trim_end(const char *str, char c); 230extern char *trim_end(const char *str, char c);
230extern char *strlpart(char *txt, int maxlen); 231extern char *strlpart(char *txt, int maxlen);
231extern char *strrpart(char *txt, int maxlen); 232extern char *strrpart(char *txt, int maxlen);
232 233
233extern void cgit_add_ref(struct reflist *list, struct refinfo *ref); 234extern void cgit_add_ref(struct reflist *list, struct refinfo *ref);
234extern int cgit_refs_cb(const char *refname, const unsigned char *sha1, 235extern int cgit_refs_cb(const char *refname, const unsigned char *sha1,
235 int flags, void *cb_data); 236 int flags, void *cb_data);
236 237
237extern void *cgit_free_commitinfo(struct commitinfo *info); 238extern void *cgit_free_commitinfo(struct commitinfo *info);
238 239
239extern int cgit_diff_files(const unsigned char *old_sha1, 240extern int cgit_diff_files(const unsigned char *old_sha1,
240 const unsigned char *new_sha1, 241 const unsigned char *new_sha1,
241 unsigned long *old_size, unsigned long *new_size, 242 unsigned long *old_size, unsigned long *new_size,
242 int *binary, linediff_fn fn); 243 int *binary, linediff_fn fn);
243 244
244extern void cgit_diff_tree(const unsigned char *old_sha1, 245extern void cgit_diff_tree(const unsigned char *old_sha1,
245 const unsigned char *new_sha1, 246 const unsigned char *new_sha1,
246 filepair_fn fn, const char *prefix); 247 filepair_fn fn, const char *prefix);
247 248
248extern void cgit_diff_commit(struct commit *commit, filepair_fn fn); 249extern void cgit_diff_commit(struct commit *commit, filepair_fn fn);
249 250
250extern char *fmt(const char *format,...); 251extern char *fmt(const char *format,...);
251 252
252extern struct commitinfo *cgit_parse_commit(struct commit *commit); 253extern struct commitinfo *cgit_parse_commit(struct commit *commit);
253extern struct taginfo *cgit_parse_tag(struct tag *tag); 254extern struct taginfo *cgit_parse_tag(struct tag *tag);
254extern void cgit_parse_url(const char *url); 255extern void cgit_parse_url(const char *url);
255 256
256extern const char *cgit_repobasename(const char *reponame); 257extern const char *cgit_repobasename(const char *reponame);
257 258
258extern int cgit_parse_snapshots_mask(const char *str); 259extern int cgit_parse_snapshots_mask(const char *str);
259 260
260extern int cgit_open_filter(struct cgit_filter *filter); 261extern int cgit_open_filter(struct cgit_filter *filter);
261extern int cgit_close_filter(struct cgit_filter *filter); 262extern int cgit_close_filter(struct cgit_filter *filter);
262 263
263 264
264#endif /* CGIT_H */ 265#endif /* CGIT_H */