]> gitweb.ps.run Git - ps-cgit/blobdiff - ui-view.c
Restrict deep nesting of configfiles
[ps-cgit] / ui-view.c
index 1bf84722b75da0896d2817b635f75e875bc7a4f2..dbe4b29d18dc8f799075d93b88b02662813e903f 100644 (file)
--- a/ui-view.c
+++ b/ui-view.c
@@ -8,10 +8,10 @@
 
 #include "cgit.h"
 
-void cgit_print_view(char *hex)
+void cgit_print_view(const char *hex, char *path)
 {
        unsigned char sha1[20];
-       char type[20];
+       enum object_type type;
        unsigned char *buf;
        unsigned long size;
 
@@ -20,21 +20,36 @@ void cgit_print_view(char *hex)
                return;
        }
 
-       if (sha1_object_info(sha1, type, &size)){
-               cgit_print_error("Bad object name");
+       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);
+       buf = read_sha1_file(sha1, &type, &size);
        if (!buf) {
-               cgit_print_error("Error reading object");
+               cgit_print_error(fmt("Error reading object %s", hex));
                return;
        }
 
        buf[size] = '\0';
-       html("<h2>Object view</h2>");
-       htmlf("sha1=%s<br/>type=%s<br/>size=%i<br/>", hex, type, size);
-       html("<pre>");
+       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&path=%s", 
+                                  hex,
+                                  path)));
+       html("'>download</a>");
+       html("</th></tr>\n");
+       html("<tr><td class='blob'>\n");
        html_txt(buf);
-       html("</pre>");
+       html("\n</td></tr>\n");
+       html("</table>\n");
 }