summaryrefslogtreecommitdiffabout
path: root/html.c
authorLars Hjemli <hjemli@gmail.com>2008-02-23 19:13:57 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2008-02-23 19:14:01 (UTC)
commite0572c39f78b4f88c706a49a60e211302b8e015c (patch) (unidiff)
tree4432d0400549c7ea521eea1dffddfbb2f96de0c6 /html.c
parente5ed227ef0da561e2bde8646ec816842392377ee (diff)
parenteacde43d7184452e1fdc90b982b531f1f5239923 (diff)
downloadcgit-e0572c39f78b4f88c706a49a60e211302b8e015c.zip
cgit-e0572c39f78b4f88c706a49a60e211302b8e015c.tar.gz
cgit-e0572c39f78b4f88c706a49a60e211302b8e015c.tar.bz2
Merge branch 'stable'
* stable: Fix segfault Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (limited to 'html.c') (more/less context) (ignore whitespace changes)
-rw-r--r--html.c20
1 files changed, 5 insertions, 15 deletions
diff --git a/html.c b/html.c
index eb163d9..339bf00 100644
--- a/html.c
+++ b/html.c
@@ -39,79 +39,69 @@ void htmlf(const char *format, ...)
39 va_start(args, format); 39 va_start(args, format);
40 vsnprintf(buf, sizeof(buf), format, args); 40 vsnprintf(buf, sizeof(buf), format, args);
41 va_end(args); 41 va_end(args);
42 html(buf); 42 html(buf);
43} 43}
44 44
45void html_txt(char *txt) 45void html_txt(char *txt)
46{ 46{
47 char *t = txt; 47 char *t = txt;
48 while(t && *t){ 48 while(t && *t){
49 int c = *t; 49 int c = *t;
50 if (c=='<' || c=='>' || c=='&') { 50 if (c=='<' || c=='>' || c=='&') {
51 *t = '\0'; 51 write(htmlfd, txt, t - txt);
52 html(txt);
53 *t = c;
54 if (c=='>') 52 if (c=='>')
55 html("&gt;"); 53 html("&gt;");
56 else if (c=='<') 54 else if (c=='<')
57 html("&lt;"); 55 html("&lt;");
58 else if (c=='&') 56 else if (c=='&')
59 html("&amp;"); 57 html("&amp;");
60 txt = t+1; 58 txt = t+1;
61 } 59 }
62 t++; 60 t++;
63 } 61 }
64 if (t!=txt) 62 if (t!=txt)
65 html(txt); 63 html(txt);
66} 64}
67 65
68void html_ntxt(int len, char *txt) 66void html_ntxt(int len, char *txt)
69{ 67{
70 char *t = txt; 68 char *t = txt;
71 while(t && *t && len--){ 69 while(t && *t && len--){
72 int c = *t; 70 int c = *t;
73 if (c=='<' || c=='>' || c=='&') { 71 if (c=='<' || c=='>' || c=='&') {
74 *t = '\0'; 72 write(htmlfd, txt, t - txt);
75 html(txt);
76 *t = c;
77 if (c=='>') 73 if (c=='>')
78 html("&gt;"); 74 html("&gt;");
79 else if (c=='<') 75 else if (c=='<')
80 html("&lt;"); 76 html("&lt;");
81 else if (c=='&') 77 else if (c=='&')
82 html("&amp;"); 78 html("&amp;");
83 txt = t+1; 79 txt = t+1;
84 } 80 }
85 t++; 81 t++;
86 } 82 }
87 if (t!=txt) { 83 if (t!=txt)
88 char c = *t; 84 write(htmlfd, txt, t - txt);
89 *t = '\0';
90 html(txt);
91 *t = c;
92 }
93 if (len<0) 85 if (len<0)
94 html("..."); 86 html("...");
95} 87}
96 88
97void html_attr(char *txt) 89void html_attr(char *txt)
98{ 90{
99 char *t = txt; 91 char *t = txt;
100 while(t && *t){ 92 while(t && *t){
101 int c = *t; 93 int c = *t;
102 if (c=='<' || c=='>' || c=='\'') { 94 if (c=='<' || c=='>' || c=='\'') {
103 *t = '\0'; 95 write(htmlfd, txt, t - txt);
104 html(txt);
105 *t = c;
106 if (c=='>') 96 if (c=='>')
107 html("&gt;"); 97 html("&gt;");
108 else if (c=='<') 98 else if (c=='<')
109 html("&lt;"); 99 html("&lt;");
110 else if (c=='\'') 100 else if (c=='\'')
111 html("&quote;"); 101 html("&quote;");
112 txt = t+1; 102 txt = t+1;
113 } 103 }
114 t++; 104 t++;
115 } 105 }
116 if (t!=txt) 106 if (t!=txt)
117 html(txt); 107 html(txt);