diff options
author | Ori Bernstein <ori@eigenstate.org> | 2021-06-12 14:32:16 +0000 |
---|---|---|
committer | Ori Bernstein <ori@eigenstate.org> | 2021-06-12 14:32:16 +0000 |
commit | aacf368c6d4ec9adb9fae28d3ca07d074fd459f5 (patch) | |
tree | 7926906342bd0a2a127a3b302494b3e643e5f5e6 /sys/src/cmd/mothra/snoop.c | |
parent | af95aa431d6e511355a6eb953ab7845f94c0e2d7 (diff) |
mothra: read the content-type header over file(1) to determine type (thanks james palmer)
this fixes some pages being classified as xml by file(1),
meaning they would be rendered as plain text rather than as html.
Diffstat (limited to 'sys/src/cmd/mothra/snoop.c')
-rw-r--r-- | sys/src/cmd/mothra/snoop.c | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/sys/src/cmd/mothra/snoop.c b/sys/src/cmd/mothra/snoop.c index 7df01acb6..833141544 100644 --- a/sys/src/cmd/mothra/snoop.c +++ b/sys/src/cmd/mothra/snoop.c @@ -87,8 +87,9 @@ Err1: } int -snooptype(int fd) +mimetotype(char *mime) { + int i; static struct { char *typ; int val; @@ -110,13 +111,23 @@ snooptype(int fd) "image/", PAGE, "text/", PLAIN, "message/rfc822", PLAIN, - }; + }; + + for(i=0; i<nelem(tab); i++) + if(strncmp(mime, tab[i].typ, strlen(tab[i].typ)) == 0) + return tab[i].val; + + return -1; +} + +int +snooptype(int fd) +{ char buf[128]; int i; + if(filetype(fd, buf, sizeof(buf)) < 0) return -1; - for(i=0; i<nelem(tab); i++) - if(strncmp(buf, tab[i].typ, strlen(tab[i].typ)) == 0) - return tab[i].val; - return -1; + + return mimetotype(buf); } |