+/* html.c: helper functions for html output
+ *
+ * Copyright (C) 2006 Lars Hjemli
+ *
+ * Licensed under GNU General Public License v2
+ * (see COPYING for full license text)
+ */
+
#include "cgit.h"
char *fmt(const char *format, ...)
void html_txt(char *txt)
{
char *t = txt;
- while(*t){
+ while(t && *t){
int c = *t;
if (c=='<' || c=='>' || c=='&') {
*t = '\0';
html(txt);
}
+void html_ntxt(int len, char *txt)
+{
+ char *t = txt;
+ while(t && *t && len--){
+ 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) {
+ char c = *t;
+ *t = '\0';
+ html(txt);
+ *t = c;
+ }
+ if (len<0)
+ html("...");
+}
void html_attr(char *txt)
{
char *t = txt;
- while(*t){
+ while(t && *t){
int c = *t;
if (c=='<' || c=='>' || c=='\'') {
*t = '\0';
html(txt);
}
+void html_hidden(char *name, char *value)
+{
+ html("<input type='hidden' name='");
+ html_attr(name);
+ html("' value='");
+ html_attr(value);
+ html("'/>");
+}
+
void html_link_open(char *url, char *title, char *class)
{
html("<a href='");
{
html("</a>");
}
+
+void html_fileperm(unsigned short mode)
+{
+ htmlf("%c%c%c", (mode & 4 ? 'r' : '-'),
+ (mode & 2 ? 'w' : '-'), (mode & 1 ? 'x' : '-'));
+}
+
+void html_filemode(unsigned short mode)
+{
+ if (S_ISDIR(mode))
+ html("d");
+ else if (S_ISLNK(mode))
+ html("l");
+ else
+ html("-");
+ html_fileperm(mode >> 6);
+ html_fileperm(mode >> 3);
+ html_fileperm(mode);
+}
+