157 |
return buf; |
return buf; |
158 |
} |
} |
159 |
/* |
/* |
160 |
* Generate <hn> ... </hn> tag. |
* Generate header tag. |
|
*/ |
|
|
char * |
|
|
Hn(n, label) |
|
|
int n; |
|
|
char *label; |
|
|
{ |
|
|
static char buf[512]; |
|
|
if (n < 1) |
|
|
n = 1; |
|
|
if (n > 5) |
|
|
n = 5; |
|
|
snprintf(buf, sizeof(buf), "<h%d>%s</h%d>", n, label, n); |
|
|
return buf; |
|
|
} |
|
|
/* |
|
|
* Generate anchor tag. |
|
161 |
*/ |
*/ |
162 |
char * |
char * |
163 |
anchor(label, link) |
set_header(title) |
164 |
char *label; |
char *title; |
|
char *link; |
|
|
{ |
|
|
static char buf[512]; |
|
|
snprintf(buf, sizeof(buf), "<a href='%s'>%s</a>", link, label); |
|
|
return buf; |
|
|
} |
|
|
static STRBUF * |
|
|
edit_buffer() |
|
165 |
{ |
{ |
166 |
static STRBUF *sb = NULL; |
static STRBUF *sb = NULL; |
167 |
|
|
169 |
sb = strbuf_open(0); |
sb = strbuf_open(0); |
170 |
else |
else |
171 |
strbuf_reset(sb); |
strbuf_reset(sb); |
|
return sb; |
|
|
} |
|
|
|
|
|
/* |
|
|
* Generate header tag. |
|
|
*/ |
|
|
char * |
|
|
set_header(title) |
|
|
char *title; |
|
|
{ |
|
|
STRBUF *sb = edit_buffer(); |
|
|
|
|
172 |
strbuf_puts(sb, "<head>\n<title>"); |
strbuf_puts(sb, "<head>\n<title>"); |
173 |
strbuf_puts(sb, title); |
strbuf_puts(sb, title); |
174 |
strbuf_puts(sb, "</title>\n"); |
strbuf_puts(sb, "</title>\n"); |
176 |
if (style_sheet) |
if (style_sheet) |
177 |
strbuf_puts(sb, style_sheet); |
strbuf_puts(sb, style_sheet); |
178 |
strbuf_puts(sb, "</head>\n"); |
strbuf_puts(sb, "</head>\n"); |
179 |
|
|
180 |
return strbuf_value(sb); |
return strbuf_value(sb); |
181 |
} |
} |
182 |
|
|
186 |
char * |
char * |
187 |
gen_list_begin() |
gen_list_begin() |
188 |
{ |
{ |
189 |
STRBUF *sb = edit_buffer(); |
static char buf[1024]; |
190 |
|
|
191 |
if (table_list) { |
if (table_list) { |
192 |
strbuf_puts(sb, table_begin); |
snprintf(buf, sizeof(buf), "%s\n%s%s%s%s", |
193 |
strbuf_putc(sb, '\n'); |
table_begin, |
194 |
strbuf_puts(sb, "<tr><th nowrap align='left'>tag</th>"); |
"<tr><th nowrap align='left'>tag</th>", |
195 |
strbuf_puts(sb, "<th nowrap align='right'>line</th>"); |
"<th nowrap align='right'>line</th>", |
196 |
strbuf_puts(sb, "<th nowrap align='center'>file</th>"); |
"<th nowrap align='center'>file</th>", |
197 |
strbuf_puts(sb, "<th nowrap align='left'>source code</th></tr>"); |
"<th nowrap align='left'>source code</th></tr>"); |
198 |
} else { |
} else { |
199 |
strbuf_puts(sb, "<pre>"); |
strlimcpy(buf, verbatim_begin, sizeof(buf)); |
200 |
} |
} |
201 |
return strbuf_value(sb); |
return buf; |
202 |
} |
} |
203 |
/* |
/* |
204 |
* Generate list body. |
* Generate list body. |
210 |
char *srcdir; |
char *srcdir; |
211 |
char *string; |
char *string; |
212 |
{ |
{ |
213 |
STRBUF *sb = edit_buffer(); |
static STRBUF *sb = NULL; |
214 |
char *name, *lno, *filename, *line, *html; |
char *name, *lno, *filename, *line, *html; |
215 |
char *p; |
char *p; |
216 |
SPLIT ptable; |
SPLIT ptable; |
217 |
|
|
218 |
|
if (sb == NULL) |
219 |
|
sb = strbuf_open(0); |
220 |
|
else |
221 |
|
strbuf_reset(sb); |
222 |
if (split(string, 4, &ptable) < 4) { |
if (split(string, 4, &ptable) < 4) { |
223 |
recover(&ptable); |
recover(&ptable); |
224 |
die("too small number of parts in list_body().\n'%s'", string); |
die("too small number of parts in list_body().\n'%s'", string); |
289 |
char * |
char * |
290 |
gen_list_end() |
gen_list_end() |
291 |
{ |
{ |
292 |
STRBUF *sb = edit_buffer(); |
return table_list ? table_end : verbatim_end; |
|
|
|
|
if (table_list) |
|
|
strbuf_puts(sb, table_end); |
|
|
else |
|
|
strbuf_puts(sb, "</pre>"); |
|
|
return strbuf_value(sb); |
|
293 |
} |
} |
294 |
|
|
295 |
/* |
/* |