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