aboutsummaryrefslogtreecommitdiff
path: root/ui-view.c
diff refs
from:
to:
flip
diff options
context:
space:
mode:
Diffstat (limited to 'ui-view.c')
-rw-r--r--ui-view.c55
1 files changed, 55 insertions, 0 deletions
diff --git a/ui-view.c b/ui-view.c
new file mode 100644
index 0000000..8873415
--- /dev/null
+++ b/ui-view.c
@@ -0,0 +1,55 @@
+/* ui-view.c: functions to output _any_ object, given it's sha1
+ *
+ * Copyright (C) 2006 Lars Hjemli
+ *
+ * Licensed under GNU General Public License v2
+ * (see COPYING for full license text)
+ */
+
+#include "cgit.h"
+
+void cgit_print_view(const char *hex, char *path)
+{
+ unsigned char sha1[20];
+ enum object_type type;
+ unsigned char *buf;
+ unsigned long size;
+
+ if (get_sha1_hex(hex, sha1)){
+ cgit_print_error(fmt("Bad hex value: %s", hex));
+ return;
+ }
+
+ type = sha1_object_info(sha1, &size);
+ if (type == OBJ_BAD) {
+ cgit_print_error(fmt("Bad object name: %s", hex));
+ return;
+ }
+
+ buf = read_sha1_file(sha1, &type, &size);
+ if (!buf) {
+ cgit_print_error(fmt("Error reading object %s", hex));
+ return;
+ }
+
+ buf[size] = '\0';
+ html("<table class='list'>\n");
+ html("<tr class='nohover'><th class='left'>");
+ if (path)
+ htmlf("%s (", path);
+ htmlf("%s %s, %li bytes", typename(type), hex, size);
+ if (path)
+ html(")");
+
+ html(" <a href='");
+ html_attr(cgit_pageurl(cgit_query_repo, "blob",
+ fmt("id=%s&amp;path=%s",
+ hex,
+ path)));
+ html("'>download</a>");
+ html("</th></tr>\n");
+ html("<tr><td class='blob'>\n");
+ html_txt(buf);
+ html("\n</td></tr>\n");
+ html("</table>\n");
+}