summaryrefslogtreecommitdiffabout
path: root/ui-blob.c
authorLars Hjemli <larsh@hatman.(none)>2008-07-21 08:10:48 (UTC)
committer Lars Hjemli <larsh@hatman.(none)>2008-07-21 08:10:48 (UTC)
commit566f92b27618f67f59cc3642e17d9cb9c12634fa (patch) (side-by-side diff)
tree3945996da0cce9a348a803d91c87df4e303c178b /ui-blob.c
parentd2eb4fddb0fb7cd1751debcff6fe1219b9c619c8 (diff)
downloadcgit-566f92b27618f67f59cc3642e17d9cb9c12634fa.zip
cgit-566f92b27618f67f59cc3642e17d9cb9c12634fa.tar.gz
cgit-566f92b27618f67f59cc3642e17d9cb9c12634fa.tar.bz2
Adjust to new calling convention for read_tree_recursive()
In GIT-1.6.0, read_tree_recursive takes an extra void pointer for callback data. We might want to use this to avoid some global variables, but for now lets just make sure that we can still compile. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (limited to 'ui-blob.c') (more/less context) (show whitespace changes)
-rw-r--r--ui-blob.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/ui-blob.c b/ui-blob.c
index 73a8c1d..3cda03d 100644
--- a/ui-blob.c
+++ b/ui-blob.c
@@ -1,72 +1,73 @@
/* ui-blob.c: show blob content
*
* Copyright (C) 2008 Lars Hjemli
*
* Licensed under GNU General Public License v2
* (see COPYING for full license text)
*/
#include "cgit.h"
#include "html.h"
#include "ui-shared.h"
static char *match_path;
static unsigned char *matched_sha1;
-static int walk_tree(const unsigned char *sha1, const char *base,int baselen, const char *pathname, unsigned mode, int stage) {
+static int walk_tree(const unsigned char *sha1, const char *base,int baselen,
+ const char *pathname, unsigned mode, int stage, void *cbdata) {
if(strncmp(base,match_path,baselen)
|| strcmp(match_path+baselen,pathname) )
return READ_TREE_RECURSIVE;
memmove(matched_sha1,sha1,20);
return 0;
}
void cgit_print_blob(const char *hex, char *path, const char *head)
{
unsigned char sha1[20];
enum object_type type;
unsigned char *buf;
unsigned long size;
struct commit *commit;
const char *paths[] = {path, NULL};
if (hex) {
if (get_sha1_hex(hex, sha1)){
cgit_print_error(fmt("Bad hex value: %s", hex));
return;
}
} else {
if (get_sha1(head,sha1)) {
cgit_print_error(fmt("Bad ref: %s", head));
return;
}
}
type = sha1_object_info(sha1, &size);
if((!hex) && type == OBJ_COMMIT && path) {
commit = lookup_commit_reference(sha1);
match_path = path;
matched_sha1 = sha1;
- read_tree_recursive(commit->tree, NULL, 0, 0, paths, walk_tree);
+ read_tree_recursive(commit->tree, NULL, 0, 0, paths, walk_tree, NULL);
type = sha1_object_info(sha1,&size);
}
if (type == OBJ_BAD) {
cgit_print_error(fmt("Bad object name: %s", hex));
return;
}
buf = read_sha1_file(sha1, &type, &size);
if (!buf) {
cgit_print_error(fmt("Error reading object %s", hex));
return;
}
buf[size] = '\0';
ctx.page.mimetype = ctx.qry.mimetype;
ctx.page.filename = path;
cgit_print_http_headers(&ctx);
write(htmlfd, buf, size);
}