tWrap types 0 and 1 in HTML - phroxy - Gopher to HTTP proxy
(HTM) git clone git://git.z3bra.org/phroxy.git
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) LICENSE
---
(DIR) commit e159168461c30eb37813b1c43afa98d27bc3d6d5
(DIR) parent c3904deacd7faa41c91e97ae247e0791c945138f
(HTM) Author: Willy Goiffon <dev@z3bra.org>
Date: Fri, 11 Sep 2020 22:37:01 +0200
Wrap types 0 and 1 in HTML
Diffstat:
M phroxy.c | 41 ++++++++++++++++++++++++++++---
1 file changed, 37 insertions(+), 4 deletions(-)
---
(DIR) diff --git a/phroxy.c b/phroxy.c
t@@ -205,16 +205,49 @@ printheaders(char *ctype)
printf("Connection: close\r\n");
}
+char *
+htmlize(char *data, size_t len, size_t *newsize)
+{
+ size_t hlen;
+ char *html = NULL;
+
+ char *foot = "</pre></body></html>";
+ char *head =
+ "<!DOCTYPE HTML>"
+ "<html><head>"
+ "<meta charset=\"utf-8\">"
+ "<meta name=\"viewport\" content=\"width=device-width\">"
+ "<link rel=\"stylesheet\" type=\"text/css\" href=\"https://z3bra.org/z3bra.css\">"
+ "<title>phroxy(8)</title>"
+ "</head><body><pre>\n";
+
+ hlen = len + strlen(head) + strlen(foot);
+ html = malloc(hlen);
+ if (!html)
+ return NULL;
+
+ snprintf(html, hlen, "%s%s%s", head, data, foot);
+
+ if (newsize)
+ *newsize = hlen;
+
+ return html;
+}
int
serveitem(char item, char *data, size_t len)
{
- char *sendi;
+ char *send, *html;
int sent;
switch(item) {
case '0':
case '1':
+ html = htmlize(data, len, &len);
+ free(data);
+ data = html;
+ break;
+
case '6':
case '9':
case 'g':
t@@ -243,12 +276,12 @@ serveitem(char item, char *data, size_t len)
printf("\r\n");
fflush(stdout);
- sendi = data;
+ send = data;
while (len > 0) {
- if ((sent = write(1, sendi, len)) < 0)
+ if ((sent = write(1, send, len)) < 0)
return 1;
len -= sent;
- sendi += sent;
+ send += sent;
}
return 0;