diff options
| author | Tatsuya Kinoshita <tats@debian.org> | 2020-11-11 10:29:36 +0000 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-11-11 10:29:36 +0000 | 
| commit | 3f165adb3d9a4caf7cc4c146cb712ec1db772e24 (patch) | |
| tree | f8dac2150c376df8139399b0454d9124a2d03f87 | |
| parent | Update ChangeLog (diff) | |
| parent | Remove useless loop (diff) | |
| download | w3m-3f165adb3d9a4caf7cc4c146cb712ec1db772e24.tar.gz w3m-3f165adb3d9a4caf7cc4c146cb712ec1db772e24.zip | |
Merge pull request #154 from bptato/master
Support Gopher search and binary files
| -rw-r--r-- | file.c | 44 | ||||
| -rw-r--r-- | proto.h | 1 | ||||
| -rw-r--r-- | url.c | 8 | 
3 files changed, 53 insertions, 0 deletions
| @@ -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 */  /*  @@ -262,6 +262,7 @@ extern void loadHTMLstream(URLFile *f, Buffer *newBuf, FILE * src,  extern Buffer *loadHTMLString(Str page);  #ifdef USE_GOPHER  extern Str loadGopherDir(URLFile *uf, ParsedURL *pu, wc_ces * charset); +extern Str loadGopherSearch(URLFile *uf, ParsedURL *pu, wc_ces * charset);  #endif				/* USE_GOPHER */  extern Buffer *loadBuffer(URLFile *uf, Buffer *newBuf);  #ifdef USE_IMAGE @@ -1853,6 +1853,8 @@ openURL(char *url, ParsedURL *pu, ParsedURL *current,  	    case 's':  	    case 'g':  	    case 'h': +	    case '7': +	    case '9':  	      tmp = Strnew_charp(pu->file);  	      gophertmp = Strdup(tmp);  	      Strdelete(tmp, n, 1); @@ -1865,6 +1867,12 @@ openURL(char *url, ParsedURL *pu, ParsedURL *current,  	} else {  	  type = '\0';  	} +	if(pu->query != NULL) { +	  tmp = Strnew_charp(pu->file); +	  Strcat_char(tmp, '\t'); +	  Strcat_charp(tmp, pu->query); +	  pu->file = tmp->ptr; +	}  	if (non_null(GOPHER_proxy) &&  	    !Do_not_use_proxy &&  	    pu->host != NULL && !check_no_proxy(pu->host)) { | 
