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-pink-0d169ada2ba81210ab1191a5f2212662e90db77e.tar.gz cgit-pink-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
diff --git a/html.c b/html.c new file mode 100644 index 0000000..5780dc1 --- /dev/null +++ b/html.c @@ -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>"); +} |