aboutsummaryrefslogtreecommitdiffstats
path: root/file.c
diff options
context:
space:
mode:
authorbptato <nincsnevem662@gmail.com>2020-11-07 22:12:35 +0000
committerbptato <nincsnevem662@gmail.com>2020-11-07 22:12:35 +0000
commit171db89cc2a82bad906704debb0db8a9058c3e35 (patch)
treea3a9d0b295b63f283d223e0f2c8598495c28b9f8 /file.c
parentUpdate ChangeLog (diff)
downloadw3m-171db89cc2a82bad906704debb0db8a9058c3e35.tar.gz
w3m-171db89cc2a82bad906704debb0db8a9058c3e35.zip
Support Gopher items search (7) and binary file (9)
Diffstat (limited to 'file.c')
-rw-r--r--file.c46
1 files changed, 45 insertions, 1 deletions
diff --git a/file.c b/file.c
index 358f20a..f5aaa5b 100644
--- a/file.c
+++ b/file.c
@@ -1961,7 +1961,7 @@ loadGeneralFile(char *path, ParsedURL *volatile current, char *referer,
#endif /* USE_NNTP */
#ifdef USE_GOPHER
else if (pu.scheme == SCM_GOPHER) {
- p = pu.file;
+ p = file_unquote(pu.file);
while(*p == '/')
++p;
switch (*p) {
@@ -1974,6 +1974,16 @@ loadGeneralFile(char *path, ParsedURL *volatile current, char *referer,
t = "gopher:directory";
TRAP_OFF;
goto page_loaded;
+ case '7':
+ if(pu.query != NULL) {
+ page = loadGopherDir(&f, &pu, &charset);
+ t = "gopher:directory";
+ } else {
+ page = loadGopherSearch(&f, &pu, &charset);
+ t = "gopher:search";
+ }
+ TRAP_OFF;
+ goto page_loaded;
case 's':
t = "audio/basic";
break;
@@ -1983,6 +1993,9 @@ loadGeneralFile(char *path, ParsedURL *volatile current, char *referer,
case 'h':
t = "text/html";
break;
+ case '9':
+ do_download = 1;
+ break;
}
}
#endif /* USE_GOPHER */
@@ -7455,6 +7468,9 @@ loadGopherDir(URLFile *uf, ParsedURL *pu, wc_ces * charset)
case '1':
p = "[directory]";
break;
+ case '7':
+ p = "[search]";
+ break;
case 'm':
p = "[message]";
break;
@@ -7470,6 +7486,9 @@ loadGopherDir(URLFile *uf, ParsedURL *pu, wc_ces * charset)
case 'i':
link = 0;
break;
+ case '9':
+ p = "[binary]";
+ break;
default:
p = "[unsupported]";
break;
@@ -7502,6 +7521,31 @@ loadGopherDir(URLFile *uf, ParsedURL *pu, wc_ces * charset)
Strcat_charp(tmp, "</table>\n</body>\n</html>\n");
return tmp;
}
+
+Str
+loadGopherSearch(URLFile *uf, ParsedURL *pu, wc_ces * charset)
+{
+ Str tmp;
+ char *volatile p, *volatile q;
+ MySignalHandler(*volatile prevtrap) (SIGNAL_ARG) = NULL;
+ tmp = parsedURL2Str(pu);
+ p = html_quote(tmp->ptr);
+#ifdef USE_M17N
+ wc_ces doc_charset = DocumentCharset;
+ tmp =
+ convertLine(NULL, Strnew_charp(file_unquote(tmp->ptr)), RAW_MODE,
+ charset, doc_charset);
+#endif
+ q = html_quote(tmp->ptr);
+
+ tmp = Strnew_m_charp("<html>\n<head>\n<base href=\"", p, "\">\n<title>", q,
+ "</title>\n</head>\n<body>\n<h1>Search ", q,
+ "</h1>\n<form role=\"search\">\n<div>\n"
+ "<input type=\"search\" name=\"\">"
+ "</div>\n</form>\n</body>", NULL);
+
+ return tmp;
+}
#endif /* USE_GOPHER */
/*