cgit

commit 977a0b173df6fe1a4d362fe4c70f9badff1fd46c

Author: Lars Hjemli <hjemli@gmail.com>

Merge branch 'index-header'

* index-header:
  Teach cgit howto include an external file on index page.
  Add html_include()

 cgit.h | 2 ++
 html.c | 14 ++++++++++++++
 shared.c | 3 +++
 ui-repolist.c | 5 +++++


diff --git a/cgit.h b/cgit.h
index f3d783e553704ffbab9ee1f8bcde346b8259531f..3ee11bb3985607afcb28df6df653c6cdb318e5d3 100644
--- a/cgit.h
+++ b/cgit.h
@@ -75,6 +75,7 @@
 extern char *cgit_root_title;
 extern char *cgit_css;
 extern char *cgit_logo;
+extern char *cgit_index_header;
 extern char *cgit_logo_link;
 extern char *cgit_module_link;
 extern char *cgit_virtual_root;
@@ -144,6 +145,7 @@ extern void html_hidden(char *name, char *value);
 extern void html_link_open(char *url, char *title, char *class);
 extern void html_link_close(void);
 extern void html_filemode(unsigned short mode);
+extern int html_include(const char *filename);
 
 extern int cgit_read_config(const char *filename, configfn fn);
 extern int cgit_parse_query(char *txt, configfn fn);




diff --git a/html.c b/html.c
index 175b4b687efb75d443b847738775a1de92e97cf6..33a956fd5db8140eed9c1a237d3db31337d76918 100644
--- a/html.c
+++ b/html.c
@@ -166,3 +166,17 @@ 	html_fileperm(mode >> 6);
 	html_fileperm(mode >> 3);
 	html_fileperm(mode);
 }
+
+int html_include(const char *filename)
+{
+	FILE *f;
+	char buf[4096];
+	size_t len;
+
+	if (!(f = fopen(filename, "r")))
+		return -1;
+	while((len = fread(buf, 1, 4096, f)) > 0)
+		write(htmlfd, buf, len);
+	fclose(f);
+	return 0;
+}




diff --git a/shared.c b/shared.c
index 53cd9b0a11188336620729e39bbc354c14836676..54b1813a882806c67b5afe9422fdae51737cd665 100644
--- a/shared.c
+++ b/shared.c
@@ -14,6 +14,7 @@
 char *cgit_root_title   = "Git repository browser";
 char *cgit_css          = "/cgit.css";
 char *cgit_logo         = "/git-logo.png";
+char *cgit_index_header = NULL;
 char *cgit_logo_link    = "http://www.kernel.org/pub/software/scm/git/docs/";
 char *cgit_module_link  = "./?repo=%s&page=commit&id=%s";
 char *cgit_virtual_root = NULL;
@@ -101,6 +102,8 @@ 	else if (!strcmp(name, "css"))
 		cgit_css = xstrdup(value);
 	else if (!strcmp(name, "logo"))
 		cgit_logo = xstrdup(value);
+	else if (!strcmp(name, "index-header"))
+		cgit_index_header = xstrdup(value);
 	else if (!strcmp(name, "logo-link"))
 		cgit_logo_link = xstrdup(value);
 	else if (!strcmp(name, "module-link"))




diff --git a/ui-repolist.c b/ui-repolist.c
index d7311e4d492768c689d7a35196dfe45108b23d74..8e367a2e34e386944bf9b2915c68945f1f886acb 100644
--- a/ui-repolist.c
+++ b/ui-repolist.c
@@ -17,6 +17,11 @@ 	cgit_print_docstart(cgit_root_title, item);
 	cgit_print_pageheader(cgit_root_title, 0);
 
 	html("<table class='list nowrap'>");
+	if (cgit_index_header) {
+		html("<tr class='nohover'><td colspan='4' class='include-block'>");
+		html_include(cgit_index_header);
+		html("</td></tr>");
+	}
 	html("<tr class='nohover'>"
 	     "<th class='left'>Name</th>"
 	     "<th class='left'>Description</th>"