first crude blob display
authorChristian Thaeter <ct@pipapo.org>
Thu, 3 Jan 2008 20:49:36 +0000 (21:49 +0100)
committerChristian Thaeter <ct@pipapo.org>
Thu, 3 Jan 2008 20:49:36 +0000 (21:49 +0100)
src/actions.c
src/object.c

index 434adb9..5656dec 100644 (file)
@@ -144,9 +144,7 @@ ctgit_object_action (struct ctgit_query* query)
     case OBJ_TREE:
       return ctgit_object_tree_action (query, sha1);
     case OBJ_BLOB:
-      return html ("its a blob");
-
-      break;
+      return ctgit_object_blob_action (query, sha1);
     case OBJ_TAG:
       return html ("its a tag");
 
index 8ea886f..9944d7c 100644 (file)
@@ -364,6 +364,45 @@ ctgit_object_tree_action (struct ctgit_query* query, unsigned char* sha1)
               );
 }
 
+/*
+  Display blobs
+*/
+
+static Html
+ctgit_object_blob_menu_action (struct ctgit_query* query, unsigned char* sha1, void* buf, unsigned long size)
+{
+  return html ("TODO: blob-object sidebar");
+}
+
+static Html
+ctgit_object_blob_content_action (struct ctgit_query* query, unsigned char* sha1, void* buf, unsigned long size)
+{
+  if (!memchr(buf, 0, size>8192 ? 8192 : size))
+    {
+      return html (html_tag ("pre"), html_strndup (buf, size));
+    }
+  else
+    {
+      return html ("binary blob");
+    }
+}
+
+
+Html
+ctgit_object_blob_action (struct ctgit_query* query, unsigned char* sha1)
+{
+  void* buf;
+  unsigned long size;
+
+  buf = read_object_with_reference (sha1, "blob", &size, NULL);
+
+  return html(
+              html(html_tag("div"), ctgit_object_blob_menu_action (query, sha1, buf, size)), html_nl (),
+              html(html_tag("div"), ctgit_object_blob_content_action (query, sha1, buf, size)), html_nl ()
+              );
+}
+
+