summaryrefslogtreecommitdiffabout
path: root/cgit.c
authorLars Hjemli <hjemli@gmail.com>2009-02-19 21:38:36 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2009-02-19 21:38:36 (UTC)
commit488a214a81a25c6397c56822ed1713f51dddc520 (patch) (unidiff)
tree93b3be74f6c7b3ae6557a9d3c5c2856ff5efe8ed /cgit.c
parent6063e7b5532481ffaa7a6f080de28547983bbeb7 (diff)
downloadcgit-488a214a81a25c6397c56822ed1713f51dddc520.zip
cgit-488a214a81a25c6397c56822ed1713f51dddc520.tar.gz
cgit-488a214a81a25c6397c56822ed1713f51dddc520.tar.bz2
Add support for ETag in 'plain' view
When downloading a blob identified by its path, the client might want to know if the blob has been modified since a previous download of the same path. To this end, an ETag containing the blob SHA1 seems to be ideal. Todo: add support for HEAD requests... Suggested-by: Owen Taylor <otaylor@redhat.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (limited to 'cgit.c') (more/less context) (ignore whitespace changes)
-rw-r--r--cgit.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/cgit.c b/cgit.c
index 64d95f9..411e421 100644
--- a/cgit.c
+++ b/cgit.c
@@ -197,24 +197,25 @@ static void prepare_context(struct cgit_context *ctx)
197 ctx->cfg.root_title = "Git repository browser"; 197 ctx->cfg.root_title = "Git repository browser";
198 ctx->cfg.root_desc = "a fast webinterface for the git dscm"; 198 ctx->cfg.root_desc = "a fast webinterface for the git dscm";
199 ctx->cfg.script_name = CGIT_SCRIPT_NAME; 199 ctx->cfg.script_name = CGIT_SCRIPT_NAME;
200 ctx->cfg.summary_branches = 10; 200 ctx->cfg.summary_branches = 10;
201 ctx->cfg.summary_log = 10; 201 ctx->cfg.summary_log = 10;
202 ctx->cfg.summary_tags = 10; 202 ctx->cfg.summary_tags = 10;
203 ctx->page.mimetype = "text/html"; 203 ctx->page.mimetype = "text/html";
204 ctx->page.charset = PAGE_ENCODING; 204 ctx->page.charset = PAGE_ENCODING;
205 ctx->page.filename = NULL; 205 ctx->page.filename = NULL;
206 ctx->page.size = 0; 206 ctx->page.size = 0;
207 ctx->page.modified = time(NULL); 207 ctx->page.modified = time(NULL);
208 ctx->page.expires = ctx->page.modified; 208 ctx->page.expires = ctx->page.modified;
209 ctx->page.etag = NULL;
209} 210}
210 211
211struct refmatch { 212struct refmatch {
212 char *req_ref; 213 char *req_ref;
213 char *first_ref; 214 char *first_ref;
214 int match; 215 int match;
215}; 216};
216 217
217int find_current_ref(const char *refname, const unsigned char *sha1, 218int find_current_ref(const char *refname, const unsigned char *sha1,
218 int flags, void *cb_data) 219 int flags, void *cb_data)
219{ 220{
220 struct refmatch *info; 221 struct refmatch *info;