diff options
| author | Lars Hjemli <hjemli@gmail.com> | 2006-12-09 15:18:17 +0100 | 
|---|---|---|
| committer | Lars Hjemli <hjemli@gmail.com> | 2006-12-09 15:18:17 +0100 | 
| commit | 0d169ada2ba81210ab1191a5f2212662e90db77e (patch) | |
| tree | 402b54583db269323ebb28e5fbf2075c4c1b3d85 /html.c | |
| download | cgit-0d169ada2ba81210ab1191a5f2212662e90db77e.tar.gz cgit-0d169ada2ba81210ab1191a5f2212662e90db77e.tar.bz2 cgit-0d169ada2ba81210ab1191a5f2212662e90db77e.zip  | |
Import cgit prototype from git tree
This enables basic cgit functionality, using libgit.a and xdiff/lib.a from
git + a custom "git.h" + openssl for sha1 routines.
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (limited to '')
| -rw-r--r-- | html.c | 100 | 
1 files changed, 100 insertions, 0 deletions
@@ -0,0 +1,100 @@ +#include "cgit.h" + +char *fmt(const char *format, ...) +{ +	static char buf[8][1024]; +	static int bufidx; +	int len; +	va_list args; + +	bufidx++; +	bufidx &= 7; + +	va_start(args, format); +	len = vsnprintf(buf[bufidx], sizeof(buf[bufidx]), format, args); +	va_end(args); +	if (len>sizeof(buf[bufidx])) +		die("[html.c] string truncated: %s", format); +	return buf[bufidx]; +} + +void html(const char *txt) +{ +	fputs(txt, stdout); +} + +void htmlf(const char *format, ...) +{ +	va_list args; + +	va_start(args, format); +	vprintf(format, args); +	va_end(args); +} + +void html_txt(char *txt) +{ +	char *t = txt; +	while(*t){ +		int c = *t; +		if (c=='<' || c=='>' || c=='&') { +			*t = '\0'; +			html(txt); +			*t = c; +			if (c=='>') +				html(">"); +			else if (c=='<') +				html("<"); +			else if (c=='&') +				html("&"); +			txt = t+1; +		} +		t++; +	} +	if (t!=txt) +		html(txt); +} + + +void html_attr(char *txt) +{ +	char *t = txt; +	while(*t){ +		int c = *t; +		if (c=='<' || c=='>' || c=='\'') { +			*t = '\0'; +			html(txt); +			*t = c; +			if (c=='>') +				html(">"); +			else if (c=='<') +				html("<"); +			else if (c=='\'') +				html(""e;"); +			txt = t+1; +		} +		t++; +	} +	if (t!=txt) +		html(txt); +} + +void html_link_open(char *url, char *title, char *class) +{ +	html("<a href='"); +	html_attr(url); +	if (title) { +		html("' title='"); +		html_attr(title); +	} +	if (class) { +		html("' class='"); +		html_attr(class); +	} +	html("'>"); +} + +void html_link_close(void) +{ +	html("</a>"); +}  |