From 4bc97ce307f717166909f303d766d495fb477e6a Mon Sep 17 00:00:00 2001 From: bptato Date: Wed, 21 Oct 2020 12:56:36 +0200 Subject: Improved gopher support --- file.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) (limited to 'file.c') diff --git a/file.c b/file.c index 52ace23..41e8f58 100644 --- a/file.c +++ b/file.c @@ -1959,7 +1959,7 @@ loadGeneralFile(char *path, ParsedURL *volatile current, char *referer, #endif /* USE_NNTP */ #ifdef USE_GOPHER else if (pu.scheme == SCM_GOPHER) { - switch (*pu.file) { + switch (pu.file[strlen(pu.file)-1]) { case '0': t = "text/plain"; break; @@ -7393,8 +7393,9 @@ Str loadGopherDir(URLFile *uf, ParsedURL *pu, wc_ces * charset) { Str volatile tmp; - Str lbuf, name, file, host, port; + Str lbuf, name, file, host, port, type; char *volatile p, *volatile q; + int link; MySignalHandler(*volatile prevtrap) (SIGNAL_ARG) = NULL; #ifdef USE_M17N wc_ces doc_charset = DocumentCharset; @@ -7440,6 +7441,7 @@ loadGopherDir(URLFile *uf, ParsedURL *pu, wc_ces * charset) for (q = p; *q && *q != '\t' && *q != '\r' && *q != '\n'; q++) ; port = Strnew_charp_n(p, q - p); + link = 1; switch (name->ptr[0]) { case '0': p = "[text file]"; @@ -7459,15 +7461,22 @@ loadGopherDir(URLFile *uf, ParsedURL *pu, wc_ces * charset) case 'h': p = "[HTML]"; break; + case 'i': + link = 0; + break; default: p = "[unsupported]"; break; } - q = Strnew_m_charp("gopher://", host->ptr, ":", port->ptr, - "/", file->ptr, NULL)->ptr; - Strcat_m_charp(tmp, "", p, html_quote(name->ptr + 1), "\n", NULL); + type = Strsubstr(name, 0, 1); + q = Strnew_m_charp("gopher://", host->ptr, ":", port->ptr, file->ptr, type->ptr, NULL)->ptr; + if(link) { + Strcat_m_charp(tmp, "", p, " ", html_quote(name->ptr + 1), "
\n", NULL); + } else { + Strcat_m_charp(tmp, "

", html_quote(name->ptr + 1), "

\n", NULL); + } } gopher_end: -- cgit v1.2.3