it* gopherproxy-c customized Err codevoid.de 70 i Err codevoid.de 70 hgit clone git://git.codevoid.de/gopherproxy-c-sdk URL:git://git.codevoid.de/gopherproxy-c-sdk codevoid.de 70 1Log /git/gopherproxy-c-sdk/log.gph codevoid.de 70 1Files /git/gopherproxy-c-sdk/files.gph codevoid.de 70 1Refs /git/gopherproxy-c-sdk/refs.gph codevoid.de 70 1README /git/gopherproxy-c-sdk/file/README.gph codevoid.de 70 1LICENSE /git/gopherproxy-c-sdk/file/LICENSE.gph codevoid.de 70 i--- Err codevoid.de 70 1commit 328eee3a3a6814914911e25e3447adb9cc09f4ba /git/gopherproxy-c-sdk/commit/328eee3a3a6814914911e25e3447adb9cc09f4ba.gph codevoid.de 70 1parent 2188db7bb8e13eb43c8e61376baf0381be3af513 /git/gopherproxy-c-sdk/commit/2188db7bb8e13eb43c8e61376baf0381be3af513.gph codevoid.de 70 hAuthor: Hiltjo Posthuma URL:mailto:hiltjo@codemadness.org codevoid.de 70 iDate: Fri, 17 Aug 2018 16:01:10 +0200 Err codevoid.de 70 i Err codevoid.de 70 ifor the gif type set Content-Type explicitly, try image detection by extension Err codevoid.de 70 i Err codevoid.de 70 iDiffstat: Err codevoid.de 70 i M gopherproxy.c | 26 +++++++++++++++++++++++--- Err codevoid.de 70 i Err codevoid.de 70 i1 file changed, 23 insertions(+), 3 deletions(-) Err codevoid.de 70 i--- Err codevoid.de 70 1diff --git a/gopherproxy.c b/gopherproxy.c /git/gopherproxy-c-sdk/file/gopherproxy.c.gph codevoid.de 70 it@@ -526,14 +526,34 @@ main(void) Err codevoid.de 70 i Err codevoid.de 70 i headerset = 1; Err codevoid.de 70 i switch (_type) { Err codevoid.de 70 i+ case '1': Err codevoid.de 70 i+ case '7': Err codevoid.de 70 i+ break; /* handled below */ Err codevoid.de 70 i case '0': Err codevoid.de 70 i dprintf(1, "Content-Type: text/plain; charset=utf-8\r\n\r\n"); Err codevoid.de 70 i servefile(u.host, u.port, path); Err codevoid.de 70 i return 0; Err codevoid.de 70 i- case '1': Err codevoid.de 70 i- case '7': Err codevoid.de 70 i- break; /* handled below */ Err codevoid.de 70 i+ case 'g': Err codevoid.de 70 i+ dprintf(1, "Content-Type: image/gif\r\n\r\n"); Err codevoid.de 70 i+ servefile(u.host, u.port, path); Err codevoid.de 70 i+ return 0; Err codevoid.de 70 i+ case 'I': Err codevoid.de 70 i+ /* try to set Content-Type based on extension */ Err codevoid.de 70 i+ if ((p = strrchr(path, '.'))) { Err codevoid.de 70 i+ p++; Err codevoid.de 70 i+ if (!strcasecmp("png", p)) { Err codevoid.de 70 i+ dprintf(1, "Content-Type: image/png\r\n"); Err codevoid.de 70 i+ } else if (!strcasecmp("jpg", p) || !strcasecmp("jpeg", p)) { Err codevoid.de 70 i+ dprintf(1, "Content-Type: image/jpeg\r\n"); Err codevoid.de 70 i+ } else if (!strcasecmp("gif", p)) { Err codevoid.de 70 i+ dprintf(1, "Content-Type: image/gif\r\n"); Err codevoid.de 70 i+ } Err codevoid.de 70 i+ } Err codevoid.de 70 i+ write(1, "\r\n", 2); Err codevoid.de 70 i+ servefile(u.host, u.port, path); Err codevoid.de 70 i+ return 0; Err codevoid.de 70 i case '9': Err codevoid.de 70 i+ /* try to detect filename */ Err codevoid.de 70 i if ((p = strrchr(path, '/'))) Err codevoid.de 70 i dprintf(1, "Content-Disposition: attachment; filename=\"%s\"\r\n", p + 1); Err codevoid.de 70 i dprintf(1, "Content-Type: application/octet-stream\r\n\r\n"); Err codevoid.de 70 .