static void diff_fn(struct cgit_context *ctx)
{
- cgit_print_diff(ctx->qry.sha1, ctx->qry.sha2, ctx->qry.path, 1);
+ cgit_print_diff(ctx->qry.sha1, ctx->qry.sha2, ctx->qry.path, 1, 0);
}
static void info_fn(struct cgit_context *ctx)
tmp = sha1_to_hex(commit->parents->item->object.sha1);
else
tmp = NULL;
- cgit_print_diff(ctx.qry.sha1, tmp, prefix, 0);
+ cgit_print_diff(ctx.qry.sha1, tmp, prefix, 0, 0);
}
strbuf_release(¬es);
cgit_free_commitinfo(info);
}
void cgit_print_diff(const char *new_rev, const char *old_rev,
- const char *prefix, int show_ctrls)
+ const char *prefix, int show_ctrls, int raw)
{
enum object_type type;
unsigned long size;
}
}
+ if (raw) {
+ ctx.page.mimetype = "text/plain";
+ cgit_print_http_headers(&ctx);
+ cgit_diff_tree(old_rev_sha1, new_rev_sha1, filepair_cb_raw,
+ prefix, 0);
+ return;
+ }
+
use_ssdiff = ctx.qry.has_ssdiff ? ctx.qry.ssdiff : ctx.cfg.ssdiff;
if (show_ctrls)
extern void cgit_print_diff_ctrls();
extern void cgit_print_diff(const char *new_hex, const char *old_hex,
- const char *prefix, int show_ctrls);
+ const char *prefix, int show_ctrls, int raw);
extern struct diff_filespec *cgit_get_current_old_file(void);
extern struct diff_filespec *cgit_get_current_new_file(void);