author | Lars Hjemli <hjemli@gmail.com> | 2007-05-18 21:56:10 (UTC) |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2007-05-18 21:56:10 (UTC) |
commit | 5e75128a8bee885d83563d8c521172328d511d12 (patch) (unidiff) | |
tree | 39e32199b06b6e68782040d5c2a46162fb0cf771 | |
parent | 08cc2e5f0e24773dad81d38bd6b689e36afe9dda (diff) | |
download | cgit-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>
-rw-r--r-- | cgit.h | 1 | ||||
-rw-r--r-- | html.c | 14 |
2 files changed, 15 insertions, 0 deletions
@@ -115,64 +115,65 @@ extern int htmlfd; | |||
115 | extern void cgit_global_config_cb(const char *name, const char *value); | 115 | extern void cgit_global_config_cb(const char *name, const char *value); |
116 | extern void cgit_repo_config_cb(const char *name, const char *value); | 116 | extern void cgit_repo_config_cb(const char *name, const char *value); |
117 | extern void cgit_querystring_cb(const char *name, const char *value); | 117 | extern void cgit_querystring_cb(const char *name, const char *value); |
118 | 118 | ||
119 | extern int chk_zero(int result, char *msg); | 119 | extern int chk_zero(int result, char *msg); |
120 | extern int chk_positive(int result, char *msg); | 120 | extern int chk_positive(int result, char *msg); |
121 | 121 | ||
122 | extern int hextoint(char c); | 122 | extern int hextoint(char c); |
123 | 123 | ||
124 | extern void *cgit_free_commitinfo(struct commitinfo *info); | 124 | extern void *cgit_free_commitinfo(struct commitinfo *info); |
125 | 125 | ||
126 | extern int cgit_diff_files(const unsigned char *old_sha1, | 126 | extern 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 | ||
130 | extern void cgit_diff_tree(const unsigned char *old_sha1, | 130 | extern 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 | ||
134 | extern void cgit_diff_commit(struct commit *commit, filepair_fn fn); | 134 | extern void cgit_diff_commit(struct commit *commit, filepair_fn fn); |
135 | 135 | ||
136 | extern char *fmt(const char *format,...); | 136 | extern char *fmt(const char *format,...); |
137 | 137 | ||
138 | extern void html(const char *txt); | 138 | extern void html(const char *txt); |
139 | extern void htmlf(const char *format,...); | 139 | extern void htmlf(const char *format,...); |
140 | extern void html_txt(char *txt); | 140 | extern void html_txt(char *txt); |
141 | extern void html_ntxt(int len, char *txt); | 141 | extern void html_ntxt(int len, char *txt); |
142 | extern void html_attr(char *txt); | 142 | extern void html_attr(char *txt); |
143 | extern void html_hidden(char *name, char *value); | 143 | extern void html_hidden(char *name, char *value); |
144 | extern void html_link_open(char *url, char *title, char *class); | 144 | extern void html_link_open(char *url, char *title, char *class); |
145 | extern void html_link_close(void); | 145 | extern void html_link_close(void); |
146 | extern void html_filemode(unsigned short mode); | 146 | extern void html_filemode(unsigned short mode); |
147 | extern int html_include(const char *filename); | ||
147 | 148 | ||
148 | extern int cgit_read_config(const char *filename, configfn fn); | 149 | extern int cgit_read_config(const char *filename, configfn fn); |
149 | extern int cgit_parse_query(char *txt, configfn fn); | 150 | extern int cgit_parse_query(char *txt, configfn fn); |
150 | extern struct commitinfo *cgit_parse_commit(struct commit *commit); | 151 | extern struct commitinfo *cgit_parse_commit(struct commit *commit); |
151 | extern struct taginfo *cgit_parse_tag(struct tag *tag); | 152 | extern struct taginfo *cgit_parse_tag(struct tag *tag); |
152 | 153 | ||
153 | extern char *cache_safe_filename(const char *unsafe); | 154 | extern char *cache_safe_filename(const char *unsafe); |
154 | extern int cache_lock(struct cacheitem *item); | 155 | extern int cache_lock(struct cacheitem *item); |
155 | extern int cache_unlock(struct cacheitem *item); | 156 | extern int cache_unlock(struct cacheitem *item); |
156 | extern int cache_cancel_lock(struct cacheitem *item); | 157 | extern int cache_cancel_lock(struct cacheitem *item); |
157 | extern int cache_exist(struct cacheitem *item); | 158 | extern int cache_exist(struct cacheitem *item); |
158 | extern int cache_expired(struct cacheitem *item); | 159 | extern int cache_expired(struct cacheitem *item); |
159 | 160 | ||
160 | extern char *cgit_repourl(const char *reponame); | 161 | extern char *cgit_repourl(const char *reponame); |
161 | extern char *cgit_pageurl(const char *reponame, const char *pagename, | 162 | extern char *cgit_pageurl(const char *reponame, const char *pagename, |
162 | const char *query); | 163 | const char *query); |
163 | 164 | ||
164 | extern void cgit_print_error(char *msg); | 165 | extern void cgit_print_error(char *msg); |
165 | extern void cgit_print_date(unsigned long secs); | 166 | extern void cgit_print_date(unsigned long secs); |
166 | extern void cgit_print_docstart(char *title, struct cacheitem *item); | 167 | extern void cgit_print_docstart(char *title, struct cacheitem *item); |
167 | extern void cgit_print_docend(); | 168 | extern void cgit_print_docend(); |
168 | extern void cgit_print_pageheader(char *title, int show_search); | 169 | extern void cgit_print_pageheader(char *title, int show_search); |
169 | extern void cgit_print_snapshot_start(const char *mimetype, | 170 | extern 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 | ||
173 | extern void cgit_print_repolist(struct cacheitem *item); | 174 | extern void cgit_print_repolist(struct cacheitem *item); |
174 | extern void cgit_print_summary(); | 175 | extern void cgit_print_summary(); |
175 | extern void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *path); | 176 | extern void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *path); |
176 | extern void cgit_print_view(const char *hex, char *path); | 177 | extern void cgit_print_view(const char *hex, char *path); |
177 | extern void cgit_print_blob(struct cacheitem *item, const char *hex, char *path); | 178 | extern void cgit_print_blob(struct cacheitem *item, const char *hex, char *path); |
178 | extern void cgit_print_tree(const char *rev, const char *hex, char *path); | 179 | extern void cgit_print_tree(const char *rev, const char *hex, char *path); |
@@ -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 | ||
144 | void html_link_close(void) | 144 | void html_link_close(void) |
145 | { | 145 | { |
146 | html("</a>"); | 146 | html("</a>"); |
147 | } | 147 | } |
148 | 148 | ||
149 | void html_fileperm(unsigned short mode) | 149 | void 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 | ||
155 | void html_filemode(unsigned short mode) | 155 | void 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 | |||
170 | int 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 | } | ||