Fix Gopher binaries causing w3m to be stuck in download mode; try to guess Gopher image type and fallback to png

This commit is contained in:
bptato
2020-12-02 23:20:08 +01:00
parent 7dcc7ccff1
commit aea44d3194
+19 -3
View File
@@ -1713,6 +1713,7 @@ loadGeneralFile(char *path, ParsedURL *volatile current, char *referer,
Str tmp;
Str volatile page = NULL;
#ifdef USE_GOPHER
int gopher_download = FALSE;
#endif
#ifdef USE_M17N
wc_ces charset = WC_CES_US_ASCII;
@@ -1994,11 +1995,14 @@ loadGeneralFile(char *path, ParsedURL *volatile current, char *referer,
t = "text/html";
break;
case 'I':
t = "image/gopher";
t = guessContentType(pu.file);
if(strncasecmp(t, "image/", 6) != 0) {
t = "image/png";
}
break;
case '5':
case '9':
do_download = 1;
gopher_download = TRUE;
break;
}
}
@@ -2120,7 +2124,11 @@ loadGeneralFile(char *path, ParsedURL *volatile current, char *referer,
Strfputs(s, src);
fclose(src);
}
#ifdef USE_GOPHER
if (do_download || gopher_download) {
#else
if (do_download) {
#endif
char *file;
if (!src)
return NULL;
@@ -2157,7 +2165,11 @@ loadGeneralFile(char *path, ParsedURL *volatile current, char *referer,
current_content_length = 0;
if ((p = checkHeader(t_buf, "Content-Length:")) != NULL)
current_content_length = strtoclen(p);
#ifdef USE_GOPHER
if (do_download || gopher_download) {
#else
if (do_download) {
#endif
/* download only */
char *file;
TRAP_OFF;
@@ -2223,7 +2235,11 @@ loadGeneralFile(char *path, ParsedURL *volatile current, char *referer,
#endif
else if (w3m_backend) ;
else if (!(w3m_dump & ~DUMP_FRAME) || is_dump_text_type(t)) {
if (!do_download && searchExtViewer(t) != NULL) {
if (!do_download &&
#ifdef USE_GOPHER
!gopher_download &&
#endif
searchExtViewer(t) != NULL) {
proc = DO_EXTERNAL;
}
else {