summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Hjemli <hjemli@gmail.com>2007-05-20 12:33:59 +0000
committerLars Hjemli <hjemli@gmail.com>2007-05-20 12:33:59 +0000
commit977a0b173df6fe1a4d362fe4c70f9badff1fd46c (patch)
tree8bd383fff396bb1790c03ab5b461d899af997568
parentd4dbfdfbaea3aa93e824ea484787de10e73eae65 (diff)
parentde69ce020c4ccd7146d6ac72bbd8f417088e8c03 (diff)
downloadcgit-977a0b173df6fe1a4d362fe4c70f9badff1fd46c.tar
cgit-977a0b173df6fe1a4d362fe4c70f9badff1fd46c.tar.gz
cgit-977a0b173df6fe1a4d362fe4c70f9badff1fd46c.zip
Merge branch 'index-header'
* index-header: Teach cgit howto include an external file on index page. Add html_include()
-rw-r--r--cgit.h2
-rw-r--r--html.c14
-rw-r--r--shared.c3
-rw-r--r--ui-repolist.c5
4 files changed, 24 insertions, 0 deletions
diff --git a/cgit.h b/cgit.h
index f3d783e..3ee11bb 100644
--- a/cgit.h
+++ b/cgit.h
@@ -75,6 +75,7 @@ extern struct repoinfo *cgit_repo;
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 175b4b6..33a956f 100644
--- a/html.c
+++ b/html.c
@@ -166,3 +166,17 @@ void html_filemode(unsigned short mode)
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 53cd9b0..54b1813 100644
--- a/shared.c
+++ b/shared.c
@@ -14,6 +14,7 @@ struct repoinfo *cgit_repo;
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 @@ void cgit_global_config_cb(const char *name, const char *value)
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 d7311e4..8e367a2 100644
--- a/ui-repolist.c
+++ b/ui-repolist.c
@@ -17,6 +17,11 @@ void cgit_print_repolist(struct cacheitem *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>"