diff options
author | bptato <nincsnevem662@gmail.com> | 2020-12-02 22:20:08 +0000 |
---|---|---|
committer | bptato <nincsnevem662@gmail.com> | 2020-12-02 22:20:08 +0000 |
commit | aea44d3194d71f8bd3836c18911204e12e77c237 (patch) | |
tree | ef6bb4e1ffabf7025d2b949a131aeeb533db9a11 /file.c | |
parent | Add support for Gopher items 5 and I (diff) | |
download | w3m-aea44d3194d71f8bd3836c18911204e12e77c237.tar.gz w3m-aea44d3194d71f8bd3836c18911204e12e77c237.zip |
Fix Gopher binaries causing w3m to be stuck in download mode; try to guess Gopher image type and fallback to png
Diffstat (limited to 'file.c')
-rw-r--r-- | file.c | 22 |
1 files changed, 19 insertions, 3 deletions
@@ -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 { |