summaryrefslogtreecommitdiffabout
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--cgit.c2
-rw-r--r--cgit.h1
-rw-r--r--ui-blob.c2
3 files changed, 4 insertions, 1 deletions
diff --git a/cgit.c b/cgit.c
index ac882c3..0deae12 100644
--- a/cgit.c
+++ b/cgit.c
@@ -141,12 +141,14 @@ static void querystring_cb(const char *name, const char *value)
} else if (!strcmp(name, "ofs")) {
ctx.qry.ofs = atoi(value);
} else if (!strcmp(name, "path")) {
ctx.qry.path = trim_end(value, '/');
} else if (!strcmp(name, "name")) {
ctx.qry.name = xstrdup(value);
+ } else if (!strcmp(name, "mimetype")) {
+ ctx.qry.mimetype = xstrdup(value);
}
}
static void prepare_context(struct cgit_context *ctx)
{
memset(ctx, 0, sizeof(ctx));
diff --git a/cgit.h b/cgit.h
index 4fa5cf2..1972d75 100644
--- a/cgit.h
+++ b/cgit.h
@@ -113,12 +113,13 @@ struct cgit_query {
char *grep;
char *head;
char *sha1;
char *sha2;
char *path;
char *name;
+ char *mimetype;
int ofs;
};
struct cgit_config {
char *agefile;
char *cache_root;
diff --git a/ui-blob.c b/ui-blob.c
index dd1bbce..73a8c1d 100644
--- a/ui-blob.c
+++ b/ui-blob.c
@@ -62,11 +62,11 @@ void cgit_print_blob(const char *hex, char *path, const char *head)
if (!buf) {
cgit_print_error(fmt("Error reading object %s", hex));
return;
}
buf[size] = '\0';
- ctx.page.mimetype = NULL;
+ ctx.page.mimetype = ctx.qry.mimetype;
ctx.page.filename = path;
cgit_print_http_headers(&ctx);
write(htmlfd, buf, size);
}