diff options
| author | Lars Hjemli <hjemli@gmail.com> | 2009-08-09 13:45:36 +0200 | 
|---|---|---|
| committer | Lars Hjemli <hjemli@gmail.com> | 2009-08-09 13:45:36 +0200 | 
| commit | 17e3ff42646f182911fd0e5d872082977538db9e (patch) | |
| tree | 6fedf480751b534ac11066dd143fd0589cad284a /ui-plain.c | |
| parent | Expose file extension in tree lists as class to allow nicer tree styling (diff) | |
| parent | Add support for mime type registration and lookup (diff) | |
| download | cgit-17e3ff42646f182911fd0e5d872082977538db9e.tar.gz cgit-17e3ff42646f182911fd0e5d872082977538db9e.tar.bz2 cgit-17e3ff42646f182911fd0e5d872082977538db9e.zip | |
Merge branch 'lh/mimetypes'
Diffstat (limited to '')
| -rw-r--r-- | ui-plain.c | 20 | 
1 files changed, 15 insertions, 5 deletions
| @@ -17,8 +17,9 @@ int match;  static void print_object(const unsigned char *sha1, const char *path)  {  	enum object_type type; -	char *buf; +	char *buf, *ext;  	unsigned long size; +	struct string_list_item *mime;  	type = sha1_object_info(sha1, &size);  	if (type == OBJ_BAD) { @@ -31,10 +32,19 @@ static void print_object(const unsigned char *sha1, const char *path)  		html_status(404, "Not found", 0);  		return;  	} -	if (buffer_is_binary(buf, size)) -		ctx.page.mimetype = "application/octet-stream"; -	else -		ctx.page.mimetype = "text/plain"; +	ctx.page.mimetype = NULL; +	ext = strrchr(path, '.'); +	if (ext && *(++ext)) { +		mime = string_list_lookup(ext, &ctx.cfg.mimetypes); +		if (mime) +			ctx.page.mimetype = (char *)mime->util; +	} +	if (!ctx.page.mimetype) { +		if (buffer_is_binary(buf, size)) +			ctx.page.mimetype = "application/octet-stream"; +		else +			ctx.page.mimetype = "text/plain"; +	}  	ctx.page.filename = fmt("%s", path);  	ctx.page.size = size;  	ctx.page.etag = sha1_to_hex(sha1); | 
