itAdd P and d types for documents - phroxy - Gopher to HTTP proxy Err z3bra.org 70 hgit clone git://git.z3bra.org/phroxy.git URL:git://git.z3bra.org/phroxy.git z3bra.org 70 1Log /scm/phroxy/log.gph z3bra.org 70 1Files /scm/phroxy/files.gph z3bra.org 70 1Refs /scm/phroxy/refs.gph z3bra.org 70 1LICENSE /scm/phroxy/file/LICENSE.gph z3bra.org 70 i--- Err z3bra.org 70 1commit bccae5645b5b16cedf046c0d91a5faeb87287540 /scm/phroxy/commit/bccae5645b5b16cedf046c0d91a5faeb87287540.gph z3bra.org 70 1parent bedd997f20b971eab551158ea6e61b0ec3c3d5d3 /scm/phroxy/commit/bedd997f20b971eab551158ea6e61b0ec3c3d5d3.gph z3bra.org 70 hAuthor: Willy Goiffon URL:mailto:dev@z3bra.org z3bra.org 70 iDate: Tue, 25 Oct 2022 12:38:56 +0200 Err z3bra.org 70 i Err z3bra.org 70 iAdd P and d types for documents Err z3bra.org 70 i Err z3bra.org 70 iDiffstat: Err z3bra.org 70 i M phroxy.c | 47 +++++++++++++++++++++---------- Err z3bra.org 70 i Err z3bra.org 70 i1 file changed, 32 insertions(+), 15 deletions(-) Err z3bra.org 70 i--- Err z3bra.org 70 1diff --git a/phroxy.c b/phroxy.c /scm/phroxy/file/phroxy.c.gph z3bra.org 70 it@@ -29,6 +29,8 @@ enum { Err z3bra.org 70 i ITEM_g, Err z3bra.org 70 i ITEM_h, Err z3bra.org 70 i ITEM_s, Err z3bra.org 70 i+ ITEM_P, Err z3bra.org 70 i+ ITEM_d, Err z3bra.org 70 i }; Err z3bra.org 70 i Err z3bra.org 70 i #include "config.h" Err z3bra.org 70 it@@ -225,37 +227,47 @@ printhttp(int code) Err z3bra.org 70 i char * Err z3bra.org 70 i contenttype(char i, char *path) Err z3bra.org 70 i { Err z3bra.org 70 i- static char *ext, type[12]; Err z3bra.org 70 i+ static char *ext, type[32]; Err z3bra.org 70 i+ Err z3bra.org 70 i+ /* isolate file extention, if any */ Err z3bra.org 70 i+ ext = strrchr(path, '.'); Err z3bra.org 70 i+ ext = ext ? ext + 1 : "*"; Err z3bra.org 70 i Err z3bra.org 70 i switch(i) { Err z3bra.org 70 i case '0': Err z3bra.org 70 i case '1': Err z3bra.org 70 i case '7': Err z3bra.org 70 i case 'h': Err z3bra.org 70 i- return "text/html; charset=utf-8"; Err z3bra.org 70 i- break; /* NOTREACHED */ Err z3bra.org 70 i+ snprintf(type, sizeof(type)-1, "text/html; charset=utf-8"); Err z3bra.org 70 i+ break; Err z3bra.org 70 i case '6': Err z3bra.org 70 i- return "text/x-uuencode"; Err z3bra.org 70 i- break; /* NOTREACHED */ Err z3bra.org 70 i+ snprintf(type, sizeof(type)-1, "text/x-uuencode"); Err z3bra.org 70 i+ break; Err z3bra.org 70 i case '4': Err z3bra.org 70 i case '5': Err z3bra.org 70 i case '9': Err z3bra.org 70 i- return "application/octet-stream"; Err z3bra.org 70 i- break; /* NOTREACHED */ Err z3bra.org 70 i+ snprintf(type, sizeof(type)-1, "application/octet-stream"); Err z3bra.org 70 i+ break; Err z3bra.org 70 i case 'I': Err z3bra.org 70 i- if (!(ext = strrchr(path, '.'))) Err z3bra.org 70 i- return "image/*"; Err z3bra.org 70 i- Err z3bra.org 70 i /* assume 4 chars max for extension */ Err z3bra.org 70 i- snprintf(type, 11, "image/%s", ext + 1); Err z3bra.org 70 i- return type; Err z3bra.org 70 i- break; /* NOTREACHED */ Err z3bra.org 70 i+ snprintf(type, sizeof(type)-1, "image/%s", ext); Err z3bra.org 70 i+ break; Err z3bra.org 70 i+ case 's': Err z3bra.org 70 i+ snprintf(type, sizeof(type)-1, "audio/%s", ext); Err z3bra.org 70 i+ break; Err z3bra.org 70 i case 'g': Err z3bra.org 70 i- return "image/gif"; Err z3bra.org 70 i+ snprintf(type, sizeof(type)-1, "image/gif"); Err z3bra.org 70 i+ break; Err z3bra.org 70 i+ case 'P': Err z3bra.org 70 i+ case 'd': Err z3bra.org 70 i+ snprintf(type, sizeof(type)-1, "application/%s", ext); Err z3bra.org 70 i+ break; Err z3bra.org 70 i+ default: Err z3bra.org 70 i+ return NULL; Err z3bra.org 70 i break; /* NOTREACHED */ Err z3bra.org 70 i } Err z3bra.org 70 i Err z3bra.org 70 i- return NULL; Err z3bra.org 70 i+ return type; Err z3bra.org 70 i } Err z3bra.org 70 i Err z3bra.org 70 i const char * Err z3bra.org 70 it@@ -276,6 +288,8 @@ itemname(char i) Err z3bra.org 70 i case 'g': return items[ITEM_g]; Err z3bra.org 70 i case 'h': return items[ITEM_h]; Err z3bra.org 70 i case 's': return items[ITEM_s]; Err z3bra.org 70 i+ case 'd': return items[ITEM_d]; Err z3bra.org 70 i+ case 'P': return items[ITEM_P]; Err z3bra.org 70 i } Err z3bra.org 70 i Err z3bra.org 70 i return NULL; Err z3bra.org 70 it@@ -416,6 +430,9 @@ serveitem(char item, char *path, char *data, size_t len) Err z3bra.org 70 i case '9': // binary Err z3bra.org 70 i case 'g': // gif Err z3bra.org 70 i case 'I': // image Err z3bra.org 70 i+ case 's': // sound Err z3bra.org 70 i+ case 'd': // document Err z3bra.org 70 i+ case 'P': // pdf (~document) Err z3bra.org 70 i case 'h': // http redirect Err z3bra.org 70 i printf("Content-Length: %ld\r\n", len); Err z3bra.org 70 i printf("\r\n"); Err z3bra.org 70 .