]> gitweb.ps.run Git - ps-cgit/blobdiff - html.c
Let make know that ui-diff.c depends on xdiff.h
[ps-cgit] / html.c
diff --git a/html.c b/html.c
index 5780dc179e6c22070e0f3a509cafbddfabb89e13..8a6965970ae903dd434e490cfabbad27f39f900b 100644 (file)
--- a/html.c
+++ b/html.c
@@ -1,3 +1,11 @@
+/* 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, ...)
@@ -20,16 +28,18 @@ char *fmt(const char *format, ...)
 
 void html(const char *txt)
 {
-       fputs(txt, stdout);
+       write(htmlfd, txt, strlen(txt));
 }
 
 void htmlf(const char *format, ...)
 {
+       static char buf[65536];
        va_list args;
 
        va_start(args, format);
-       vprintf(format, args);
+       vsnprintf(buf, sizeof(buf), format, args);
        va_end(args);
+       html(buf);
 }
 
 void html_txt(char *txt)
@@ -98,3 +108,23 @@ void html_link_close(void)
 {
        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);
+}
+