summaryrefslogtreecommitdiffabout
authorLars Hjemli <hjemli@gmail.com>2007-05-18 21:56:10 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2007-05-18 21:56:10 (UTC)
commit5e75128a8bee885d83563d8c521172328d511d12 (patch) (unidiff)
tree39e32199b06b6e68782040d5c2a46162fb0cf771
parent08cc2e5f0e24773dad81d38bd6b689e36afe9dda (diff)
downloadcgit-5e75128a8bee885d83563d8c521172328d511d12.zip
cgit-5e75128a8bee885d83563d8c521172328d511d12.tar.gz
cgit-5e75128a8bee885d83563d8c521172328d511d12.tar.bz2
Add html_include()
This is a function used to include external htmlfiles in cgit- generated pages. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--cgit.h1
-rw-r--r--html.c14
2 files changed, 15 insertions, 0 deletions
diff --git a/cgit.h b/cgit.h
index f3d783e..fc44a71 100644
--- a/cgit.h
+++ b/cgit.h
@@ -115,64 +115,65 @@ extern int htmlfd;
115extern void cgit_global_config_cb(const char *name, const char *value); 115extern void cgit_global_config_cb(const char *name, const char *value);
116extern void cgit_repo_config_cb(const char *name, const char *value); 116extern void cgit_repo_config_cb(const char *name, const char *value);
117extern void cgit_querystring_cb(const char *name, const char *value); 117extern void cgit_querystring_cb(const char *name, const char *value);
118 118
119extern int chk_zero(int result, char *msg); 119extern int chk_zero(int result, char *msg);
120extern int chk_positive(int result, char *msg); 120extern int chk_positive(int result, char *msg);
121 121
122extern int hextoint(char c); 122extern int hextoint(char c);
123 123
124extern void *cgit_free_commitinfo(struct commitinfo *info); 124extern void *cgit_free_commitinfo(struct commitinfo *info);
125 125
126extern int cgit_diff_files(const unsigned char *old_sha1, 126extern int cgit_diff_files(const unsigned char *old_sha1,
127 const unsigned char *new_sha1, 127 const unsigned char *new_sha1,
128 linediff_fn fn); 128 linediff_fn fn);
129 129
130extern void cgit_diff_tree(const unsigned char *old_sha1, 130extern void cgit_diff_tree(const unsigned char *old_sha1,
131 const unsigned char *new_sha1, 131 const unsigned char *new_sha1,
132 filepair_fn fn); 132 filepair_fn fn);
133 133
134extern void cgit_diff_commit(struct commit *commit, filepair_fn fn); 134extern void cgit_diff_commit(struct commit *commit, filepair_fn fn);
135 135
136extern char *fmt(const char *format,...); 136extern char *fmt(const char *format,...);
137 137
138extern void html(const char *txt); 138extern void html(const char *txt);
139extern void htmlf(const char *format,...); 139extern void htmlf(const char *format,...);
140extern void html_txt(char *txt); 140extern void html_txt(char *txt);
141extern void html_ntxt(int len, char *txt); 141extern void html_ntxt(int len, char *txt);
142extern void html_attr(char *txt); 142extern void html_attr(char *txt);
143extern void html_hidden(char *name, char *value); 143extern void html_hidden(char *name, char *value);
144extern void html_link_open(char *url, char *title, char *class); 144extern void html_link_open(char *url, char *title, char *class);
145extern void html_link_close(void); 145extern void html_link_close(void);
146extern void html_filemode(unsigned short mode); 146extern void html_filemode(unsigned short mode);
147extern int html_include(const char *filename);
147 148
148extern int cgit_read_config(const char *filename, configfn fn); 149extern int cgit_read_config(const char *filename, configfn fn);
149extern int cgit_parse_query(char *txt, configfn fn); 150extern int cgit_parse_query(char *txt, configfn fn);
150extern struct commitinfo *cgit_parse_commit(struct commit *commit); 151extern struct commitinfo *cgit_parse_commit(struct commit *commit);
151extern struct taginfo *cgit_parse_tag(struct tag *tag); 152extern struct taginfo *cgit_parse_tag(struct tag *tag);
152 153
153extern char *cache_safe_filename(const char *unsafe); 154extern char *cache_safe_filename(const char *unsafe);
154extern int cache_lock(struct cacheitem *item); 155extern int cache_lock(struct cacheitem *item);
155extern int cache_unlock(struct cacheitem *item); 156extern int cache_unlock(struct cacheitem *item);
156extern int cache_cancel_lock(struct cacheitem *item); 157extern int cache_cancel_lock(struct cacheitem *item);
157extern int cache_exist(struct cacheitem *item); 158extern int cache_exist(struct cacheitem *item);
158extern int cache_expired(struct cacheitem *item); 159extern int cache_expired(struct cacheitem *item);
159 160
160extern char *cgit_repourl(const char *reponame); 161extern char *cgit_repourl(const char *reponame);
161extern char *cgit_pageurl(const char *reponame, const char *pagename, 162extern char *cgit_pageurl(const char *reponame, const char *pagename,
162 const char *query); 163 const char *query);
163 164
164extern void cgit_print_error(char *msg); 165extern void cgit_print_error(char *msg);
165extern void cgit_print_date(unsigned long secs); 166extern void cgit_print_date(unsigned long secs);
166extern void cgit_print_docstart(char *title, struct cacheitem *item); 167extern void cgit_print_docstart(char *title, struct cacheitem *item);
167extern void cgit_print_docend(); 168extern void cgit_print_docend();
168extern void cgit_print_pageheader(char *title, int show_search); 169extern void cgit_print_pageheader(char *title, int show_search);
169extern void cgit_print_snapshot_start(const char *mimetype, 170extern void cgit_print_snapshot_start(const char *mimetype,
170 const char *filename, 171 const char *filename,
171 struct cacheitem *item); 172 struct cacheitem *item);
172 173
173extern void cgit_print_repolist(struct cacheitem *item); 174extern void cgit_print_repolist(struct cacheitem *item);
174extern void cgit_print_summary(); 175extern void cgit_print_summary();
175extern void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *path); 176extern void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *path);
176extern void cgit_print_view(const char *hex, char *path); 177extern void cgit_print_view(const char *hex, char *path);
177extern void cgit_print_blob(struct cacheitem *item, const char *hex, char *path); 178extern void cgit_print_blob(struct cacheitem *item, const char *hex, char *path);
178extern void cgit_print_tree(const char *rev, const char *hex, char *path); 179extern void cgit_print_tree(const char *rev, const char *hex, char *path);
diff --git a/html.c b/html.c
index 175b4b6..33a956f 100644
--- a/html.c
+++ b/html.c
@@ -137,32 +137,46 @@ void html_link_open(char *url, char *title, char *class)
137 if (class) { 137 if (class) {
138 html("' class='"); 138 html("' class='");
139 html_attr(class); 139 html_attr(class);
140 } 140 }
141 html("'>"); 141 html("'>");
142} 142}
143 143
144void html_link_close(void) 144void html_link_close(void)
145{ 145{
146 html("</a>"); 146 html("</a>");
147} 147}
148 148
149void html_fileperm(unsigned short mode) 149void html_fileperm(unsigned short mode)
150{ 150{
151 htmlf("%c%c%c", (mode & 4 ? 'r' : '-'), 151 htmlf("%c%c%c", (mode & 4 ? 'r' : '-'),
152 (mode & 2 ? 'w' : '-'), (mode & 1 ? 'x' : '-')); 152 (mode & 2 ? 'w' : '-'), (mode & 1 ? 'x' : '-'));
153} 153}
154 154
155void html_filemode(unsigned short mode) 155void html_filemode(unsigned short mode)
156{ 156{
157 if (S_ISDIR(mode)) 157 if (S_ISDIR(mode))
158 html("d"); 158 html("d");
159 else if (S_ISLNK(mode)) 159 else if (S_ISLNK(mode))
160 html("l"); 160 html("l");
161 else if (S_ISDIRLNK(mode)) 161 else if (S_ISDIRLNK(mode))
162 html("m"); 162 html("m");
163 else 163 else
164 html("-"); 164 html("-");
165 html_fileperm(mode >> 6); 165 html_fileperm(mode >> 6);
166 html_fileperm(mode >> 3); 166 html_fileperm(mode >> 3);
167 html_fileperm(mode); 167 html_fileperm(mode);
168} 168}
169
170int html_include(const char *filename)
171{
172 FILE *f;
173 char buf[4096];
174 size_t len;
175
176 if (!(f = fopen(filename, "r")))
177 return -1;
178 while((len = fread(buf, 1, 4096, f)) > 0)
179 write(htmlfd, buf, len);
180 fclose(f);
181 return 0;
182}