all repos — cgit @ 9ec5cd7944a7099515b7d41107007d6332a2540e

a hyperfast web frontend for git written in c

ui-blob.c (view raw)

 1/* ui-blob.c: show blob content
 2 *
 3 * Copyright (C) 2008 Lars Hjemli
 4 *
 5 * Licensed under GNU General Public License v2
 6 *   (see COPYING for full license text)
 7 */
 8
 9#include "cgit.h"
10#include "html.h"
11#include "ui-shared.h"
12
13void cgit_print_blob(const char *hex, char *path)
14{
15
16	unsigned char sha1[20];
17	enum object_type type;
18	unsigned char *buf;
19	unsigned long size;
20
21	if (get_sha1_hex(hex, sha1)){
22		cgit_print_error(fmt("Bad hex value: %s", hex));
23	        return;
24	}
25
26	type = sha1_object_info(sha1, &size);
27	if (type == OBJ_BAD) {
28		cgit_print_error(fmt("Bad object name: %s", hex));
29		return;
30	}
31
32	buf = read_sha1_file(sha1, &type, &size);
33	if (!buf) {
34		cgit_print_error(fmt("Error reading object %s", hex));
35		return;
36	}
37
38	buf[size] = '\0';
39	ctx.page.mimetype = NULL;
40	ctx.page.filename = path;
41	cgit_print_http_headers(&ctx);
42	write(htmlfd, buf, size);
43}