- if(get_sha1(hex, sha1)) {
- cgit_print_error(fmt("Bad object id: %s", hex));
- return;
- }
- commit = lookup_commit_reference(sha1);
+ if(get_sha1(hex, sha1)) {
+ cgit_print_error(fmt("Bad object id: %s", hex));
+ return 1;
+ }
+ commit = lookup_commit_reference(sha1);
+ if(!commit) {
+ cgit_print_error(fmt("Not a commit reference: %s", hex));
+ return 1;
+ }
+ memset(&args, 0, sizeof(args));
+ if (prefix) {
+ args.base = fmt("%s/", prefix);
+ args.baselen = strlen(prefix) + 1;
+ } else {
+ args.base = "";
+ args.baselen = 0;
+ }
+ args.tree = commit->tree;
+ args.time = commit->date;
+ args.compression_level = Z_DEFAULT_COMPRESSION;
+ ctx.page.mimetype = xstrdup(format->mimetype);
+ ctx.page.filename = xstrdup(filename);
+ cgit_print_http_headers(&ctx);
+ format->write_func(&args);
+ return 0;
+}