From 4047aba8909b5d9d7c5bbcac10f4c4363fc9a2a6 Mon Sep 17 00:00:00 2001 From: Ruthenic Date: Fri, 13 May 2022 22:46:53 -0400 Subject: [PATCH] generate mimetypes with script --- bin/httpsrv | Bin 22240 -> 141024 bytes lib/mime.h | 6079 +++++++++++++++++++++++++++++++++++++++++++- scripts/genMime.py | 71 + 3 files changed, 6132 insertions(+), 18 deletions(-) create mode 100644 scripts/genMime.py diff --git a/bin/httpsrv b/bin/httpsrv index 12b1a95868d121c9de09d31f2cf2411b59996d61..859eb5e0e737fd56f32b6a6d2546e86aa472db0b 100755 GIT binary patch literal 141024 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 C#R262 delta 5184 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 XY|RuthtGpGWYR)w4v#T+5- diff --git a/lib/mime.h b/lib/mime.h index 42d8826..2e5cd76 100644 --- a/lib/mime.h +++ b/lib/mime.h @@ -26,26 +26,6069 @@ int getMime(char** mime, char* filename) { *mime = "text/plain"; return 0; } - } else { - if (!strcmp(dot, ".html")) { - *mime = "text/html"; - } else if (!strcmp(dot, ".css")) { - *mime = "text/css"; - } else if (!strcmp(dot, ".js")) { - *mime = "text/javascript"; - } else if (!strcmp(dot, ".woff2")) { - *mime = "font/woff2"; - return 1; - } else if (!strcmp(dot, ".ico")) { - *mime = "image/vnd.microsoft.icon"; - return 1; - } else if (!strcmp(dot, ".png")) { - *mime = "image/png"; - return 1; - } else if (!strcmp(dot, ".json")) { + } else { if (0) {} + else if (!strcmp(dot, ".js")) { + *mime = "application/javascript"; + } + else if (!strcmp(dot, ".mjs")) { + *mime = "application/javascript"; + } + else if (!strcmp(dot, ".json")) { *mime = "application/json"; + } + else if (!strcmp(dot, ".webmanifest")) { + *mime = "application/manifest+json"; + return 1; + } + else if (!strcmp(dot, ".doc")) { + *mime = "application/msword"; + return 1; + } + else if (!strcmp(dot, ".dot")) { + *mime = "application/msword"; + return 1; + } + else if (!strcmp(dot, ".wiz")) { + *mime = "application/msword"; + return 1; + } + else if (!strcmp(dot, ".bin")) { + *mime = "application/octet-stream"; + return 1; + } + else if (!strcmp(dot, ".a")) { + *mime = "text/vnd.a"; + } + else if (!strcmp(dot, ".dll")) { + *mime = "application/x-msdownload"; + return 1; + } + else if (!strcmp(dot, ".exe")) { + *mime = "application/x-msdownload"; + return 1; + } + else if (!strcmp(dot, ".o")) { + *mime = "application/octet-stream"; + return 1; + } + else if (!strcmp(dot, ".obj")) { + *mime = "application/x-tgif"; + return 1; + } + else if (!strcmp(dot, ".so")) { + *mime = "application/octet-stream"; + return 1; + } + else if (!strcmp(dot, ".oda")) { + *mime = "application/oda"; + return 1; + } + else if (!strcmp(dot, ".pdf")) { + *mime = "application/pdf"; + return 1; + } + else if (!strcmp(dot, ".p7c")) { + *mime = "application/pkcs7-mime"; + return 1; + } + else if (!strcmp(dot, ".ps")) { + *mime = "application/postscript"; + return 1; + } + else if (!strcmp(dot, ".ai")) { + *mime = "application/postscript"; + return 1; + } + else if (!strcmp(dot, ".eps")) { + *mime = "application/postscript"; + return 1; + } + else if (!strcmp(dot, ".m3u")) { + *mime = "audio/x-mpegurl"; + return 1; + } + else if (!strcmp(dot, ".m3u8")) { + *mime = "application/vnd.apple.mpegurl"; + return 1; + } + else if (!strcmp(dot, ".xls")) { + *mime = "application/vnd.ms-excel"; + return 1; + } + else if (!strcmp(dot, ".xlb")) { + *mime = "application/vnd.ms-excel"; + return 1; + } + else if (!strcmp(dot, ".ppt")) { + *mime = "application/vnd.ms-powerpoint"; + return 1; + } + else if (!strcmp(dot, ".pot")) { + *mime = "application/vnd.ms-powerpoint"; + return 1; + } + else if (!strcmp(dot, ".ppa")) { + *mime = "application/vnd.ms-powerpoint"; + return 1; + } + else if (!strcmp(dot, ".pps")) { + *mime = "application/vnd.ms-powerpoint"; + return 1; + } + else if (!strcmp(dot, ".pwz")) { + *mime = "application/vnd.ms-powerpoint"; + return 1; + } + else if (!strcmp(dot, ".wasm")) { + *mime = "application/wasm"; + return 1; + } + else if (!strcmp(dot, ".bcpio")) { + *mime = "application/x-bcpio"; + return 1; + } + else if (!strcmp(dot, ".cpio")) { + *mime = "application/x-cpio"; + return 1; + } + else if (!strcmp(dot, ".csh")) { + *mime = "application/x-csh"; + return 1; + } + else if (!strcmp(dot, ".dvi")) { + *mime = "application/x-dvi"; + return 1; + } + else if (!strcmp(dot, ".gtar")) { + *mime = "application/x-gtar"; + return 1; + } + else if (!strcmp(dot, ".hdf")) { + *mime = "application/x-hdf"; + return 1; + } + else if (!strcmp(dot, ".h5")) { + *mime = "application/mipc"; + return 1; + } + else if (!strcmp(dot, ".latex")) { + *mime = "application/x-latex"; + return 1; + } + else if (!strcmp(dot, ".mif")) { + *mime = "application/vnd.mif"; + return 1; + } + else if (!strcmp(dot, ".cdf")) { + *mime = "application/x-netcdf"; + return 1; + } + else if (!strcmp(dot, ".nc")) { + *mime = "application/x-netcdf"; + return 1; + } + else if (!strcmp(dot, ".p12")) { + *mime = "application/x-pkcs12"; + return 1; + } + else if (!strcmp(dot, ".pfx")) { + *mime = "application/x-pkcs12"; + return 1; + } + else if (!strcmp(dot, ".ram")) { + *mime = "audio/x-pn-realaudio"; + return 1; + } + else if (!strcmp(dot, ".pyc")) { + *mime = "application/x-python-code"; + return 1; + } + else if (!strcmp(dot, ".pyo")) { + *mime = "model/vnd.pytha.pyox"; + return 1; + } + else if (!strcmp(dot, ".sh")) { + *mime = "application/x-sh"; + } + else if (!strcmp(dot, ".shar")) { + *mime = "application/x-shar"; + } + else if (!strcmp(dot, ".swf")) { + *mime = "application/x-shockwave-flash"; + } + else if (!strcmp(dot, ".sv4cpio")) { + *mime = "application/x-sv4cpio"; + return 1; + } + else if (!strcmp(dot, ".sv4crc")) { + *mime = "application/x-sv4crc"; + return 1; + } + else if (!strcmp(dot, ".tar")) { + *mime = "application/x-tar"; + return 1; + } + else if (!strcmp(dot, ".tcl")) { + *mime = "application/x-tcl"; + return 1; + } + else if (!strcmp(dot, ".tex")) { + *mime = "application/x-tex"; + return 1; + } + else if (!strcmp(dot, ".texi")) { + *mime = "application/x-texinfo"; + return 1; + } + else if (!strcmp(dot, ".texinfo")) { + *mime = "application/x-texinfo"; + return 1; + } + else if (!strcmp(dot, ".roff")) { + *mime = "text/troff"; + } + else if (!strcmp(dot, ".t")) { + *mime = "text/troff"; + } + else if (!strcmp(dot, ".tr")) { + *mime = "text/troff"; + } + else if (!strcmp(dot, ".man")) { + *mime = "text/troff"; + } + else if (!strcmp(dot, ".me")) { + *mime = "text/troff"; + } + else if (!strcmp(dot, ".ms")) { + *mime = "text/troff"; + } + else if (!strcmp(dot, ".ustar")) { + *mime = "application/x-ustar"; + return 1; + } + else if (!strcmp(dot, ".src")) { + *mime = "application/x-wais-source"; + return 1; + } + else if (!strcmp(dot, ".xsl")) { + *mime = "application/xml"; + } + else if (!strcmp(dot, ".rdf")) { + *mime = "application/rdf+xml"; + return 1; + } + else if (!strcmp(dot, ".wsdl")) { + *mime = "application/wsdl+xml"; + return 1; + } + else if (!strcmp(dot, ".xpdl")) { + *mime = "application/xml"; + } + else if (!strcmp(dot, ".zip")) { + *mime = "application/zip"; + return 1; + } + else if (!strcmp(dot, ".3gp")) { + *mime = "video/3gpp"; + return 1; + } + else if (!strcmp(dot, ".3gpp")) { + *mime = "video/3gpp"; + return 1; + } + else if (!strcmp(dot, ".3g2")) { + *mime = "video/3gpp2"; + return 1; + } + else if (!strcmp(dot, ".3gpp2")) { + *mime = "video/3gpp2"; + return 1; + } + else if (!strcmp(dot, ".aac")) { + *mime = "audio/x-aac"; + return 1; + } + else if (!strcmp(dot, ".adts")) { + *mime = "audio/aac"; + return 1; + } + else if (!strcmp(dot, ".loas")) { + *mime = "audio/usac"; + return 1; + } + else if (!strcmp(dot, ".ass")) { + *mime = "audio/aac"; + return 1; + } + else if (!strcmp(dot, ".au")) { + *mime = "audio/basic"; + return 1; + } + else if (!strcmp(dot, ".snd")) { + *mime = "audio/basic"; + return 1; + } + else if (!strcmp(dot, ".mp3")) { + *mime = "audio/mpeg"; + return 1; + } + else if (!strcmp(dot, ".mp2")) { + *mime = "audio/mpeg"; + return 1; + } + else if (!strcmp(dot, ".opus")) { + *mime = "audio/ogg"; + return 1; + } + else if (!strcmp(dot, ".aif")) { + *mime = "audio/x-aiff"; + return 1; + } + else if (!strcmp(dot, ".aifc")) { + *mime = "audio/x-aiff"; + return 1; + } + else if (!strcmp(dot, ".aiff")) { + *mime = "audio/x-aiff"; + return 1; + } + else if (!strcmp(dot, ".ra")) { + *mime = "audio/x-pn-realaudio"; + return 1; + } + else if (!strcmp(dot, ".wav")) { + *mime = "audio/x-wav"; + return 1; + } + else if (!strcmp(dot, ".bmp")) { + *mime = "image/bmp"; + return 1; + } + else if (!strcmp(dot, ".gif")) { + *mime = "image/gif"; + return 1; + } + else if (!strcmp(dot, ".ief")) { + *mime = "image/ief"; + return 1; + } + else if (!strcmp(dot, ".jpg")) { + *mime = "image/jpeg"; + return 1; + } + else if (!strcmp(dot, ".jpe")) { + *mime = "image/jpeg"; + return 1; + } + else if (!strcmp(dot, ".jpeg")) { + *mime = "image/jpeg"; + return 1; + } + else if (!strcmp(dot, ".heic")) { + *mime = "image/heic"; + return 1; + } + else if (!strcmp(dot, ".heif")) { + *mime = "image/heif"; + return 1; + } + else if (!strcmp(dot, ".png")) { + *mime = "image/png"; + return 1; + } + else if (!strcmp(dot, ".svg")) { + *mime = "image/svg+xml"; + return 1; + } + else if (!strcmp(dot, ".tiff")) { + *mime = "image/tiff"; + return 1; + } + else if (!strcmp(dot, ".tif")) { + *mime = "image/tiff"; + return 1; + } + else if (!strcmp(dot, ".ico")) { + *mime = "image/x-icon"; + return 1; + } + else if (!strcmp(dot, ".ras")) { + *mime = "image/x-cmu-raster"; + return 1; + } + else if (!strcmp(dot, ".pnm")) { + *mime = "image/x-portable-anymap"; + return 1; + } + else if (!strcmp(dot, ".pbm")) { + *mime = "image/x-portable-bitmap"; + return 1; + } + else if (!strcmp(dot, ".pgm")) { + *mime = "image/x-portable-graymap"; + return 1; + } + else if (!strcmp(dot, ".ppm")) { + *mime = "image/x-portable-pixmap"; + return 1; + } + else if (!strcmp(dot, ".rgb")) { + *mime = "image/x-rgb"; + return 1; + } + else if (!strcmp(dot, ".xbm")) { + *mime = "image/x-xbitmap"; + return 1; + } + else if (!strcmp(dot, ".xpm")) { + *mime = "image/x-xpixmap"; + return 1; + } + else if (!strcmp(dot, ".xwd")) { + *mime = "image/x-xwindowdump"; + return 1; + } + else if (!strcmp(dot, ".eml")) { + *mime = "message/rfc822"; + return 1; + } + else if (!strcmp(dot, ".mht")) { + *mime = "message/rfc822"; + return 1; + } + else if (!strcmp(dot, ".mhtml")) { + *mime = "message/rfc822"; + return 1; + } + else if (!strcmp(dot, ".nws")) { + *mime = "message/rfc822"; + return 1; + } + else if (!strcmp(dot, ".css")) { + *mime = "text/css"; + } + else if (!strcmp(dot, ".csv")) { + *mime = "text/csv"; + } + else if (!strcmp(dot, ".html")) { + *mime = "text/html"; + } + else if (!strcmp(dot, ".htm")) { + *mime = "text/html"; + } + else if (!strcmp(dot, ".txt")) { + *mime = "text/plain"; + } + else if (!strcmp(dot, ".bat")) { + *mime = "application/x-msdownload"; + return 1; + } + else if (!strcmp(dot, ".c")) { + *mime = "text/x-c"; + } + else if (!strcmp(dot, ".h")) { + *mime = "text/x-c"; + } + else if (!strcmp(dot, ".ksh")) { + *mime = "text/plain"; + } + else if (!strcmp(dot, ".pl")) { + *mime = "application/x-perl"; + return 1; + } + else if (!strcmp(dot, ".rtx")) { + *mime = "text/richtext"; + } + else if (!strcmp(dot, ".tsv")) { + *mime = "text/tab-separated-values"; + } + else if (!strcmp(dot, ".py")) { + *mime = "text/x-python"; + } + else if (!strcmp(dot, ".etx")) { + *mime = "text/x-setext"; + } + else if (!strcmp(dot, ".sgm")) { + *mime = "text/sgml"; + } + else if (!strcmp(dot, ".sgml")) { + *mime = "text/sgml"; + } + else if (!strcmp(dot, ".vcf")) { + *mime = "text/x-vcard"; + } + else if (!strcmp(dot, ".xml")) { + *mime = "application/xml"; + } + else if (!strcmp(dot, ".mp4")) { + *mime = "video/mp4"; + return 1; + } + else if (!strcmp(dot, ".mpeg")) { + *mime = "video/mpeg"; + return 1; + } + else if (!strcmp(dot, ".m1v")) { + *mime = "video/mpeg"; + return 1; + } + else if (!strcmp(dot, ".mpa")) { + *mime = "video/mpeg"; + return 1; + } + else if (!strcmp(dot, ".mpe")) { + *mime = "video/mpeg"; + return 1; + } + else if (!strcmp(dot, ".mpg")) { + *mime = "video/mpeg"; + return 1; + } + else if (!strcmp(dot, ".mov")) { + *mime = "video/quicktime"; + return 1; + } + else if (!strcmp(dot, ".qt")) { + *mime = "video/quicktime"; + return 1; + } + else if (!strcmp(dot, ".webm")) { + *mime = "video/webm"; + return 1; + } + else if (!strcmp(dot, ".avi")) { + *mime = "video/x-msvideo"; + return 1; + } + else if (!strcmp(dot, ".movie")) { + *mime = "video/x-sgi-movie"; + return 1; + } + else if (!strcmp(dot, ".a2l")) { + *mime = "application/A2L"; + return 1; + } + else if (!strcmp(dot, ".aml")) { + *mime = "application/AML"; + return 1; + } + else if (!strcmp(dot, ".ez")) { + *mime = "application/andrew-inset"; + return 1; + } + else if (!strcmp(dot, ".atf")) { + *mime = "application/ATF"; + return 1; + } + else if (!strcmp(dot, ".atfx")) { + *mime = "application/ATFX"; + return 1; + } + else if (!strcmp(dot, ".atxml")) { + *mime = "application/ATXML"; + return 1; + } + else if (!strcmp(dot, ".atom")) { + *mime = "application/atom+xml"; + return 1; + } + else if (!strcmp(dot, ".atomcat")) { + *mime = "application/atomcat+xml"; + return 1; + } + else if (!strcmp(dot, ".atomdeleted")) { + *mime = "application/atomdeleted+xml"; + return 1; + } + else if (!strcmp(dot, ".atomsvc")) { + *mime = "application/atomsvc+xml"; + return 1; + } + else if (!strcmp(dot, ".dwd")) { + *mime = "application/atsc-dwd+xml"; + return 1; + } + else if (!strcmp(dot, ".held")) { + *mime = "application/atsc-held+xml"; + return 1; + } + else if (!strcmp(dot, ".rsat")) { + *mime = "application/atsc-rsat+xml"; + return 1; + } + else if (!strcmp(dot, ".apxml")) { + *mime = "application/auth-policy+xml"; + return 1; + } + else if (!strcmp(dot, ".xdd")) { + *mime = "application/bacnet-xdd+zip"; + return 1; + } + else if (!strcmp(dot, ".xcs")) { + *mime = "application/calendar+xml"; + return 1; + } + else if (!strcmp(dot, ".cbor")) { + *mime = "application/cbor"; + return 1; + } + else if (!strcmp(dot, ".c3ex")) { + *mime = "application/cccex"; + return 1; + } + else if (!strcmp(dot, ".ccmp")) { + *mime = "application/ccmp+xml"; + return 1; + } + else if (!strcmp(dot, ".ccxml")) { + *mime = "application/ccxml+xml"; + return 1; + } + else if (!strcmp(dot, ".cdfx")) { + *mime = "application/CDFX+XML"; + return 1; + } + else if (!strcmp(dot, ".cdmia")) { + *mime = "application/cdmi-capability"; + return 1; + } + else if (!strcmp(dot, ".cdmic")) { + *mime = "application/cdmi-container"; + return 1; + } + else if (!strcmp(dot, ".cdmid")) { + *mime = "application/cdmi-domain"; + return 1; + } + else if (!strcmp(dot, ".cdmio")) { + *mime = "application/cdmi-object"; + return 1; + } + else if (!strcmp(dot, ".cdmiq")) { + *mime = "application/cdmi-queue"; + return 1; + } + else if (!strcmp(dot, ".cea")) { + *mime = "application/CEA"; + return 1; + } + else if (!strcmp(dot, ".cellml")) { + *mime = "application/cellml+xml"; + return 1; + } + else if (!strcmp(dot, ".cml")) { + *mime = "chemical/x-cml"; + return 1; + } + else if (!strcmp(dot, ".1clr")) { + *mime = "application/clr"; + return 1; + } + else if (!strcmp(dot, ".clue")) { + *mime = "application/clue_info+xml"; + return 1; + } + else if (!strcmp(dot, ".cmsc")) { + *mime = "application/cms"; + return 1; + } + else if (!strcmp(dot, ".cpl")) { + *mime = "application/cpl+xml"; + return 1; + } + else if (!strcmp(dot, ".csrattrs")) { + *mime = "application/csrattrs"; + return 1; + } + else if (!strcmp(dot, ".mpd")) { + *mime = "application/dash+xml"; + return 1; + } + else if (!strcmp(dot, ".mpdd")) { + *mime = "application/dashdelta"; + return 1; + } + else if (!strcmp(dot, ".davmount")) { + *mime = "application/davmount+xml"; + return 1; + } + else if (!strcmp(dot, ".dcd")) { + *mime = "application/DCD"; + return 1; + } + else if (!strcmp(dot, ".dcm")) { + *mime = "application/dicom"; + return 1; + } + else if (!strcmp(dot, ".dii")) { + *mime = "application/DII"; + return 1; + } + else if (!strcmp(dot, ".dit")) { + *mime = "application/DIT"; + return 1; + } + else if (!strcmp(dot, ".xmls")) { + *mime = "application/dskpp+xml"; + return 1; + } + else if (!strcmp(dot, ".dssc")) { + *mime = "application/dssc+der"; + return 1; + } + else if (!strcmp(dot, ".xdssc")) { + *mime = "application/dssc+xml"; + return 1; + } + else if (!strcmp(dot, ".dvc")) { + *mime = "application/dvcs"; + return 1; + } + else if (!strcmp(dot, ".es")) { + *mime = "application/ecmascript"; + return 1; + } + else if (!strcmp(dot, ".efi")) { + *mime = "application/efi"; + return 1; + } + else if (!strcmp(dot, ".emma")) { + *mime = "application/emma+xml"; + return 1; + } + else if (!strcmp(dot, ".emotionml")) { + *mime = "application/emotionml+xml"; + return 1; + } + else if (!strcmp(dot, ".epub")) { + *mime = "application/epub+zip"; + return 1; + } + else if (!strcmp(dot, ".exi")) { + *mime = "application/exi"; + return 1; + } + else if (!strcmp(dot, ".finf")) { + *mime = "application/fastinfoset"; + return 1; + } + else if (!strcmp(dot, ".fdt")) { + *mime = "application/fdt+xml"; + return 1; + } + else if (!strcmp(dot, ".pfr")) { + *mime = "application/font-tdpfr"; + return 1; + } + else if (!strcmp(dot, ".geojson")) { + *mime = "application/geo+json"; + return 1; + } + else if (!strcmp(dot, ".gpkg")) { + *mime = "application/geopackage+sqlite3"; + return 1; + } + else if (!strcmp(dot, ".glbin")) { + *mime = "application/gltf-buffer"; + return 1; + } + else if (!strcmp(dot, ".glbuf")) { + *mime = "application/gltf-buffer"; + return 1; + } + else if (!strcmp(dot, ".gml")) { + *mime = "application/gml+xml"; + return 1; + } + else if (!strcmp(dot, ".gz")) { + *mime = "application/gzip"; + return 1; + } + else if (!strcmp(dot, ".tgz")) { + *mime = "application/gzip"; + return 1; + } + else if (!strcmp(dot, ".stk")) { + *mime = "application/hyperstudio"; + return 1; + } + else if (!strcmp(dot, ".ink")) { + *mime = "application/inkml+xml"; + return 1; + } + else if (!strcmp(dot, ".inkml")) { + *mime = "application/inkml+xml"; + return 1; + } + else if (!strcmp(dot, ".ipfix")) { + *mime = "application/ipfix"; + return 1; + } + else if (!strcmp(dot, ".its")) { + *mime = "application/its+xml"; + return 1; + } + else if (!strcmp(dot, ".jrd")) { + *mime = "application/jrd+json"; + return 1; + } + else if (!strcmp(dot, ".json-patch")) { + *mime = "application/json-patch+json"; + } + else if (!strcmp(dot, ".jsonld")) { + *mime = "application/ld+json"; + return 1; + } + else if (!strcmp(dot, ".lgr")) { + *mime = "application/lgr+xml"; + return 1; + } + else if (!strcmp(dot, ".wlnk")) { + *mime = "application/link-format"; + return 1; + } + else if (!strcmp(dot, ".lostxml")) { + *mime = "application/lost+xml"; + return 1; + } + else if (!strcmp(dot, ".lostsyncxml")) { + *mime = "application/lostsync+xml"; + return 1; + } + else if (!strcmp(dot, ".lpf")) { + *mime = "application/lpf+zip"; + return 1; + } + else if (!strcmp(dot, ".lxf")) { + *mime = "application/LXF"; + return 1; + } + else if (!strcmp(dot, ".hqx")) { + *mime = "application/mac-binhex40"; + return 1; + } + else if (!strcmp(dot, ".mads")) { + *mime = "application/mads+xml"; + return 1; + } + else if (!strcmp(dot, ".mrc")) { + *mime = "application/marc"; + return 1; + } + else if (!strcmp(dot, ".mrcx")) { + *mime = "application/marcxml+xml"; + return 1; + } + else if (!strcmp(dot, ".nb")) { + *mime = "application/mathematica"; + return 1; + } + else if (!strcmp(dot, ".ma")) { + *mime = "application/mathematica"; + return 1; + } + else if (!strcmp(dot, ".mb")) { + *mime = "application/mathematica"; + return 1; + } + else if (!strcmp(dot, ".mml")) { + *mime = "application/mathml+xml"; + return 1; + } + else if (!strcmp(dot, ".mbox")) { + *mime = "application/mbox"; + return 1; + } + else if (!strcmp(dot, ".meta4")) { + *mime = "application/metalink4+xml"; + return 1; + } + else if (!strcmp(dot, ".mets")) { + *mime = "application/mets+xml"; + return 1; + } + else if (!strcmp(dot, ".mf4")) { + *mime = "application/MF4"; + return 1; + } + else if (!strcmp(dot, ".maei")) { + *mime = "application/mmt-aei+xml"; + return 1; + } + else if (!strcmp(dot, ".musd")) { + *mime = "application/mmt-usd+xml"; + return 1; + } + else if (!strcmp(dot, ".mods")) { + *mime = "application/mods+xml"; + return 1; + } + else if (!strcmp(dot, ".m21")) { + *mime = "application/mp21"; + return 1; + } + else if (!strcmp(dot, ".mp21")) { + *mime = "application/mp21"; + return 1; + } + else if (!strcmp(dot, ".mxf")) { + *mime = "application/mxf"; + return 1; + } + else if (!strcmp(dot, ".nq")) { + *mime = "application/n-quads"; + return 1; + } + else if (!strcmp(dot, ".nt")) { + *mime = "application/n-triples"; + return 1; + } + else if (!strcmp(dot, ".orq")) { + *mime = "application/ocsp-request"; + return 1; + } + else if (!strcmp(dot, ".ors")) { + *mime = "application/ocsp-response"; + return 1; + } + else if (!strcmp(dot, ".lha")) { + *mime = "application/x-lzh-compressed"; + return 1; + } + else if (!strcmp(dot, ".lzh")) { + *mime = "application/x-lzh-compressed"; + return 1; + } + else if (!strcmp(dot, ".class")) { + *mime = "application/java-vm"; + return 1; + } + else if (!strcmp(dot, ".img")) { + *mime = "application/octet-stream"; + return 1; + } + else if (!strcmp(dot, ".iso")) { + *mime = "application/x-iso9660-image"; + return 1; + } + else if (!strcmp(dot, ".odx")) { + *mime = "application/ODX"; + return 1; + } + else if (!strcmp(dot, ".opf")) { + *mime = "application/oebps-package+xml"; + return 1; + } + else if (!strcmp(dot, ".ogx")) { + *mime = "application/ogg"; + return 1; + } + else if (!strcmp(dot, ".oxps")) { + *mime = "application/oxps"; + return 1; + } + else if (!strcmp(dot, ".relo")) { + *mime = "application/p2p-overlay+xml"; + return 1; + } + else if (!strcmp(dot, ".pdx")) { + *mime = "application/PDX"; + return 1; + } + else if (!strcmp(dot, ".pem")) { + *mime = "application/pem-certificate-chain"; + return 1; + } + else if (!strcmp(dot, ".pgp")) { + *mime = "application/pgp-encrypted"; + return 1; + } + else if (!strcmp(dot, ".sig")) { + *mime = "application/pgp-signature"; + return 1; + } + else if (!strcmp(dot, ".p10")) { + *mime = "application/pkcs10"; + return 1; + } + else if (!strcmp(dot, ".p7m")) { + *mime = "application/pkcs7-mime"; + return 1; + } + else if (!strcmp(dot, ".p7s")) { + *mime = "application/pkcs7-signature"; + return 1; + } + else if (!strcmp(dot, ".p8")) { + *mime = "application/pkcs8"; + return 1; + } + else if (!strcmp(dot, ".p8e")) { + *mime = "application/pkcs8-encrypted"; + return 1; + } + else if (!strcmp(dot, ".cer")) { + *mime = "application/pkix-cert"; + return 1; + } + else if (!strcmp(dot, ".crl")) { + *mime = "application/pkix-crl"; + return 1; + } + else if (!strcmp(dot, ".pkipath")) { + *mime = "application/pkix-pkipath"; + return 1; + } + else if (!strcmp(dot, ".pki")) { + *mime = "application/pkixcmp"; + return 1; + } + else if (!strcmp(dot, ".pls")) { + *mime = "application/pls+xml"; + return 1; + } + else if (!strcmp(dot, ".provx")) { + *mime = "application/provenance+xml"; + return 1; + } + else if (!strcmp(dot, ".cw")) { + *mime = "application/prs.cww"; + return 1; + } + else if (!strcmp(dot, ".cww")) { + *mime = "application/prs.cww"; + return 1; + } + else if (!strcmp(dot, ".hpub")) { + *mime = "application/prs.hpub+zip"; + return 1; + } + else if (!strcmp(dot, ".rnd")) { + *mime = "application/prs.nprend"; + return 1; + } + else if (!strcmp(dot, ".rct")) { + *mime = "application/prs.nprend"; + return 1; + } + else if (!strcmp(dot, ".rdf-crypt")) { + *mime = "application/prs.rdf-xml-crypt"; + return 1; + } + else if (!strcmp(dot, ".xsf")) { + *mime = "application/prs.xsf+xml"; + return 1; + } + else if (!strcmp(dot, ".pskcxml")) { + *mime = "application/pskc+xml"; + return 1; + } + else if (!strcmp(dot, ".rapd")) { + *mime = "application/route-apd+xml"; + return 1; + } + else if (!strcmp(dot, ".sls")) { + *mime = "application/route-s-tsid+xml"; + return 1; + } + else if (!strcmp(dot, ".rusd")) { + *mime = "application/route-usd+xml"; + return 1; + } + else if (!strcmp(dot, ".rif")) { + *mime = "application/reginfo+xml"; + return 1; + } + else if (!strcmp(dot, ".rnc")) { + *mime = "application/relax-ng-compact-syntax"; + return 1; + } + else if (!strcmp(dot, ".rld")) { + *mime = "application/resource-lists-diff+xml"; + return 1; + } + else if (!strcmp(dot, ".rl")) { + *mime = "application/resource-lists+xml"; + return 1; + } + else if (!strcmp(dot, ".rfcxml")) { + *mime = "application/rfc+xml"; + return 1; + } + else if (!strcmp(dot, ".rs")) { + *mime = "application/rls-services+xml"; + return 1; + } + else if (!strcmp(dot, ".gbr")) { + *mime = "application/rpki-ghostbusters"; + return 1; + } + else if (!strcmp(dot, ".mft")) { + *mime = "application/rpki-manifest"; + return 1; + } + else if (!strcmp(dot, ".roa")) { + *mime = "application/rpki-roa"; + return 1; + } + else if (!strcmp(dot, ".rtf")) { + *mime = "application/rtf"; + return 1; + } + else if (!strcmp(dot, ".sarif-external-properties")) { + *mime = "application/sarif-external-properties+json"; + return 1; + } + else if (!strcmp(dot, ".sarif-external-properties.json")) { + *mime = "application/sarif-external-properties+json"; + return 1; + } + else if (!strcmp(dot, ".sarif")) { + *mime = "application/sarif+json"; + return 1; + } + else if (!strcmp(dot, ".sarif.json")) { + *mime = "application/sarif+json"; + return 1; + } + else if (!strcmp(dot, ".scim")) { + *mime = "application/scim+json"; + return 1; + } + else if (!strcmp(dot, ".scq")) { + *mime = "application/scvp-cv-request"; + return 1; + } + else if (!strcmp(dot, ".scs")) { + *mime = "application/scvp-cv-response"; + return 1; + } + else if (!strcmp(dot, ".spq")) { + *mime = "application/scvp-vp-request"; + return 1; + } + else if (!strcmp(dot, ".spp")) { + *mime = "application/scvp-vp-response"; + return 1; + } + else if (!strcmp(dot, ".sdp")) { + *mime = "application/sdp"; + return 1; + } + else if (!strcmp(dot, ".senml-etchc")) { + *mime = "application/senml-etch+cbor"; + return 1; + } + else if (!strcmp(dot, ".senml-etchj")) { + *mime = "application/senml-etch+json"; + return 1; + } + else if (!strcmp(dot, ".senmlc")) { + *mime = "application/senml+cbor"; + return 1; + } + else if (!strcmp(dot, ".senml")) { + *mime = "application/senml+json"; + return 1; + } + else if (!strcmp(dot, ".senmlx")) { + *mime = "application/senml+xml"; + return 1; + } + else if (!strcmp(dot, ".senmle")) { + *mime = "application/senml-exi"; + return 1; + } + else if (!strcmp(dot, ".sensmlc")) { + *mime = "application/sensml+cbor"; + return 1; + } + else if (!strcmp(dot, ".sensml")) { + *mime = "application/sensml+json"; + return 1; + } + else if (!strcmp(dot, ".sensmlx")) { + *mime = "application/sensml+xml"; + return 1; + } + else if (!strcmp(dot, ".sensmle")) { + *mime = "application/sensml-exi"; + return 1; + } + else if (!strcmp(dot, ".soc")) { + *mime = "application/sgml-open-catalog"; + return 1; + } + else if (!strcmp(dot, ".shf")) { + *mime = "application/shf+xml"; + return 1; + } + else if (!strcmp(dot, ".siv")) { + *mime = "application/sieve"; + return 1; + } + else if (!strcmp(dot, ".sieve")) { + *mime = "application/sieve"; + return 1; + } + else if (!strcmp(dot, ".cl")) { + *mime = "application/simple-filter+xml"; + return 1; + } + else if (!strcmp(dot, ".smil")) { + *mime = "application/smil+xml"; + return 1; + } + else if (!strcmp(dot, ".smi")) { + *mime = "application/smil+xml"; + return 1; + } + else if (!strcmp(dot, ".sml")) { + *mime = "application/smil+xml"; + return 1; + } + else if (!strcmp(dot, ".rq")) { + *mime = "application/sparql-query"; + return 1; + } + else if (!strcmp(dot, ".srx")) { + *mime = "application/sparql-results+xml"; + return 1; + } + else if (!strcmp(dot, ".sql")) { + *mime = "application/x-sql"; + return 1; + } + else if (!strcmp(dot, ".gram")) { + *mime = "application/srgs"; + return 1; + } + else if (!strcmp(dot, ".grxml")) { + *mime = "application/srgs+xml"; + return 1; + } + else if (!strcmp(dot, ".sru")) { + *mime = "application/sru+xml"; + return 1; + } + else if (!strcmp(dot, ".ssml")) { + *mime = "application/ssml+xml"; + return 1; + } + else if (!strcmp(dot, ".stix")) { + *mime = "application/stix+json"; + return 1; + } + else if (!strcmp(dot, ".swidtag")) { + *mime = "application/swid+xml"; + return 1; + } + else if (!strcmp(dot, ".tau")) { + *mime = "application/tamp-apex-update"; + return 1; + } + else if (!strcmp(dot, ".auc")) { + *mime = "application/tamp-apex-update-confirm"; + return 1; + } + else if (!strcmp(dot, ".tcu")) { + *mime = "application/tamp-community-update"; + return 1; + } + else if (!strcmp(dot, ".cuc")) { + *mime = "application/tamp-community-update-confirm"; + return 1; + } + else if (!strcmp(dot, ".jsontd")) { + *mime = "application/td+json"; + return 1; + } + else if (!strcmp(dot, ".ter")) { + *mime = "application/tamp-error"; + return 1; + } + else if (!strcmp(dot, ".tsa")) { + *mime = "application/tamp-sequence-adjust"; + return 1; + } + else if (!strcmp(dot, ".sac")) { + *mime = "application/tamp-sequence-adjust-confirm"; + return 1; + } + else if (!strcmp(dot, ".tur")) { + *mime = "application/tamp-update"; + return 1; + } + else if (!strcmp(dot, ".tuc")) { + *mime = "application/tamp-update-confirm"; + return 1; + } + else if (!strcmp(dot, ".tei")) { + *mime = "application/tei+xml"; + return 1; + } + else if (!strcmp(dot, ".teiCorpus")) { + *mime = "application/tei+xml"; + return 1; + } + else if (!strcmp(dot, ".odd")) { + *mime = "application/tei+xml"; + return 1; + } + else if (!strcmp(dot, ".tfi")) { + *mime = "application/thraud+xml"; + return 1; + } + else if (!strcmp(dot, ".tsq")) { + *mime = "application/timestamp-query"; + return 1; + } + else if (!strcmp(dot, ".tsr")) { + *mime = "application/timestamp-reply"; + return 1; + } + else if (!strcmp(dot, ".tsd")) { + *mime = "application/timestamped-data"; + return 1; + } + else if (!strcmp(dot, ".trig")) { + *mime = "application/trig"; + return 1; + } + else if (!strcmp(dot, ".ttml")) { + *mime = "application/ttml+xml"; + return 1; + } + else if (!strcmp(dot, ".gsheet")) { + *mime = "application/urc-grpsheet+xml"; + return 1; + } + else if (!strcmp(dot, ".rsheet")) { + *mime = "application/urc-ressheet+xml"; + return 1; + } + else if (!strcmp(dot, ".td")) { + *mime = "application/urc-targetdesc+xml"; + return 1; + } + else if (!strcmp(dot, ".uis")) { + *mime = "application/urc-uisocketdesc+xml"; + return 1; + } + else if (!strcmp(dot, ".1km")) { + *mime = "application/vnd.1000minds.decision-model+xml"; + return 1; + } + else if (!strcmp(dot, ".plb")) { + *mime = "application/vnd.3gpp.pic-bw-large"; + return 1; + } + else if (!strcmp(dot, ".psb")) { + *mime = "application/vnd.3gpp.pic-bw-small"; + return 1; + } + else if (!strcmp(dot, ".pvb")) { + *mime = "application/vnd.3gpp.pic-bw-var"; + return 1; + } + else if (!strcmp(dot, ".sms")) { + *mime = "application/vnd.3gpp2.sms"; + return 1; + } + else if (!strcmp(dot, ".tcap")) { + *mime = "application/vnd.3gpp2.tcap"; + return 1; + } + else if (!strcmp(dot, ".imgcal")) { + *mime = "application/vnd.3lightssoftware.imagescal"; + return 1; + } + else if (!strcmp(dot, ".pwn")) { + *mime = "application/vnd.3m.post-it-notes"; + return 1; + } + else if (!strcmp(dot, ".aso")) { + *mime = "application/vnd.accpac.simply.aso"; + return 1; + } + else if (!strcmp(dot, ".imp")) { + *mime = "application/vnd.accpac.simply.imp"; + return 1; + } + else if (!strcmp(dot, ".acu")) { + *mime = "application/vnd.acucobol"; + return 1; + } + else if (!strcmp(dot, ".atc")) { + *mime = "application/vnd.acucorp"; + return 1; + } + else if (!strcmp(dot, ".acutc")) { + *mime = "application/vnd.acucorp"; + return 1; + } + else if (!strcmp(dot, ".fcdt")) { + *mime = "application/vnd.adobe.formscentral.fcdt"; + return 1; + } + else if (!strcmp(dot, ".fxp")) { + *mime = "application/vnd.adobe.fxp"; + return 1; + } + else if (!strcmp(dot, ".fxpl")) { + *mime = "application/vnd.adobe.fxp"; + return 1; + } + else if (!strcmp(dot, ".xdp")) { + *mime = "application/vnd.adobe.xdp+xml"; + return 1; + } + else if (!strcmp(dot, ".xfdf")) { + *mime = "application/vnd.adobe.xfdf"; + return 1; + } + else if (!strcmp(dot, ".list3820")) { + *mime = "application/vnd.ibm.modcap"; + return 1; + } + else if (!strcmp(dot, ".listafp")) { + *mime = "application/vnd.ibm.modcap"; + return 1; + } + else if (!strcmp(dot, ".afp")) { + *mime = "application/vnd.ibm.modcap"; + return 1; + } + else if (!strcmp(dot, ".pseg3820")) { + *mime = "application/vnd.afpc.modca"; + return 1; + } + else if (!strcmp(dot, ".ovl")) { + *mime = "application/vnd.afpc.modca-overlay"; + return 1; + } + else if (!strcmp(dot, ".psg")) { + *mime = "application/vnd.afpc.modca-pagesegment"; + return 1; + } + else if (!strcmp(dot, ".ahead")) { + *mime = "application/vnd.ahead.space"; + return 1; + } + else if (!strcmp(dot, ".azf")) { + *mime = "application/vnd.airzip.filesecure.azf"; + return 1; + } + else if (!strcmp(dot, ".azs")) { + *mime = "application/vnd.airzip.filesecure.azs"; + return 1; + } + else if (!strcmp(dot, ".azw3")) { + *mime = "application/vnd.amazon.mobi8-ebook"; + return 1; + } + else if (!strcmp(dot, ".acc")) { + *mime = "application/vnd.americandynamics.acc"; + return 1; + } + else if (!strcmp(dot, ".ami")) { + *mime = "application/vnd.amiga.ami"; + return 1; + } + else if (!strcmp(dot, ".ota")) { + *mime = "application/vnd.android.ota"; + return 1; + } + else if (!strcmp(dot, ".apkg")) { + *mime = "application/vnd.anki"; + return 1; + } + else if (!strcmp(dot, ".cii")) { + *mime = "application/vnd.anser-web-certificate-issue-initiation"; + return 1; + } + else if (!strcmp(dot, ".fti")) { + *mime = "application/vnd.anser-web-funds-transfer-initiation"; + return 1; + } + else if (!strcmp(dot, ".dist")) { + *mime = "application/octet-stream"; + return 1; + } + else if (!strcmp(dot, ".distz")) { + *mime = "application/octet-stream"; + return 1; + } + else if (!strcmp(dot, ".pkg")) { + *mime = "application/octet-stream"; + return 1; + } + else if (!strcmp(dot, ".mpkg")) { + *mime = "application/vnd.apple.installer+xml"; + return 1; + } + else if (!strcmp(dot, ".keynote")) { + *mime = "application/vnd.apple.keynote"; + return 1; + } + else if (!strcmp(dot, ".numbers")) { + *mime = "application/vnd.apple.numbers"; + return 1; + } + else if (!strcmp(dot, ".pages")) { + *mime = "application/vnd.apple.pages"; + return 1; + } + else if (!strcmp(dot, ".swi")) { + *mime = "application/vnd.aristanetworks.swi"; + return 1; + } + else if (!strcmp(dot, ".artisan")) { + *mime = "application/vnd.artisan+json"; + return 1; + } + else if (!strcmp(dot, ".iota")) { + *mime = "application/vnd.astraea-software.iota"; + return 1; + } + else if (!strcmp(dot, ".aep")) { + *mime = "application/vnd.audiograph"; + return 1; + } + else if (!strcmp(dot, ".package")) { + *mime = "application/vnd.autopackage"; + return 1; + } + else if (!strcmp(dot, ".bmml")) { + *mime = "application/vnd.balsamiq.bmml+xml"; + return 1; + } + else if (!strcmp(dot, ".ac2")) { + *mime = "application/vnd.banana-accounting"; + return 1; + } + else if (!strcmp(dot, ".bmpr")) { + *mime = "application/vnd.balsamiq.bmpr"; + return 1; + } + else if (!strcmp(dot, ".mpm")) { + *mime = "application/vnd.blueice.multipass"; + return 1; + } + else if (!strcmp(dot, ".ep")) { + *mime = "application/vnd.bluetooth.ep.oob"; + return 1; + } + else if (!strcmp(dot, ".le")) { + *mime = "application/vnd.bluetooth.le.oob"; + return 1; + } + else if (!strcmp(dot, ".bmi")) { + *mime = "application/vnd.bmi"; + return 1; + } + else if (!strcmp(dot, ".rep")) { + *mime = "application/vnd.businessobjects"; + return 1; + } + else if (!strcmp(dot, ".tlclient")) { + *mime = "application/vnd.cendio.thinlinc.clientconf"; + return 1; + } + else if (!strcmp(dot, ".cdxml")) { + *mime = "application/vnd.chemdraw+xml"; + return 1; + } + else if (!strcmp(dot, ".pgn")) { + *mime = "application/x-chess-pgn"; + return 1; + } + else if (!strcmp(dot, ".mmd")) { + *mime = "application/vnd.chipnuts.karaoke-mmd"; + return 1; + } + else if (!strcmp(dot, ".cdy")) { + *mime = "application/vnd.cinderella"; + return 1; + } + else if (!strcmp(dot, ".csl")) { + *mime = "application/vnd.citationstyles.style+xml"; + return 1; + } + else if (!strcmp(dot, ".cla")) { + *mime = "application/vnd.claymore"; + return 1; + } + else if (!strcmp(dot, ".rp9")) { + *mime = "application/vnd.cloanto.rp9"; + return 1; + } + else if (!strcmp(dot, ".c4g")) { + *mime = "application/vnd.clonk.c4group"; + return 1; + } + else if (!strcmp(dot, ".c4d")) { + *mime = "application/vnd.clonk.c4group"; + return 1; + } + else if (!strcmp(dot, ".c4f")) { + *mime = "application/vnd.clonk.c4group"; + return 1; + } + else if (!strcmp(dot, ".c4p")) { + *mime = "application/vnd.clonk.c4group"; + return 1; + } + else if (!strcmp(dot, ".c4u")) { + *mime = "application/vnd.clonk.c4group"; + return 1; + } + else if (!strcmp(dot, ".c11amc")) { + *mime = "application/vnd.cluetrust.cartomobile-config"; + return 1; + } + else if (!strcmp(dot, ".c11amz")) { + *mime = "application/vnd.cluetrust.cartomobile-config-pkg"; + return 1; + } + else if (!strcmp(dot, ".coffee")) { + *mime = "application/vnd.coffeescript"; + return 1; + } + else if (!strcmp(dot, ".xodt")) { + *mime = "application/vnd.collabio.xodocuments.document"; + return 1; + } + else if (!strcmp(dot, ".xott")) { + *mime = "application/vnd.collabio.xodocuments.document-template"; + return 1; + } + else if (!strcmp(dot, ".xodp")) { + *mime = "application/vnd.collabio.xodocuments.presentation"; + return 1; + } + else if (!strcmp(dot, ".xotp")) { + *mime = "application/vnd.collabio.xodocuments.presentation-template"; + return 1; + } + else if (!strcmp(dot, ".xods")) { + *mime = "application/vnd.collabio.xodocuments.spreadsheet"; + return 1; + } + else if (!strcmp(dot, ".xots")) { + *mime = "application/vnd.collabio.xodocuments.spreadsheet-template"; + return 1; + } + else if (!strcmp(dot, ".cbr")) { + *mime = "application/x-cbr"; + return 1; + } + else if (!strcmp(dot, ".cbz")) { + *mime = "application/x-cbr"; + return 1; + } + else if (!strcmp(dot, ".ica")) { + *mime = "application/vnd.commerce-battelle"; + return 1; + } + else if (!strcmp(dot, ".icf")) { + *mime = "application/vnd.commerce-battelle"; + return 1; + } + else if (!strcmp(dot, ".icd")) { + *mime = "application/vnd.commerce-battelle"; + return 1; + } + else if (!strcmp(dot, ".ic0")) { + *mime = "application/vnd.commerce-battelle"; + return 1; + } + else if (!strcmp(dot, ".ic1")) { + *mime = "application/vnd.commerce-battelle"; + return 1; + } + else if (!strcmp(dot, ".ic2")) { + *mime = "application/vnd.commerce-battelle"; + return 1; + } + else if (!strcmp(dot, ".ic3")) { + *mime = "application/vnd.commerce-battelle"; + return 1; + } + else if (!strcmp(dot, ".ic4")) { + *mime = "application/vnd.commerce-battelle"; + return 1; + } + else if (!strcmp(dot, ".ic5")) { + *mime = "application/vnd.commerce-battelle"; + return 1; + } + else if (!strcmp(dot, ".ic6")) { + *mime = "application/vnd.commerce-battelle"; + return 1; + } + else if (!strcmp(dot, ".ic7")) { + *mime = "application/vnd.commerce-battelle"; + return 1; + } + else if (!strcmp(dot, ".ic8")) { + *mime = "application/vnd.commerce-battelle"; + return 1; + } + else if (!strcmp(dot, ".csp")) { + *mime = "application/vnd.commonspace"; + return 1; + } + else if (!strcmp(dot, ".cst")) { + *mime = "application/x-director"; + return 1; + } + else if (!strcmp(dot, ".cdbcmsg")) { + *mime = "application/vnd.contact.cmsg"; + return 1; + } + else if (!strcmp(dot, ".ign")) { + *mime = "application/vnd.coreos.ignition+json"; + return 1; + } + else if (!strcmp(dot, ".ignition")) { + *mime = "application/vnd.coreos.ignition+json"; + return 1; + } + else if (!strcmp(dot, ".cmc")) { + *mime = "application/vnd.cosmocaller"; + return 1; + } + else if (!strcmp(dot, ".clkx")) { + *mime = "application/vnd.crick.clicker"; + return 1; + } + else if (!strcmp(dot, ".clkk")) { + *mime = "application/vnd.crick.clicker.keyboard"; + return 1; + } + else if (!strcmp(dot, ".clkp")) { + *mime = "application/vnd.crick.clicker.palette"; + return 1; + } + else if (!strcmp(dot, ".clkt")) { + *mime = "application/vnd.crick.clicker.template"; + return 1; + } + else if (!strcmp(dot, ".clkw")) { + *mime = "application/vnd.crick.clicker.wordbank"; + return 1; + } + else if (!strcmp(dot, ".wbs")) { + *mime = "application/vnd.criticaltools.wbs+xml"; + return 1; + } + else if (!strcmp(dot, ".ssvc")) { + *mime = "application/vnd.crypto-shade-file"; + return 1; + } + else if (!strcmp(dot, ".c9r")) { + *mime = "application/vnd.cryptomator.encrypted"; + return 1; + } + else if (!strcmp(dot, ".c9s")) { + *mime = "application/vnd.cryptomator.encrypted"; + return 1; + } + else if (!strcmp(dot, ".cryptomator")) { + *mime = "application/vnd.cryptomator.vault"; + return 1; + } + else if (!strcmp(dot, ".pml")) { + *mime = "application/vnd.ctc-posml"; + return 1; + } + else if (!strcmp(dot, ".ppd")) { + *mime = "application/vnd.cups-ppd"; + return 1; + } + else if (!strcmp(dot, ".curl")) { + *mime = "text/vnd.curl"; + } + else if (!strcmp(dot, ".dart")) { + *mime = "application/vnd.dart"; + return 1; + } + else if (!strcmp(dot, ".rdz")) { + *mime = "application/vnd.data-vision.rdz"; + return 1; + } + else if (!strcmp(dot, ".dbf")) { + *mime = "application/vnd.dbf"; + return 1; + } + else if (!strcmp(dot, ".deb")) { + *mime = "application/x-debian-package"; + return 1; + } + else if (!strcmp(dot, ".udeb")) { + *mime = "application/x-debian-package"; + return 1; + } + else if (!strcmp(dot, ".uvf")) { + *mime = "application/vnd.dece.data"; + return 1; + } + else if (!strcmp(dot, ".uvvf")) { + *mime = "application/vnd.dece.data"; + return 1; + } + else if (!strcmp(dot, ".uvd")) { + *mime = "application/vnd.dece.data"; + return 1; + } + else if (!strcmp(dot, ".uvvd")) { + *mime = "application/vnd.dece.data"; + return 1; + } + else if (!strcmp(dot, ".uvt")) { + *mime = "application/vnd.dece.ttml+xml"; + return 1; + } + else if (!strcmp(dot, ".uvvt")) { + *mime = "application/vnd.dece.ttml+xml"; + return 1; + } + else if (!strcmp(dot, ".uvx")) { + *mime = "application/vnd.dece.unspecified"; + return 1; + } + else if (!strcmp(dot, ".uvvx")) { + *mime = "application/vnd.dece.unspecified"; + return 1; + } + else if (!strcmp(dot, ".uvz")) { + *mime = "application/vnd.dece.zip"; + return 1; + } + else if (!strcmp(dot, ".uvvz")) { + *mime = "application/vnd.dece.zip"; + return 1; + } + else if (!strcmp(dot, ".fe_launch")) { + *mime = "application/vnd.denovo.fcselayout-link"; + return 1; + } + else if (!strcmp(dot, ".dsm")) { + *mime = "application/vnd.desmume.movie"; + return 1; + } + else if (!strcmp(dot, ".dna")) { + *mime = "application/vnd.dna"; + return 1; + } + else if (!strcmp(dot, ".docjson")) { + *mime = "application/vnd.document+json"; + return 1; + } + else if (!strcmp(dot, ".scld")) { + *mime = "application/vnd.doremir.scorecloud-binary-document"; + return 1; + } + else if (!strcmp(dot, ".dpg")) { + *mime = "application/vnd.dpgraph"; + return 1; + } + else if (!strcmp(dot, ".mwc")) { + *mime = "application/vnd.dpgraph"; + return 1; + } + else if (!strcmp(dot, ".dpgraph")) { + *mime = "application/vnd.dpgraph"; + return 1; + } + else if (!strcmp(dot, ".dfac")) { + *mime = "application/vnd.dreamfactory"; + return 1; + } + else if (!strcmp(dot, ".fla")) { + *mime = "application/vnd.dtg.local.flash"; + return 1; + } + else if (!strcmp(dot, ".ait")) { + *mime = "application/vnd.dvb.ait"; + return 1; + } + else if (!strcmp(dot, ".svc")) { + *mime = "application/vnd.dvb.service"; + return 1; + } + else if (!strcmp(dot, ".geo")) { + *mime = "application/vnd.dynageo"; + return 1; + } + else if (!strcmp(dot, ".dzr")) { + *mime = "application/vnd.dzr"; + return 1; + } + else if (!strcmp(dot, ".mag")) { + *mime = "application/vnd.ecowin.chart"; + return 1; + } + else if (!strcmp(dot, ".nml")) { + *mime = "application/vnd.enliven"; + return 1; + } + else if (!strcmp(dot, ".esf")) { + *mime = "application/vnd.epson.esf"; + return 1; + } + else if (!strcmp(dot, ".msf")) { + *mime = "application/vnd.epson.msf"; + return 1; + } + else if (!strcmp(dot, ".qam")) { + *mime = "application/vnd.epson.quickanime"; + return 1; + } + else if (!strcmp(dot, ".slt")) { + *mime = "application/vnd.epson.salt"; + return 1; + } + else if (!strcmp(dot, ".ssf")) { + *mime = "application/vnd.epson.ssf"; + return 1; + } + else if (!strcmp(dot, ".qcall")) { + *mime = "application/vnd.ericsson.quickcall"; + return 1; + } + else if (!strcmp(dot, ".qca")) { + *mime = "application/vnd.ericsson.quickcall"; + return 1; + } + else if (!strcmp(dot, ".espass")) { + *mime = "application/vnd.espass-espass+zip"; + return 1; + } + else if (!strcmp(dot, ".es3")) { + *mime = "application/vnd.eszigno3+xml"; + return 1; + } + else if (!strcmp(dot, ".et3")) { + *mime = "application/vnd.eszigno3+xml"; + return 1; + } + else if (!strcmp(dot, ".asice")) { + *mime = "application/vnd.etsi.asic-e+zip"; + return 1; + } + else if (!strcmp(dot, ".sce")) { + *mime = "application/vnd.etsi.asic-e+zip"; + return 1; + } + else if (!strcmp(dot, ".asics")) { + *mime = "application/vnd.etsi.asic-s+zip"; + return 1; + } + else if (!strcmp(dot, ".tst")) { + *mime = "application/vnd.etsi.timestamp-token"; + return 1; + } + else if (!strcmp(dot, ".mpw")) { + *mime = "application/vnd.exstream-empower+zip"; + return 1; + } + else if (!strcmp(dot, ".pub")) { + *mime = "application/x-mspublisher"; + return 1; + } + else if (!strcmp(dot, ".ecigprofile")) { + *mime = "application/vnd.evolv.ecig.profile"; + return 1; + } + else if (!strcmp(dot, ".ecig")) { + *mime = "application/vnd.evolv.ecig.settings"; + return 1; + } + else if (!strcmp(dot, ".ecigtheme")) { + *mime = "application/vnd.evolv.ecig.theme"; + return 1; + } + else if (!strcmp(dot, ".ez2")) { + *mime = "application/vnd.ezpix-album"; + return 1; + } + else if (!strcmp(dot, ".ez3")) { + *mime = "application/vnd.ezpix-package"; + return 1; + } + else if (!strcmp(dot, ".dim")) { + *mime = "application/vnd.fastcopy-disk-image"; + return 1; + } + else if (!strcmp(dot, ".fdf")) { + *mime = "application/vnd.fdf"; + return 1; + } + else if (!strcmp(dot, ".msd")) { + *mime = "application/vnd.fdsn.mseed"; + return 1; + } + else if (!strcmp(dot, ".mseed")) { + *mime = "application/vnd.fdsn.mseed"; + return 1; + } + else if (!strcmp(dot, ".seed")) { + *mime = "application/vnd.fdsn.seed"; + return 1; + } + else if (!strcmp(dot, ".dataless")) { + *mime = "application/vnd.fdsn.seed"; + return 1; + } + else if (!strcmp(dot, ".flb")) { + *mime = "application/vnd.ficlab.flb+zip"; + return 1; + } + else if (!strcmp(dot, ".zfc")) { + *mime = "application/vnd.filmit.zfc"; + return 1; + } + else if (!strcmp(dot, ".gph")) { + *mime = "application/vnd.flographit"; + return 1; + } + else if (!strcmp(dot, ".ftc")) { + *mime = "application/vnd.fluxtime.clip"; + return 1; + } + else if (!strcmp(dot, ".sfd")) { + *mime = "application/vnd.font-fontforge-sfd"; + return 1; + } + else if (!strcmp(dot, ".fm")) { + *mime = "application/vnd.framemaker"; + return 1; + } + else if (!strcmp(dot, ".fnc")) { + *mime = "application/vnd.frogans.fnc"; + return 1; + } + else if (!strcmp(dot, ".ltf")) { + *mime = "application/vnd.frogans.ltf"; + return 1; + } + else if (!strcmp(dot, ".fsc")) { + *mime = "application/vnd.fsc.weblaunch"; + return 1; + } + else if (!strcmp(dot, ".oas")) { + *mime = "application/vnd.fujitsu.oasys"; + return 1; + } + else if (!strcmp(dot, ".oa2")) { + *mime = "application/vnd.fujitsu.oasys2"; + return 1; + } + else if (!strcmp(dot, ".oa3")) { + *mime = "application/vnd.fujitsu.oasys3"; + return 1; + } + else if (!strcmp(dot, ".fg5")) { + *mime = "application/vnd.fujitsu.oasysgp"; + return 1; + } + else if (!strcmp(dot, ".bh2")) { + *mime = "application/vnd.fujitsu.oasysprs"; + return 1; + } + else if (!strcmp(dot, ".ddd")) { + *mime = "application/vnd.fujixerox.ddd"; + return 1; + } + else if (!strcmp(dot, ".xdw")) { + *mime = "application/vnd.fujixerox.docuworks"; + return 1; + } + else if (!strcmp(dot, ".xbd")) { + *mime = "application/vnd.fujixerox.docuworks.binder"; + return 1; + } + else if (!strcmp(dot, ".xct")) { + *mime = "application/vnd.fujixerox.docuworks.container"; + return 1; + } + else if (!strcmp(dot, ".fzs")) { + *mime = "application/vnd.fuzzysheet"; + return 1; + } + else if (!strcmp(dot, ".txd")) { + *mime = "application/vnd.genomatix.tuxedo"; + return 1; + } + else if (!strcmp(dot, ".g3")) { + *mime = "image/g3fax"; + return 1; + } + else if (!strcmp(dot, ".g³")) { + *mime = "application/vnd.geocube+xml"; + return 1; + } + else if (!strcmp(dot, ".ggb")) { + *mime = "application/vnd.geogebra.file"; + return 1; + } + else if (!strcmp(dot, ".ggs")) { + *mime = "application/vnd.geogebra.slides"; + return 1; + } + else if (!strcmp(dot, ".ggt")) { + *mime = "application/vnd.geogebra.tool"; + return 1; + } + else if (!strcmp(dot, ".gex")) { + *mime = "application/vnd.geometry-explorer"; + return 1; + } + else if (!strcmp(dot, ".gre")) { + *mime = "application/vnd.geometry-explorer"; + return 1; + } + else if (!strcmp(dot, ".gxt")) { + *mime = "application/vnd.geonext"; + return 1; + } + else if (!strcmp(dot, ".g2w")) { + *mime = "application/vnd.geoplan"; + return 1; + } + else if (!strcmp(dot, ".g3w")) { + *mime = "application/vnd.geospace"; + return 1; + } + else if (!strcmp(dot, ".gmx")) { + *mime = "application/vnd.gmx"; + return 1; + } + else if (!strcmp(dot, ".kml")) { + *mime = "application/vnd.google-earth.kml+xml"; + return 1; + } + else if (!strcmp(dot, ".kmz")) { + *mime = "application/vnd.google-earth.kmz"; + return 1; + } + else if (!strcmp(dot, ".gqf")) { + *mime = "application/vnd.grafeq"; + return 1; + } + else if (!strcmp(dot, ".gqs")) { + *mime = "application/vnd.grafeq"; + return 1; + } + else if (!strcmp(dot, ".gac")) { + *mime = "application/vnd.groove-account"; + return 1; + } + else if (!strcmp(dot, ".ghf")) { + *mime = "application/vnd.groove-help"; + return 1; + } + else if (!strcmp(dot, ".gim")) { + *mime = "application/vnd.groove-identity-message"; + return 1; + } + else if (!strcmp(dot, ".grv")) { + *mime = "application/vnd.groove-injector"; + return 1; + } + else if (!strcmp(dot, ".gtm")) { + *mime = "application/vnd.groove-tool-message"; + return 1; + } + else if (!strcmp(dot, ".tpl")) { + *mime = "application/vnd.groove-tool-template"; + return 1; + } + else if (!strcmp(dot, ".vcg")) { + *mime = "application/vnd.groove-vcard"; + return 1; + } + else if (!strcmp(dot, ".hal")) { + *mime = "application/vnd.hal+xml"; + return 1; + } + else if (!strcmp(dot, ".zmm")) { + *mime = "application/vnd.handheld-entertainment+xml"; + return 1; + } + else if (!strcmp(dot, ".hbci")) { + *mime = "application/vnd.hbci"; + return 1; + } + else if (!strcmp(dot, ".hbc")) { + *mime = "application/vnd.hbci"; + return 1; + } + else if (!strcmp(dot, ".kom")) { + *mime = "application/vnd.hbci"; + return 1; + } + else if (!strcmp(dot, ".upa")) { + *mime = "application/vnd.hbci"; + return 1; + } + else if (!strcmp(dot, ".pkd")) { + *mime = "application/vnd.hbci"; + return 1; + } + else if (!strcmp(dot, ".bpd")) { + *mime = "application/vnd.hbci"; + return 1; + } + else if (!strcmp(dot, ".hdt")) { + *mime = "application/vnd.hdt"; + return 1; + } + else if (!strcmp(dot, ".les")) { + *mime = "application/vnd.hhe.lesson-player"; + return 1; + } + else if (!strcmp(dot, ".hpgl")) { + *mime = "application/vnd.hp-hpgl"; + return 1; + } + else if (!strcmp(dot, ".hpi")) { + *mime = "application/vnd.hp-hpid"; + return 1; + } + else if (!strcmp(dot, ".hpid")) { + *mime = "application/vnd.hp-hpid"; + return 1; + } + else if (!strcmp(dot, ".hps")) { + *mime = "application/vnd.hp-hps"; + return 1; + } + else if (!strcmp(dot, ".jlt")) { + *mime = "application/vnd.hp-jlyt"; + return 1; + } + else if (!strcmp(dot, ".pcl")) { + *mime = "application/vnd.hp-pcl"; + return 1; + } + else if (!strcmp(dot, ".sfd-hdstx")) { + *mime = "application/vnd.hydrostatix.sof-data"; + return 1; + } + else if (!strcmp(dot, ".x3d")) { + *mime = "model/x3d+xml"; + return 1; + } + else if (!strcmp(dot, ".emm")) { + *mime = "application/vnd.ibm.electronic-media"; + return 1; + } + else if (!strcmp(dot, ".mpy")) { + *mime = "application/vnd.ibm.minipay"; + return 1; + } + else if (!strcmp(dot, ".irm")) { + *mime = "application/vnd.ibm.rights-management"; + return 1; + } + else if (!strcmp(dot, ".sc")) { + *mime = "application/vnd.ibm.secure-container"; + return 1; + } + else if (!strcmp(dot, ".icc")) { + *mime = "application/vnd.iccprofile"; + return 1; + } + else if (!strcmp(dot, ".icm")) { + *mime = "application/vnd.iccprofile"; + return 1; + } + else if (!strcmp(dot, ".1905.1")) { + *mime = "application/vnd.ieee.1905"; + return 1; + } + else if (!strcmp(dot, ".igl")) { + *mime = "application/vnd.igloader"; + return 1; + } + else if (!strcmp(dot, ".imf")) { + *mime = "application/vnd.imagemeter.folder+zip"; + return 1; + } + else if (!strcmp(dot, ".imi")) { + *mime = "application/vnd.imagemeter.image+zip"; + return 1; + } + else if (!strcmp(dot, ".ivp")) { + *mime = "application/vnd.immervision-ivp"; + return 1; + } + else if (!strcmp(dot, ".ivu")) { + *mime = "application/vnd.immervision-ivu"; + return 1; + } + else if (!strcmp(dot, ".imscc")) { + *mime = "application/vnd.ims.imsccv1p1"; + return 1; + } + else if (!strcmp(dot, ".igm")) { + *mime = "application/vnd.insors.igm"; + return 1; + } + else if (!strcmp(dot, ".xpw")) { + *mime = "application/vnd.intercon.formnet"; + return 1; + } + else if (!strcmp(dot, ".xpx")) { + *mime = "application/vnd.intercon.formnet"; + return 1; + } + else if (!strcmp(dot, ".i2g")) { + *mime = "application/vnd.intergeo"; + return 1; + } + else if (!strcmp(dot, ".qbo")) { + *mime = "application/vnd.intu.qbo"; + return 1; + } + else if (!strcmp(dot, ".qfx")) { + *mime = "application/vnd.intu.qfx"; + return 1; + } + else if (!strcmp(dot, ".rcprofile")) { + *mime = "application/vnd.ipunplugged.rcprofile"; + return 1; + } + else if (!strcmp(dot, ".irp")) { + *mime = "application/vnd.irepository.package+xml"; + return 1; + } + else if (!strcmp(dot, ".xpr")) { + *mime = "application/vnd.is-xpr"; + return 1; + } + else if (!strcmp(dot, ".fcs")) { + *mime = "application/vnd.isac.fcs"; + return 1; + } + else if (!strcmp(dot, ".jam")) { + *mime = "application/vnd.jam"; + return 1; + } + else if (!strcmp(dot, ".rms")) { + *mime = "application/vnd.jcp.javame.midlet-rms"; + return 1; + } + else if (!strcmp(dot, ".jisp")) { + *mime = "application/vnd.jisp"; + return 1; + } + else if (!strcmp(dot, ".joda")) { + *mime = "application/vnd.joost.joda-archive"; + return 1; + } + else if (!strcmp(dot, ".ktz")) { + *mime = "application/vnd.kahootz"; + return 1; + } + else if (!strcmp(dot, ".ktr")) { + *mime = "application/vnd.kahootz"; + return 1; + } + else if (!strcmp(dot, ".karbon")) { + *mime = "application/vnd.kde.karbon"; + return 1; + } + else if (!strcmp(dot, ".chrt")) { + *mime = "application/vnd.kde.kchart"; + return 1; + } + else if (!strcmp(dot, ".kfo")) { + *mime = "application/vnd.kde.kformula"; + return 1; + } + else if (!strcmp(dot, ".flw")) { + *mime = "application/vnd.kde.kivio"; + return 1; + } + else if (!strcmp(dot, ".kon")) { + *mime = "application/vnd.kde.kontour"; + return 1; + } + else if (!strcmp(dot, ".kpr")) { + *mime = "application/vnd.kde.kpresenter"; + return 1; + } + else if (!strcmp(dot, ".kpt")) { + *mime = "application/vnd.kde.kpresenter"; + return 1; + } + else if (!strcmp(dot, ".ksp")) { + *mime = "application/vnd.kde.kspread"; + return 1; + } + else if (!strcmp(dot, ".kwd")) { + *mime = "application/vnd.kde.kword"; + return 1; + } + else if (!strcmp(dot, ".kwt")) { + *mime = "application/vnd.kde.kword"; + return 1; + } + else if (!strcmp(dot, ".htke")) { + *mime = "application/vnd.kenameaapp"; + return 1; + } + else if (!strcmp(dot, ".kia")) { + *mime = "application/vnd.kidspiration"; + return 1; + } + else if (!strcmp(dot, ".kne")) { + *mime = "application/vnd.kinar"; + return 1; + } + else if (!strcmp(dot, ".knp")) { + *mime = "application/vnd.kinar"; + return 1; + } + else if (!strcmp(dot, ".sdf")) { + *mime = "application/vnd.Kinar"; + return 1; + } + else if (!strcmp(dot, ".skp")) { + *mime = "application/vnd.koan"; + return 1; + } + else if (!strcmp(dot, ".skd")) { + *mime = "application/vnd.koan"; + return 1; + } + else if (!strcmp(dot, ".skm")) { + *mime = "application/vnd.koan"; + return 1; + } + else if (!strcmp(dot, ".skt")) { + *mime = "application/vnd.koan"; + return 1; + } + else if (!strcmp(dot, ".sse")) { + *mime = "application/vnd.kodak-descriptor"; + return 1; + } + else if (!strcmp(dot, ".las")) { + *mime = "application/vnd.las"; + return 1; + } + else if (!strcmp(dot, ".lasjson")) { + *mime = "application/vnd.las.las+json"; + return 1; + } + else if (!strcmp(dot, ".lasxml")) { + *mime = "application/vnd.las.las+xml"; + return 1; + } + else if (!strcmp(dot, ".lbd")) { + *mime = "application/vnd.llamagraphics.life-balance.desktop"; + return 1; + } + else if (!strcmp(dot, ".lbe")) { + *mime = "application/vnd.llamagraphics.life-balance.exchange+xml"; + return 1; + } + else if (!strcmp(dot, ".lcs")) { + *mime = "application/vnd.logipipe.circuit+zip"; + return 1; + } + else if (!strcmp(dot, ".lca")) { + *mime = "application/vnd.logipipe.circuit+zip"; + return 1; + } + else if (!strcmp(dot, ".loom")) { + *mime = "application/vnd.loom"; + return 1; + } + else if (!strcmp(dot, ".123")) { + *mime = "application/vnd.lotus-1-2-3"; + return 1; + } + else if (!strcmp(dot, ".wk4")) { + *mime = "application/vnd.lotus-1-2-3"; + return 1; + } + else if (!strcmp(dot, ".wk3")) { + *mime = "application/vnd.lotus-1-2-3"; + return 1; + } + else if (!strcmp(dot, ".wk1")) { + *mime = "application/vnd.lotus-1-2-3"; + return 1; + } + else if (!strcmp(dot, ".apr")) { + *mime = "application/vnd.lotus-approach"; + return 1; + } + else if (!strcmp(dot, ".vew")) { + *mime = "application/vnd.lotus-approach"; + return 1; + } + else if (!strcmp(dot, ".prz")) { + *mime = "application/vnd.lotus-freelance"; + return 1; + } + else if (!strcmp(dot, ".pre")) { + *mime = "application/vnd.lotus-freelance"; + return 1; + } + else if (!strcmp(dot, ".nsf")) { + *mime = "application/vnd.lotus-notes"; + return 1; + } + else if (!strcmp(dot, ".ntf")) { + *mime = "application/vnd.nitf"; + return 1; + } + else if (!strcmp(dot, ".ndl")) { + *mime = "application/vnd.lotus-notes"; + return 1; + } + else if (!strcmp(dot, ".ns4")) { + *mime = "application/vnd.lotus-notes"; + return 1; + } + else if (!strcmp(dot, ".ns3")) { + *mime = "application/vnd.lotus-notes"; + return 1; + } + else if (!strcmp(dot, ".ns2")) { + *mime = "application/vnd.lotus-notes"; + return 1; + } + else if (!strcmp(dot, ".nsh")) { + *mime = "application/vnd.lotus-notes"; + return 1; + } + else if (!strcmp(dot, ".nsg")) { + *mime = "application/vnd.lotus-notes"; + return 1; + } + else if (!strcmp(dot, ".or3")) { + *mime = "application/vnd.lotus-organizer"; + return 1; + } + else if (!strcmp(dot, ".or2")) { + *mime = "application/vnd.lotus-organizer"; + return 1; + } + else if (!strcmp(dot, ".org")) { + *mime = "application/vnd.lotus-organizer"; + return 1; + } + else if (!strcmp(dot, ".scm")) { + *mime = "application/vnd.lotus-screencam"; + return 1; + } + else if (!strcmp(dot, ".lwp")) { + *mime = "application/vnd.lotus-wordpro"; + return 1; + } + else if (!strcmp(dot, ".sam")) { + *mime = "application/vnd.lotus-wordpro"; + return 1; + } + else if (!strcmp(dot, ".portpkg")) { + *mime = "application/vnd.macports.portpkg"; + return 1; + } + else if (!strcmp(dot, ".mvt")) { + *mime = "application/vnd.mapbox-vector-tile"; + return 1; + } + else if (!strcmp(dot, ".mdc")) { + *mime = "application/vnd.marlin.drm.mdcf"; + return 1; + } + else if (!strcmp(dot, ".mmdb")) { + *mime = "application/vnd.maxmind.maxmind-db"; + return 1; + } + else if (!strcmp(dot, ".mcd")) { + *mime = "application/vnd.mcd"; + return 1; + } + else if (!strcmp(dot, ".mc1")) { + *mime = "application/vnd.medcalcdata"; + return 1; + } + else if (!strcmp(dot, ".cdkey")) { + *mime = "application/vnd.mediastation.cdkey"; + return 1; + } + else if (!strcmp(dot, ".mwf")) { + *mime = "application/vnd.mfer"; + return 1; + } + else if (!strcmp(dot, ".mfm")) { + *mime = "application/vnd.mfmp"; + return 1; + } + else if (!strcmp(dot, ".flo")) { + *mime = "application/vnd.micrografx.flo"; + return 1; + } + else if (!strcmp(dot, ".igx")) { + *mime = "application/vnd.micrografx.igx"; + return 1; + } + else if (!strcmp(dot, ".daf")) { + *mime = "application/vnd.mobius.daf"; + return 1; + } + else if (!strcmp(dot, ".dis")) { + *mime = "application/vnd.mobius.dis"; + return 1; + } + else if (!strcmp(dot, ".mbk")) { + *mime = "application/vnd.mobius.mbk"; + return 1; + } + else if (!strcmp(dot, ".mqy")) { + *mime = "application/vnd.mobius.mqy"; + return 1; + } + else if (!strcmp(dot, ".msl")) { + *mime = "application/vnd.mobius.msl"; + return 1; + } + else if (!strcmp(dot, ".plc")) { + *mime = "application/vnd.mobius.plc"; + return 1; + } + else if (!strcmp(dot, ".txf")) { + *mime = "application/vnd.mobius.txf"; + return 1; + } + else if (!strcmp(dot, ".mpn")) { + *mime = "application/vnd.mophun.application"; + return 1; + } + else if (!strcmp(dot, ".mpc")) { + *mime = "application/vnd.mophun.certificate"; + return 1; + } + else if (!strcmp(dot, ".xul")) { + *mime = "application/vnd.mozilla.xul+xml"; + return 1; + } + else if (!strcmp(dot, ".3mf")) { + *mime = "application/vnd.ms-3mfdocument"; + return 1; + } + else if (!strcmp(dot, ".cil")) { + *mime = "application/vnd.ms-artgalry"; + return 1; + } + else if (!strcmp(dot, ".asf")) { + *mime = "video/x-ms-asf"; + return 1; + } + else if (!strcmp(dot, ".cab")) { + *mime = "application/vnd.ms-cab-compressed"; + return 1; + } + else if (!strcmp(dot, ".xlm")) { + *mime = "application/vnd.ms-excel"; + return 1; + } + else if (!strcmp(dot, ".xla")) { + *mime = "application/vnd.ms-excel"; + return 1; + } + else if (!strcmp(dot, ".xlc")) { + *mime = "application/vnd.ms-excel"; + return 1; + } + else if (!strcmp(dot, ".xlt")) { + *mime = "application/vnd.ms-excel"; + return 1; + } + else if (!strcmp(dot, ".xlw")) { + *mime = "application/vnd.ms-excel"; + return 1; + } + else if (!strcmp(dot, ".xltm")) { + *mime = "application/vnd.ms-excel.template.macroenabled.12"; + return 1; + } + else if (!strcmp(dot, ".xlam")) { + *mime = "application/vnd.ms-excel.addin.macroenabled.12"; + return 1; + } + else if (!strcmp(dot, ".xlsb")) { + *mime = "application/vnd.ms-excel.sheet.binary.macroenabled.12"; + return 1; + } + else if (!strcmp(dot, ".xlsm")) { + *mime = "application/vnd.ms-excel.sheet.macroenabled.12"; + return 1; + } + else if (!strcmp(dot, ".eot")) { + *mime = "application/vnd.ms-fontobject"; + return 1; + } + else if (!strcmp(dot, ".chm")) { + *mime = "application/vnd.ms-htmlhelp"; + return 1; + } + else if (!strcmp(dot, ".ims")) { + *mime = "application/vnd.ms-ims"; + return 1; + } + else if (!strcmp(dot, ".lrm")) { + *mime = "application/vnd.ms-lrm"; + return 1; + } + else if (!strcmp(dot, ".thmx")) { + *mime = "application/vnd.ms-officetheme"; + return 1; + } + else if (!strcmp(dot, ".ppam")) { + *mime = "application/vnd.ms-powerpoint.addin.macroenabled.12"; + return 1; + } + else if (!strcmp(dot, ".pptm")) { + *mime = "application/vnd.ms-powerpoint.presentation.macroenabled.12"; + return 1; + } + else if (!strcmp(dot, ".sldm")) { + *mime = "application/vnd.ms-powerpoint.slide.macroenabled.12"; + return 1; + } + else if (!strcmp(dot, ".ppsm")) { + *mime = "application/vnd.ms-powerpoint.slideshow.macroenabled.12"; + return 1; + } + else if (!strcmp(dot, ".potm")) { + *mime = "application/vnd.ms-powerpoint.template.macroenabled.12"; + return 1; + } + else if (!strcmp(dot, ".mpp")) { + *mime = "application/vnd.ms-project"; + return 1; + } + else if (!strcmp(dot, ".mpt")) { + *mime = "application/vnd.ms-project"; + return 1; + } + else if (!strcmp(dot, ".tnef")) { + *mime = "application/vnd.ms-tnef"; + return 1; + } + else if (!strcmp(dot, ".tnf")) { + *mime = "application/vnd.ms-tnef"; + return 1; + } + else if (!strcmp(dot, ".docm")) { + *mime = "application/vnd.ms-word.document.macroenabled.12"; + return 1; + } + else if (!strcmp(dot, ".dotm")) { + *mime = "application/vnd.ms-word.template.macroenabled.12"; + return 1; + } + else if (!strcmp(dot, ".wcm")) { + *mime = "application/vnd.ms-works"; + return 1; + } + else if (!strcmp(dot, ".wdb")) { + *mime = "application/vnd.ms-works"; + return 1; + } + else if (!strcmp(dot, ".wks")) { + *mime = "application/vnd.ms-works"; + return 1; + } + else if (!strcmp(dot, ".wps")) { + *mime = "application/vnd.ms-works"; + return 1; + } + else if (!strcmp(dot, ".wpl")) { + *mime = "application/vnd.ms-wpl"; + return 1; + } + else if (!strcmp(dot, ".xps")) { + *mime = "application/vnd.ms-xpsdocument"; + return 1; + } + else if (!strcmp(dot, ".msa")) { + *mime = "application/vnd.msa-disk-image"; + return 1; + } + else if (!strcmp(dot, ".mseq")) { + *mime = "application/vnd.mseq"; + return 1; + } + else if (!strcmp(dot, ".crtr")) { + *mime = "application/vnd.multiad.creator"; + return 1; + } + else if (!strcmp(dot, ".cif")) { + *mime = "chemical/x-cif"; + return 1; + } + else if (!strcmp(dot, ".mus")) { + *mime = "application/vnd.musician"; + return 1; + } + else if (!strcmp(dot, ".msty")) { + *mime = "application/vnd.muvee.style"; + return 1; + } + else if (!strcmp(dot, ".taglet")) { + *mime = "application/vnd.mynfc"; + return 1; + } + else if (!strcmp(dot, ".nebul")) { + *mime = "application/vnd.nebumind.line"; + return 1; + } + else if (!strcmp(dot, ".line")) { + *mime = "application/vnd.nebumind.line"; + return 1; + } + else if (!strcmp(dot, ".entity")) { + *mime = "application/vnd.nervana"; + return 1; + } + else if (!strcmp(dot, ".request")) { + *mime = "application/vnd.nervana"; + return 1; + } + else if (!strcmp(dot, ".bkm")) { + *mime = "application/vnd.nervana"; + return 1; + } + else if (!strcmp(dot, ".kcm")) { + *mime = "application/vnd.nervana"; + return 1; + } + else if (!strcmp(dot, ".nimn")) { + *mime = "application/vnd.nimn"; + return 1; + } + else if (!strcmp(dot, ".nitf")) { + *mime = "application/vnd.nitf"; + return 1; + } + else if (!strcmp(dot, ".nlu")) { + *mime = "application/vnd.neurolanguage.nlu"; + return 1; + } + else if (!strcmp(dot, ".nds")) { + *mime = "application/vnd.nintendo.nitro.rom"; + return 1; + } + else if (!strcmp(dot, ".sfc")) { + *mime = "application/vnd.nintendo.snes.rom"; + return 1; + } + else if (!strcmp(dot, ".smc")) { + *mime = "application/vnd.nintendo.snes.rom"; + return 1; + } + else if (!strcmp(dot, ".nnd")) { + *mime = "application/vnd.noblenet-directory"; + return 1; + } + else if (!strcmp(dot, ".nns")) { + *mime = "application/vnd.noblenet-sealer"; + return 1; + } + else if (!strcmp(dot, ".nnw")) { + *mime = "application/vnd.noblenet-web"; + return 1; + } + else if (!strcmp(dot, ".ac")) { + *mime = "application/pkix-attr-cert"; + return 1; + } + else if (!strcmp(dot, ".ngdat")) { + *mime = "application/vnd.nokia.n-gage.data"; + return 1; + } + else if (!strcmp(dot, ".n-gage")) { + *mime = "application/vnd.nokia.n-gage.symbian.install"; + return 1; + } + else if (!strcmp(dot, ".rpst")) { + *mime = "application/vnd.nokia.radio-preset"; + return 1; + } + else if (!strcmp(dot, ".rpss")) { + *mime = "application/vnd.nokia.radio-presets"; + return 1; + } + else if (!strcmp(dot, ".edm")) { + *mime = "application/vnd.novadigm.edm"; + return 1; + } + else if (!strcmp(dot, ".edx")) { + *mime = "application/vnd.novadigm.edx"; + return 1; + } + else if (!strcmp(dot, ".ext")) { + *mime = "application/vnd.novadigm.ext"; + return 1; + } + else if (!strcmp(dot, ".odc")) { + *mime = "application/vnd.oasis.opendocument.chart"; + return 1; + } + else if (!strcmp(dot, ".otc")) { + *mime = "application/vnd.oasis.opendocument.chart-template"; + return 1; + } + else if (!strcmp(dot, ".odb")) { + *mime = "application/vnd.oasis.opendocument.database"; + return 1; + } + else if (!strcmp(dot, ".odf")) { + *mime = "application/vnd.oasis.opendocument.formula"; + return 1; + } + else if (!strcmp(dot, ".odg")) { + *mime = "application/vnd.oasis.opendocument.graphics"; + return 1; + } + else if (!strcmp(dot, ".otg")) { + *mime = "application/vnd.oasis.opendocument.graphics-template"; + return 1; + } + else if (!strcmp(dot, ".odi")) { + *mime = "application/vnd.oasis.opendocument.image"; + return 1; + } + else if (!strcmp(dot, ".oti")) { + *mime = "application/vnd.oasis.opendocument.image-template"; + return 1; + } + else if (!strcmp(dot, ".odp")) { + *mime = "application/vnd.oasis.opendocument.presentation"; + return 1; + } + else if (!strcmp(dot, ".otp")) { + *mime = "application/vnd.oasis.opendocument.presentation-template"; + return 1; + } + else if (!strcmp(dot, ".ods")) { + *mime = "application/vnd.oasis.opendocument.spreadsheet"; + return 1; + } + else if (!strcmp(dot, ".ots")) { + *mime = "application/vnd.oasis.opendocument.spreadsheet-template"; + return 1; + } + else if (!strcmp(dot, ".odt")) { + *mime = "application/vnd.oasis.opendocument.text"; + } + else if (!strcmp(dot, ".odm")) { + *mime = "application/vnd.oasis.opendocument.text-master"; + } + else if (!strcmp(dot, ".ott")) { + *mime = "application/vnd.oasis.opendocument.text-template"; + } + else if (!strcmp(dot, ".oth")) { + *mime = "application/vnd.oasis.opendocument.text-web"; + } + else if (!strcmp(dot, ".xo")) { + *mime = "application/vnd.olpc-sugar"; + return 1; + } + else if (!strcmp(dot, ".dd2")) { + *mime = "application/vnd.oma.dd2+xml"; + return 1; + } + else if (!strcmp(dot, ".tam")) { + *mime = "application/vnd.onepager"; + return 1; + } + else if (!strcmp(dot, ".tamp")) { + *mime = "application/vnd.onepagertamp"; + return 1; + } + else if (!strcmp(dot, ".tamx")) { + *mime = "application/vnd.onepagertamx"; + return 1; + } + else if (!strcmp(dot, ".tat")) { + *mime = "application/vnd.onepagertat"; + return 1; + } + else if (!strcmp(dot, ".tatp")) { + *mime = "application/vnd.onepagertatp"; + return 1; + } + else if (!strcmp(dot, ".tatx")) { + *mime = "application/vnd.onepagertatx"; + return 1; + } + else if (!strcmp(dot, ".obgx")) { + *mime = "application/vnd.openblox.game+xml"; + return 1; + } + else if (!strcmp(dot, ".obg")) { + *mime = "application/vnd.openblox.game-binary"; + return 1; + } + else if (!strcmp(dot, ".oeb")) { + *mime = "application/vnd.openeye.oeb"; + return 1; + } + else if (!strcmp(dot, ".oxt")) { + *mime = "application/vnd.openofficeorg.extension"; + return 1; + } + else if (!strcmp(dot, ".osm")) { + *mime = "application/vnd.openstreetmap.data+xml"; + return 1; + } + else if (!strcmp(dot, ".pptx")) { + *mime = "application/vnd.openxmlformats-officedocument.presentationml.presentation"; + return 1; + } + else if (!strcmp(dot, ".sldx")) { + *mime = "application/vnd.openxmlformats-officedocument.presentationml.slide"; + return 1; + } + else if (!strcmp(dot, ".ppsx")) { + *mime = "application/vnd.openxmlformats-officedocument.presentationml.slideshow"; + return 1; + } + else if (!strcmp(dot, ".potx")) { + *mime = "application/vnd.openxmlformats-officedocument.presentationml.template"; + return 1; + } + else if (!strcmp(dot, ".xlsx")) { + *mime = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; + return 1; + } + else if (!strcmp(dot, ".xltx")) { + *mime = "application/vnd.openxmlformats-officedocument.spreadsheetml.template"; + return 1; + } + else if (!strcmp(dot, ".docx")) { + *mime = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; + return 1; + } + else if (!strcmp(dot, ".dotx")) { + *mime = "application/vnd.openxmlformats-officedocument.wordprocessingml.template"; + return 1; + } + else if (!strcmp(dot, ".ndc")) { + *mime = "application/vnd.osa.netdeploy"; + return 1; + } + else if (!strcmp(dot, ".mgp")) { + *mime = "application/vnd.osgeo.mapguide.package"; + return 1; + } + else if (!strcmp(dot, ".dp")) { + *mime = "application/vnd.osgi.dp"; + return 1; + } + else if (!strcmp(dot, ".esa")) { + *mime = "application/vnd.osgi.subsystem"; + return 1; + } + else if (!strcmp(dot, ".oxlicg")) { + *mime = "application/vnd.oxli.countgraph"; + return 1; + } + else if (!strcmp(dot, ".prc")) { + *mime = "application/x-mobipocket-ebook"; + return 1; + } + else if (!strcmp(dot, ".pdb")) { + *mime = "application/vnd.palm"; + return 1; + } + else if (!strcmp(dot, ".pqa")) { + *mime = "application/vnd.palm"; + return 1; + } + else if (!strcmp(dot, ".oprc")) { + *mime = "application/vnd.palm"; + return 1; + } + else if (!strcmp(dot, ".plp")) { + *mime = "application/vnd.panoply"; + return 1; + } + else if (!strcmp(dot, ".dive")) { + *mime = "application/vnd.patentdive"; + return 1; + } + else if (!strcmp(dot, ".paw")) { + *mime = "application/vnd.pawaafile"; + return 1; + } + else if (!strcmp(dot, ".str")) { + *mime = "application/vnd.pg.format"; + return 1; + } + else if (!strcmp(dot, ".ei6")) { + *mime = "application/vnd.pg.osasli"; + return 1; + } + else if (!strcmp(dot, ".pil")) { + *mime = "application/vnd.piaccess.application-licence"; + return 1; + } + else if (!strcmp(dot, ".efif")) { + *mime = "application/vnd.picsel"; + return 1; + } + else if (!strcmp(dot, ".wg")) { + *mime = "application/vnd.pmi.widget"; + return 1; + } + else if (!strcmp(dot, ".plf")) { + *mime = "application/vnd.pocketlearn"; + return 1; + } + else if (!strcmp(dot, ".pbd")) { + *mime = "application/vnd.powerbuilder6"; + return 1; + } + else if (!strcmp(dot, ".preminet")) { + *mime = "application/vnd.preminet"; + return 1; + } + else if (!strcmp(dot, ".box")) { + *mime = "application/vnd.previewsystems.box"; + return 1; + } + else if (!strcmp(dot, ".vbox")) { + *mime = "application/vnd.previewsystems.box"; + return 1; + } + else if (!strcmp(dot, ".mgz")) { + *mime = "application/vnd.proteus.magazine"; + return 1; + } + else if (!strcmp(dot, ".psfs")) { + *mime = "application/vnd.psfs"; + return 1; + } + else if (!strcmp(dot, ".qps")) { + *mime = "application/vnd.publishare-delta-tree"; + return 1; + } + else if (!strcmp(dot, ".ptid")) { + *mime = "application/vnd.pvi.ptid1"; + return 1; + } + else if (!strcmp(dot, ".bar")) { + *mime = "application/vnd.qualcomm.brew-app-res"; + return 1; + } + else if (!strcmp(dot, ".qxd")) { + *mime = "application/vnd.quark.quarkxpress"; + return 1; + } + else if (!strcmp(dot, ".qxt")) { + *mime = "application/vnd.quark.quarkxpress"; + return 1; + } + else if (!strcmp(dot, ".qwd")) { + *mime = "application/vnd.quark.quarkxpress"; + return 1; + } + else if (!strcmp(dot, ".qwt")) { + *mime = "application/vnd.quark.quarkxpress"; + return 1; + } + else if (!strcmp(dot, ".qxl")) { + *mime = "application/vnd.quark.quarkxpress"; + return 1; + } + else if (!strcmp(dot, ".qxb")) { + *mime = "application/vnd.quark.quarkxpress"; + return 1; + } + else if (!strcmp(dot, ".quox")) { + *mime = "application/vnd.quobject-quoxdocument"; + return 1; + } + else if (!strcmp(dot, ".quiz")) { + *mime = "application/vnd.quobject-quoxdocument"; + return 1; + } + else if (!strcmp(dot, ".tree")) { + *mime = "application/vnd.rainstor.data"; + return 1; + } + else if (!strcmp(dot, ".rar")) { + *mime = "application/x-rar-compressed"; + return 1; + } + else if (!strcmp(dot, ".bed")) { + *mime = "application/vnd.realvnc.bed"; + return 1; + } + else if (!strcmp(dot, ".mxl")) { + *mime = "application/vnd.recordare.musicxml"; + return 1; + } + else if (!strcmp(dot, ".cryptonote")) { + *mime = "application/vnd.rig.cryptonote"; + return 1; + } + else if (!strcmp(dot, ".link66")) { + *mime = "application/vnd.route66.link66+xml"; + return 1; + } + else if (!strcmp(dot, ".st")) { + *mime = "application/vnd.sailingtracker.track"; + return 1; + } + else if (!strcmp(dot, ".SAR")) { + *mime = "application/vnd.sar"; + return 1; + } + else if (!strcmp(dot, ".scd")) { + *mime = "application/x-msschedule"; + return 1; + } + else if (!strcmp(dot, ".sla")) { + *mime = "application/vnd.scribus"; + return 1; + } + else if (!strcmp(dot, ".slaz")) { + *mime = "application/vnd.scribus"; + return 1; + } + else if (!strcmp(dot, ".s3df")) { + *mime = "application/vnd.sealed.3df"; + return 1; + } + else if (!strcmp(dot, ".scsf")) { + *mime = "application/vnd.sealed.csf"; + return 1; + } + else if (!strcmp(dot, ".sdoc")) { + *mime = "application/vnd.sealed.doc"; + return 1; + } + else if (!strcmp(dot, ".sdo")) { + *mime = "application/vnd.sealed.doc"; + return 1; + } + else if (!strcmp(dot, ".s1w")) { + *mime = "application/vnd.sealed.doc"; + return 1; + } + else if (!strcmp(dot, ".seml")) { + *mime = "application/vnd.sealed.eml"; + return 1; + } + else if (!strcmp(dot, ".sem")) { + *mime = "application/vnd.sealed.eml"; + return 1; + } + else if (!strcmp(dot, ".smht")) { + *mime = "application/vnd.sealed.mht"; + return 1; + } + else if (!strcmp(dot, ".smh")) { + *mime = "application/vnd.sealed.mht"; + return 1; + } + else if (!strcmp(dot, ".sppt")) { + *mime = "application/vnd.sealed.ppt"; + return 1; + } + else if (!strcmp(dot, ".s1p")) { + *mime = "application/vnd.sealed.ppt"; + return 1; + } + else if (!strcmp(dot, ".stif")) { + *mime = "application/vnd.sealed.tiff"; + return 1; + } + else if (!strcmp(dot, ".sxls")) { + *mime = "application/vnd.sealed.xls"; + return 1; + } + else if (!strcmp(dot, ".sxl")) { + *mime = "application/vnd.sealed.xls"; + return 1; + } + else if (!strcmp(dot, ".s1e")) { + *mime = "application/vnd.sealed.xls"; + return 1; + } + else if (!strcmp(dot, ".stml")) { + *mime = "application/vnd.sealedmedia.softseal.html"; + return 1; + } + else if (!strcmp(dot, ".s1h")) { + *mime = "application/vnd.sealedmedia.softseal.html"; + return 1; + } + else if (!strcmp(dot, ".spdf")) { + *mime = "application/vnd.sealedmedia.softseal.pdf"; + return 1; + } + else if (!strcmp(dot, ".spd")) { + *mime = "application/vnd.sealedmedia.softseal.pdf"; + return 1; + } + else if (!strcmp(dot, ".s1a")) { + *mime = "application/vnd.sealedmedia.softseal.pdf"; + return 1; + } + else if (!strcmp(dot, ".see")) { + *mime = "application/vnd.seemail"; + return 1; + } + else if (!strcmp(dot, ".sema")) { + *mime = "application/vnd.sema"; + return 1; + } + else if (!strcmp(dot, ".semd")) { + *mime = "application/vnd.semd"; + return 1; + } + else if (!strcmp(dot, ".semf")) { + *mime = "application/vnd.semf"; + return 1; + } + else if (!strcmp(dot, ".ssv")) { + *mime = "application/vnd.shade-save-file"; + return 1; + } + else if (!strcmp(dot, ".ifm")) { + *mime = "application/vnd.shana.informed.formdata"; + return 1; + } + else if (!strcmp(dot, ".itp")) { + *mime = "application/vnd.shana.informed.formtemplate"; + return 1; + } + else if (!strcmp(dot, ".iif")) { + *mime = "application/vnd.shana.informed.interchange"; + return 1; + } + else if (!strcmp(dot, ".ipk")) { + *mime = "application/vnd.shana.informed.package"; + return 1; + } + else if (!strcmp(dot, ".shp")) { + *mime = "application/vnd.shp"; + return 1; + } + else if (!strcmp(dot, ".shx")) { + *mime = "application/vnd.shx"; + return 1; + } + else if (!strcmp(dot, ".sr")) { + *mime = "application/vnd.sigrok.session"; + return 1; + } + else if (!strcmp(dot, ".twd")) { + *mime = "application/vnd.simtech-mindmapper"; + return 1; + } + else if (!strcmp(dot, ".twds")) { + *mime = "application/vnd.simtech-mindmapper"; + return 1; + } + else if (!strcmp(dot, ".mmf")) { + *mime = "application/vnd.smaf"; + return 1; + } + else if (!strcmp(dot, ".notebook")) { + *mime = "application/vnd.smart.notebook"; + return 1; + } + else if (!strcmp(dot, ".teacher")) { + *mime = "application/vnd.smart.teacher"; + return 1; + } + else if (!strcmp(dot, ".ptrom")) { + *mime = "application/vnd.snesdev-page-table"; + return 1; + } + else if (!strcmp(dot, ".pt")) { + *mime = "application/vnd.snesdev-page-table"; + return 1; + } + else if (!strcmp(dot, ".fo")) { + *mime = "application/vnd.software602.filler.form+xml"; + return 1; + } + else if (!strcmp(dot, ".zfo")) { + *mime = "application/vnd.software602.filler.form-xml-zip"; + return 1; + } + else if (!strcmp(dot, ".sdkm")) { + *mime = "application/vnd.solent.sdkm+xml"; + return 1; + } + else if (!strcmp(dot, ".sdkd")) { + *mime = "application/vnd.solent.sdkm+xml"; + return 1; + } + else if (!strcmp(dot, ".dxp")) { + *mime = "application/vnd.spotfire.dxp"; + return 1; + } + else if (!strcmp(dot, ".sfs")) { + *mime = "application/vnd.spotfire.sfs"; + return 1; + } + else if (!strcmp(dot, ".sqlite")) { + *mime = "application/vnd.sqlite3"; + return 1; + } + else if (!strcmp(dot, ".sqlite3")) { + *mime = "application/vnd.sqlite3"; + return 1; + } + else if (!strcmp(dot, ".smzip")) { + *mime = "application/vnd.stepmania.package"; + return 1; + } + else if (!strcmp(dot, ".sm")) { + *mime = "application/vnd.stepmania.stepchart"; + return 1; + } + else if (!strcmp(dot, ".wadl")) { + *mime = "application/vnd.sun.wadl+xml"; + return 1; + } + else if (!strcmp(dot, ".sus")) { + *mime = "application/vnd.sus-calendar"; + return 1; + } + else if (!strcmp(dot, ".susp")) { + *mime = "application/vnd.sus-calendar"; + return 1; + } + else if (!strcmp(dot, ".scl")) { + *mime = "application/vnd.sycle+xml"; + return 1; + } + else if (!strcmp(dot, ".xsm")) { + *mime = "application/vnd.syncml+xml"; + return 1; + } + else if (!strcmp(dot, ".bdm")) { + *mime = "application/vnd.syncml.dm+wbxml"; + return 1; + } + else if (!strcmp(dot, ".xdm")) { + *mime = "application/vnd.syncml.dm+xml"; + return 1; + } + else if (!strcmp(dot, ".ddf")) { + *mime = "application/vnd.syncml.dmddf+xml"; + return 1; + } + else if (!strcmp(dot, ".tao")) { + *mime = "application/vnd.tao.intent-module-archive"; + return 1; + } + else if (!strcmp(dot, ".pcap")) { + *mime = "application/vnd.tcpdump.pcap"; + return 1; + } + else if (!strcmp(dot, ".cap")) { + *mime = "application/vnd.tcpdump.pcap"; + return 1; + } + else if (!strcmp(dot, ".dmp")) { + *mime = "application/vnd.tcpdump.pcap"; + return 1; + } + else if (!strcmp(dot, ".qvd")) { + *mime = "application/vnd.theqvd"; + return 1; + } + else if (!strcmp(dot, ".ppttc")) { + *mime = "application/vnd.think-cell.ppttc+json"; + return 1; + } + else if (!strcmp(dot, ".vfr")) { + *mime = "application/vnd.tml"; + return 1; + } + else if (!strcmp(dot, ".viaframe")) { + *mime = "application/vnd.tml"; + return 1; + } + else if (!strcmp(dot, ".tmo")) { + *mime = "application/vnd.tmobile-livetv"; + return 1; + } + else if (!strcmp(dot, ".tpt")) { + *mime = "application/vnd.trid.tpt"; + return 1; + } + else if (!strcmp(dot, ".mxs")) { + *mime = "application/vnd.triscape.mxs"; + return 1; + } + else if (!strcmp(dot, ".tra")) { + *mime = "application/vnd.trueapp"; + return 1; + } + else if (!strcmp(dot, ".ufdl")) { + *mime = "application/vnd.ufdl"; + return 1; + } + else if (!strcmp(dot, ".ufd")) { + *mime = "application/vnd.ufdl"; + return 1; + } + else if (!strcmp(dot, ".frm")) { + *mime = "application/vnd.ufdl"; + return 1; + } + else if (!strcmp(dot, ".utz")) { + *mime = "application/vnd.uiq.theme"; + return 1; + } + else if (!strcmp(dot, ".umj")) { + *mime = "application/vnd.umajin"; + return 1; + } + else if (!strcmp(dot, ".unityweb")) { + *mime = "application/vnd.unity"; + return 1; + } + else if (!strcmp(dot, ".uoml")) { + *mime = "application/vnd.uoml+xml"; + return 1; + } + else if (!strcmp(dot, ".uo")) { + *mime = "application/vnd.uoml+xml"; + return 1; + } + else if (!strcmp(dot, ".urim")) { + *mime = "application/vnd.uri-map"; + return 1; + } + else if (!strcmp(dot, ".urimap")) { + *mime = "application/vnd.uri-map"; + return 1; + } + else if (!strcmp(dot, ".vmt")) { + *mime = "application/vnd.valve.source.material"; + return 1; + } + else if (!strcmp(dot, ".vcx")) { + *mime = "application/vnd.vcx"; + return 1; + } + else if (!strcmp(dot, ".mxi")) { + *mime = "application/vnd.vd-study"; + return 1; + } + else if (!strcmp(dot, ".study-inter")) { + *mime = "application/vnd.vd-study"; + return 1; + } + else if (!strcmp(dot, ".model-inter")) { + *mime = "application/vnd.vd-study"; + return 1; + } + else if (!strcmp(dot, ".vwx")) { + *mime = "application/vnd.vectorworks"; + return 1; + } + else if (!strcmp(dot, ".istc")) { + *mime = "application/vnd.veryant.thin"; + return 1; + } + else if (!strcmp(dot, ".isws")) { + *mime = "application/vnd.veryant.thin"; + return 1; + } + else if (!strcmp(dot, ".VES")) { + *mime = "application/vnd.ves.encrypted"; + return 1; + } + else if (!strcmp(dot, ".vsc")) { + *mime = "application/vnd.vidsoft.vidconference"; + return 1; + } + else if (!strcmp(dot, ".vsd")) { + *mime = "application/vnd.visio"; + return 1; + } + else if (!strcmp(dot, ".vst")) { + *mime = "application/vnd.visio"; + return 1; + } + else if (!strcmp(dot, ".vsw")) { + *mime = "application/vnd.visio"; + return 1; + } + else if (!strcmp(dot, ".vss")) { + *mime = "application/vnd.visio"; + return 1; + } + else if (!strcmp(dot, ".vis")) { + *mime = "application/vnd.visionary"; + return 1; + } + else if (!strcmp(dot, ".vsf")) { + *mime = "application/vnd.vsf"; + return 1; + } + else if (!strcmp(dot, ".sic")) { + *mime = "application/vnd.wap.sic"; + return 1; + } + else if (!strcmp(dot, ".slc")) { + *mime = "application/vnd.wap.slc"; + return 1; + } + else if (!strcmp(dot, ".wbxml")) { + *mime = "application/vnd.wap.wbxml"; + return 1; + } + else if (!strcmp(dot, ".wmlc")) { + *mime = "application/vnd.wap.wmlc"; + return 1; + } + else if (!strcmp(dot, ".wmlsc")) { + *mime = "application/vnd.wap.wmlscriptc"; + return 1; + } + else if (!strcmp(dot, ".wtb")) { + *mime = "application/vnd.webturbo"; + return 1; + } + else if (!strcmp(dot, ".p2p")) { + *mime = "application/vnd.wfa.p2p"; + return 1; + } + else if (!strcmp(dot, ".wsc")) { + *mime = "application/vnd.wfa.wsc"; + return 1; + } + else if (!strcmp(dot, ".wmc")) { + *mime = "application/vnd.wmc"; + return 1; + } + else if (!strcmp(dot, ".m")) { + *mime = "application/vnd.wolfram.mathematica.package"; + return 1; + } + else if (!strcmp(dot, ".nbp")) { + *mime = "application/vnd.wolfram.player"; + return 1; + } + else if (!strcmp(dot, ".wpd")) { + *mime = "application/vnd.wordperfect"; + return 1; + } + else if (!strcmp(dot, ".wqd")) { + *mime = "application/vnd.wqd"; + return 1; + } + else if (!strcmp(dot, ".stf")) { + *mime = "application/vnd.wt.stf"; + return 1; + } + else if (!strcmp(dot, ".wv")) { + *mime = "application/vnd.wv.csp+wbxml"; + return 1; + } + else if (!strcmp(dot, ".xar")) { + *mime = "application/vnd.xara"; + return 1; + } + else if (!strcmp(dot, ".xfdl")) { + *mime = "application/vnd.xfdl"; + return 1; + } + else if (!strcmp(dot, ".xfd")) { + *mime = "application/vnd.xfdl"; + return 1; + } + else if (!strcmp(dot, ".cpkg")) { + *mime = "application/vnd.xmpie.cpkg"; + return 1; + } + else if (!strcmp(dot, ".dpkg")) { + *mime = "application/vnd.xmpie.dpkg"; + return 1; + } + else if (!strcmp(dot, ".ppkg")) { + *mime = "application/vnd.xmpie.ppkg"; + return 1; + } + else if (!strcmp(dot, ".xlim")) { + *mime = "application/vnd.xmpie.xlim"; + return 1; + } + else if (!strcmp(dot, ".hvd")) { + *mime = "application/vnd.yamaha.hv-dic"; + return 1; + } + else if (!strcmp(dot, ".hvs")) { + *mime = "application/vnd.yamaha.hv-script"; + return 1; + } + else if (!strcmp(dot, ".hvp")) { + *mime = "application/vnd.yamaha.hv-voice"; + return 1; + } + else if (!strcmp(dot, ".osf")) { + *mime = "application/vnd.yamaha.openscoreformat"; + return 1; + } + else if (!strcmp(dot, ".saf")) { + *mime = "application/vnd.yamaha.smaf-audio"; + return 1; + } + else if (!strcmp(dot, ".spf")) { + *mime = "application/vnd.yamaha.smaf-phrase"; + return 1; + } + else if (!strcmp(dot, ".yme")) { + *mime = "application/vnd.yaoweme"; + return 1; + } + else if (!strcmp(dot, ".cmp")) { + *mime = "application/vnd.yellowriver-custom-menu"; + return 1; + } + else if (!strcmp(dot, ".zir")) { + *mime = "application/vnd.zul"; + return 1; + } + else if (!strcmp(dot, ".zirz")) { + *mime = "application/vnd.zul"; + return 1; + } + else if (!strcmp(dot, ".zaz")) { + *mime = "application/vnd.zzazz.deck+xml"; + return 1; + } + else if (!strcmp(dot, ".vxml")) { + *mime = "application/voicexml+xml"; + return 1; + } + else if (!strcmp(dot, ".vcj")) { + *mime = "application/voucher-cms+json"; + return 1; + } + else if (!strcmp(dot, ".wif")) { + *mime = "application/watcherinfo+xml"; + return 1; + } + else if (!strcmp(dot, ".wgt")) { + *mime = "application/widget"; + return 1; + } + else if (!strcmp(dot, ".wspolicy")) { + *mime = "application/wspolicy+xml"; + return 1; + } + else if (!strcmp(dot, ".xav")) { + *mime = "application/xcap-att+xml"; + return 1; + } + else if (!strcmp(dot, ".xca")) { + *mime = "application/xcap-caps+xml"; + return 1; + } + else if (!strcmp(dot, ".xdf")) { + *mime = "application/xcap-diff+xml"; + return 1; + } + else if (!strcmp(dot, ".xel")) { + *mime = "application/xcap-el+xml"; + return 1; + } + else if (!strcmp(dot, ".xer")) { + *mime = "application/patch-ops-error+xml"; + return 1; + } + else if (!strcmp(dot, ".xns")) { + *mime = "application/xcap-ns+xml"; + return 1; + } + else if (!strcmp(dot, ".xhtml")) { + *mime = "application/xhtml+xml"; + } + else if (!strcmp(dot, ".xhtm")) { + *mime = "application/xhtml+xml"; + } + else if (!strcmp(dot, ".xht")) { + *mime = "application/xhtml+xml"; + } + else if (!strcmp(dot, ".xlf")) { + *mime = "application/x-xliff+xml"; + return 1; + } + else if (!strcmp(dot, ".dtd")) { + *mime = "application/xml-dtd"; + } + else if (!strcmp(dot, ".xop")) { + *mime = "application/xop+xml"; + return 1; + } + else if (!strcmp(dot, ".xslt")) { + *mime = "application/xslt+xml"; + return 1; + } + else if (!strcmp(dot, ".mxml")) { + *mime = "application/xv+xml"; + return 1; + } + else if (!strcmp(dot, ".xhvml")) { + *mime = "application/xv+xml"; + return 1; + } + else if (!strcmp(dot, ".xvml")) { + *mime = "application/xv+xml"; + return 1; + } + else if (!strcmp(dot, ".xvm")) { + *mime = "application/xv+xml"; + return 1; + } + else if (!strcmp(dot, ".yang")) { + *mime = "application/yang"; + return 1; + } + else if (!strcmp(dot, ".yin")) { + *mime = "application/yin+xml"; + return 1; + } + else if (!strcmp(dot, ".zst")) { + *mime = "application/zstd"; + return 1; + } + else if (!strcmp(dot, ".726")) { + *mime = "audio/32kadpcm"; + return 1; + } + else if (!strcmp(dot, ".ac3")) { + *mime = "audio/ac3"; + return 1; + } + else if (!strcmp(dot, ".amr")) { + *mime = "audio/AMR"; + return 1; + } + else if (!strcmp(dot, ".awb")) { + *mime = "audio/AMR-WB"; + return 1; + } + else if (!strcmp(dot, ".acn")) { + *mime = "audio/asc"; + return 1; + } + else if (!strcmp(dot, ".aal")) { + *mime = "audio/ATRAC-ADVANCED-LOSSLESS"; + return 1; + } + else if (!strcmp(dot, ".atx")) { + *mime = "application/vnd.antix.game-component"; + return 1; + } + else if (!strcmp(dot, ".at3")) { + *mime = "audio/ATRAC3"; + return 1; + } + else if (!strcmp(dot, ".aa3")) { + *mime = "audio/ATRAC3"; + return 1; + } + else if (!strcmp(dot, ".omg")) { + *mime = "audio/ATRAC3"; + return 1; + } + else if (!strcmp(dot, ".dls")) { + *mime = "audio/dls"; + return 1; + } + else if (!strcmp(dot, ".evc")) { + *mime = "audio/EVRC"; + return 1; + } + else if (!strcmp(dot, ".evb")) { + *mime = "audio/EVRCB"; + return 1; + } + else if (!strcmp(dot, ".enw")) { + *mime = "audio/EVRCNW"; + return 1; + } + else if (!strcmp(dot, ".evw")) { + *mime = "audio/EVRCWB"; + return 1; + } + else if (!strcmp(dot, ".lbc")) { + *mime = "audio/iLBC"; + return 1; + } + else if (!strcmp(dot, ".l16")) { + *mime = "audio/L16"; + return 1; + } + else if (!strcmp(dot, ".mhas")) { + *mime = "audio/mhas"; + return 1; + } + else if (!strcmp(dot, ".mxmf")) { + *mime = "audio/mobile-xmf"; + return 1; + } + else if (!strcmp(dot, ".m4a")) { + *mime = "audio/mp4"; + return 1; + } + else if (!strcmp(dot, ".mpga")) { + *mime = "audio/mpeg"; + return 1; + } + else if (!strcmp(dot, ".mp1")) { + *mime = "audio/mpeg"; + return 1; + } + else if (!strcmp(dot, ".oga")) { + *mime = "audio/ogg"; + return 1; + } + else if (!strcmp(dot, ".ogg")) { + *mime = "audio/ogg"; + return 1; + } + else if (!strcmp(dot, ".spx")) { + *mime = "audio/ogg"; + return 1; + } + else if (!strcmp(dot, ".sid")) { + *mime = "image/x-mrsid-image"; + return 1; + } + else if (!strcmp(dot, ".psid")) { + *mime = "audio/prs.sid"; + return 1; + } + else if (!strcmp(dot, ".qcp")) { + *mime = "audio/QCELP"; + return 1; + } + else if (!strcmp(dot, ".smv")) { + *mime = "video/x-smv"; + return 1; + } + else if (!strcmp(dot, ".sofa")) { + *mime = "audio/sofa"; + return 1; + } + else if (!strcmp(dot, ".xhe")) { + *mime = "audio/usac"; + return 1; + } + else if (!strcmp(dot, ".koz")) { + *mime = "audio/vnd.audiokoz"; + return 1; + } + else if (!strcmp(dot, ".uva")) { + *mime = "audio/vnd.dece.audio"; + return 1; + } + else if (!strcmp(dot, ".uvva")) { + *mime = "audio/vnd.dece.audio"; + return 1; + } + else if (!strcmp(dot, ".eol")) { + *mime = "audio/vnd.digital-winds"; + return 1; + } + else if (!strcmp(dot, ".mlp")) { + *mime = "application/vnd.dolby.mlp"; + return 1; + } + else if (!strcmp(dot, ".dts")) { + *mime = "audio/vnd.dts"; + return 1; + } + else if (!strcmp(dot, ".dtshd")) { + *mime = "audio/vnd.dts.hd"; + return 1; + } + else if (!strcmp(dot, ".plj")) { + *mime = "audio/vnd.everad.plj"; + return 1; + } + else if (!strcmp(dot, ".lvp")) { + *mime = "audio/vnd.lucent.voice"; + return 1; + } + else if (!strcmp(dot, ".pya")) { + *mime = "audio/vnd.ms-playready.media.pya"; + return 1; + } + else if (!strcmp(dot, ".vbk")) { + *mime = "audio/vnd.nortel.vbk"; + return 1; + } + else if (!strcmp(dot, ".ecelp4800")) { + *mime = "audio/vnd.nuera.ecelp4800"; + return 1; + } + else if (!strcmp(dot, ".ecelp7470")) { + *mime = "audio/vnd.nuera.ecelp7470"; + return 1; + } + else if (!strcmp(dot, ".ecelp9600")) { + *mime = "audio/vnd.nuera.ecelp9600"; + return 1; + } + else if (!strcmp(dot, ".multitrack")) { + *mime = "audio/vnd.presonus.multitrack"; + return 1; + } + else if (!strcmp(dot, ".rip")) { + *mime = "audio/vnd.rip"; + return 1; + } + else if (!strcmp(dot, ".smp3")) { + *mime = "audio/vnd.sealedmedia.softseal.mpeg"; + return 1; + } + else if (!strcmp(dot, ".smp")) { + *mime = "audio/vnd.sealedmedia.softseal.mpeg"; + return 1; + } + else if (!strcmp(dot, ".s1m")) { + *mime = "audio/vnd.sealedmedia.softseal.mpeg"; + return 1; + } + else if (!strcmp(dot, ".ttc")) { + *mime = "font/collection"; + return 1; + } + else if (!strcmp(dot, ".otf")) { + *mime = "font/otf"; + return 1; + } + else if (!strcmp(dot, ".ttf")) { + *mime = "font/ttf"; + return 1; + } + else if (!strcmp(dot, ".woff")) { + *mime = "font/woff"; + return 1; + } + else if (!strcmp(dot, ".woff2")) { + *mime = "font/woff2"; + return 1; + } + else if (!strcmp(dot, ".exr")) { + *mime = "image/aces"; + return 1; + } + else if (!strcmp(dot, ".avci")) { + *mime = "image/avci"; + return 1; + } + else if (!strcmp(dot, ".avcs")) { + *mime = "image/avcs"; + return 1; + } + else if (!strcmp(dot, ".avif")) { + *mime = "image/avif"; + return 1; + } + else if (!strcmp(dot, ".hif")) { + *mime = "image/avif"; + return 1; + } + else if (!strcmp(dot, ".dib")) { + *mime = "image/bmp"; + return 1; + } + else if (!strcmp(dot, ".cgm")) { + *mime = "image/cgm"; + return 1; + } + else if (!strcmp(dot, ".drle")) { + *mime = "image/dicom-rle"; + return 1; + } + else if (!strcmp(dot, ".emf")) { + *mime = "application/x-msmetafile"; + return 1; + } + else if (!strcmp(dot, ".fits")) { + *mime = "image/fits"; + return 1; + } + else if (!strcmp(dot, ".fit")) { + *mime = "image/fits"; + return 1; + } + else if (!strcmp(dot, ".fts")) { + *mime = "image/fits"; + return 1; + } + else if (!strcmp(dot, ".heics")) { + *mime = "image/heic-sequence"; + return 1; + } + else if (!strcmp(dot, ".heifs")) { + *mime = "image/heif-sequence"; + return 1; + } + else if (!strcmp(dot, ".hej2")) { + *mime = "image/hej2k"; + return 1; + } + else if (!strcmp(dot, ".hsj2")) { + *mime = "image/hsj2"; + return 1; + } + else if (!strcmp(dot, ".jls")) { + *mime = "image/jls"; + return 1; + } + else if (!strcmp(dot, ".jp2")) { + *mime = "image/jp2"; + return 1; + } + else if (!strcmp(dot, ".jpg2")) { + *mime = "image/jp2"; + return 1; + } + else if (!strcmp(dot, ".jph")) { + *mime = "image/jph"; + return 1; + } + else if (!strcmp(dot, ".jhc")) { + *mime = "image/jphc"; + return 1; + } + else if (!strcmp(dot, ".jfif")) { + *mime = "image/jpeg"; + return 1; + } + else if (!strcmp(dot, ".jpm")) { + *mime = "video/jpm"; + return 1; + } + else if (!strcmp(dot, ".jpgm")) { + *mime = "video/jpm"; + return 1; + } + else if (!strcmp(dot, ".jpx")) { + *mime = "image/jpx"; + return 1; + } + else if (!strcmp(dot, ".jpf")) { + *mime = "image/jpx"; + return 1; + } + else if (!strcmp(dot, ".jxl")) { + *mime = "image/jxl"; + return 1; + } + else if (!strcmp(dot, ".jxr")) { + *mime = "image/jxr"; + return 1; + } + else if (!strcmp(dot, ".jxra")) { + *mime = "image/jxrA"; + return 1; + } + else if (!strcmp(dot, ".jxrs")) { + *mime = "image/jxrS"; + return 1; + } + else if (!strcmp(dot, ".jxs")) { + *mime = "image/jxs"; + return 1; + } + else if (!strcmp(dot, ".jxsc")) { + *mime = "image/jxsc"; + return 1; + } + else if (!strcmp(dot, ".jxsi")) { + *mime = "image/jxsi"; + return 1; + } + else if (!strcmp(dot, ".jxss")) { + *mime = "image/jxss"; + return 1; + } + else if (!strcmp(dot, ".ktx")) { + *mime = "image/ktx"; + return 1; + } + else if (!strcmp(dot, ".ktx2")) { + *mime = "image/ktx2"; + return 1; + } + else if (!strcmp(dot, ".btif")) { + *mime = "image/prs.btif"; + return 1; + } + else if (!strcmp(dot, ".btf")) { + *mime = "image/prs.btif"; + return 1; + } + else if (!strcmp(dot, ".pti")) { + *mime = "image/prs.pti"; + return 1; + } + else if (!strcmp(dot, ".svgz")) { + *mime = "image/svg+xml"; + return 1; + } + else if (!strcmp(dot, ".t38")) { + *mime = "image/t38"; + return 1; + } + else if (!strcmp(dot, ".tfx")) { + *mime = "image/tiff-fx"; + return 1; + } + else if (!strcmp(dot, ".psd")) { + *mime = "image/vnd.adobe.photoshop"; + return 1; + } + else if (!strcmp(dot, ".azv")) { + *mime = "image/vnd.airzip.accelerator.azv"; + return 1; + } + else if (!strcmp(dot, ".uvi")) { + *mime = "image/vnd.dece.graphic"; + return 1; + } + else if (!strcmp(dot, ".uvvi")) { + *mime = "image/vnd.dece.graphic"; + return 1; + } + else if (!strcmp(dot, ".uvg")) { + *mime = "image/vnd.dece.graphic"; + return 1; + } + else if (!strcmp(dot, ".uvvg")) { + *mime = "image/vnd.dece.graphic"; + return 1; + } + else if (!strcmp(dot, ".djvu")) { + *mime = "image/vnd.djvu"; + return 1; + } + else if (!strcmp(dot, ".djv")) { + *mime = "image/vnd.djvu"; + return 1; + } + else if (!strcmp(dot, ".dwg")) { + *mime = "image/vnd.dwg"; + return 1; + } + else if (!strcmp(dot, ".dxf")) { + *mime = "image/vnd.dxf"; + return 1; + } + else if (!strcmp(dot, ".fbs")) { + *mime = "image/vnd.fastbidsheet"; + return 1; + } + else if (!strcmp(dot, ".fpx")) { + *mime = "image/vnd.fpx"; + return 1; + } + else if (!strcmp(dot, ".fst")) { + *mime = "image/vnd.fst"; + return 1; + } + else if (!strcmp(dot, ".mmr")) { + *mime = "image/vnd.fujixerox.edmics-mmr"; + return 1; + } + else if (!strcmp(dot, ".rlc")) { + *mime = "image/vnd.fujixerox.edmics-rlc"; + return 1; + } + else if (!strcmp(dot, ".pgb")) { + *mime = "image/vnd.globalgraphics.pgb"; + return 1; + } + else if (!strcmp(dot, ".apng")) { + *mime = "image/vnd.mozilla.apng"; + return 1; + } + else if (!strcmp(dot, ".mdi")) { + *mime = "image/vnd.ms-modi"; + return 1; + } + else if (!strcmp(dot, ".b16")) { + *mime = "image/vnd.pco.b16"; + return 1; + } + else if (!strcmp(dot, ".hdr")) { + *mime = "image/vnd.radiance"; + return 1; + } + else if (!strcmp(dot, ".rgbe")) { + *mime = "image/vnd.radiance"; + return 1; + } + else if (!strcmp(dot, ".xyze")) { + *mime = "image/vnd.radiance"; + return 1; + } + else if (!strcmp(dot, ".spng")) { + *mime = "image/vnd.sealed.png"; + return 1; + } + else if (!strcmp(dot, ".spn")) { + *mime = "image/vnd.sealed.png"; + return 1; + } + else if (!strcmp(dot, ".s1n")) { + *mime = "image/vnd.sealed.png"; + return 1; + } + else if (!strcmp(dot, ".sgif")) { + *mime = "image/vnd.sealedmedia.softseal.gif"; + return 1; + } + else if (!strcmp(dot, ".sgi")) { + *mime = "image/sgi"; + return 1; + } + else if (!strcmp(dot, ".s1g")) { + *mime = "image/vnd.sealedmedia.softseal.gif"; + return 1; + } + else if (!strcmp(dot, ".sjpg")) { + *mime = "image/vnd.sealedmedia.softseal.jpg"; + return 1; + } + else if (!strcmp(dot, ".sjp")) { + *mime = "image/vnd.sealedmedia.softseal.jpg"; + return 1; + } + else if (!strcmp(dot, ".s1j")) { + *mime = "image/vnd.sealedmedia.softseal.jpg"; + return 1; + } + else if (!strcmp(dot, ".tap")) { + *mime = "image/vnd.tencent.tap"; + return 1; + } + else if (!strcmp(dot, ".vtf")) { + *mime = "image/vnd.valve.source.texture"; + } + else if (!strcmp(dot, ".wbmp")) { + *mime = "image/vnd.wap.wbmp"; + return 1; + } + else if (!strcmp(dot, ".xif")) { + *mime = "image/vnd.xiff"; + return 1; + } + else if (!strcmp(dot, ".pcx")) { + *mime = "image/x-pcx"; + return 1; + } + else if (!strcmp(dot, ".wmf")) { + *mime = "application/x-msmetafile"; + return 1; + } + else if (!strcmp(dot, ".u8msg")) { + *mime = "message/global"; + return 1; + } + else if (!strcmp(dot, ".u8dsn")) { + *mime = "message/global-delivery-status"; + return 1; + } + else if (!strcmp(dot, ".u8mdn")) { + *mime = "message/global-disposition-notification"; + return 1; + } + else if (!strcmp(dot, ".u8hdr")) { + *mime = "message/global-headers"; + return 1; + } + else if (!strcmp(dot, ".mail")) { + *mime = "message/rfc822"; + return 1; + } + else if (!strcmp(dot, ".art")) { + *mime = "message/rfc822"; + return 1; + } + else if (!strcmp(dot, ".glb")) { + *mime = "model/gltf-binary"; + return 1; + } + else if (!strcmp(dot, ".gltf")) { + *mime = "model/gltf+json"; + return 1; + } + else if (!strcmp(dot, ".igs")) { + *mime = "model/iges"; + return 1; + } + else if (!strcmp(dot, ".iges")) { + *mime = "model/iges"; + return 1; + } + else if (!strcmp(dot, ".msh")) { + *mime = "model/mesh"; + return 1; + } + else if (!strcmp(dot, ".mesh")) { + *mime = "model/mesh"; + return 1; + } + else if (!strcmp(dot, ".silo")) { + *mime = "model/mesh"; + return 1; + } + else if (!strcmp(dot, ".mtl")) { + *mime = "model/mtl"; + return 1; + } + else if (!strcmp(dot, ".stl")) { + *mime = "application/vnd.ms-pki.stl"; + return 1; + } + else if (!strcmp(dot, ".dae")) { + *mime = "model/vnd.collada+xml"; + return 1; + } + else if (!strcmp(dot, ".dwf")) { + *mime = "model/vnd.dwf"; + return 1; + } + else if (!strcmp(dot, ".gdl")) { + *mime = "model/vnd.gdl"; + return 1; + } + else if (!strcmp(dot, ".gsm")) { + *mime = "model/vnd.gdl"; + return 1; + } + else if (!strcmp(dot, ".win")) { + *mime = "model/vnd.gdl"; + return 1; + } + else if (!strcmp(dot, ".dor")) { + *mime = "model/vnd.gdl"; + return 1; + } + else if (!strcmp(dot, ".lmp")) { + *mime = "model/vnd.gdl"; + return 1; + } + else if (!strcmp(dot, ".rsm")) { + *mime = "model/vnd.gdl"; + return 1; + } + else if (!strcmp(dot, ".msm")) { + *mime = "model/vnd.gdl"; + return 1; + } + else if (!strcmp(dot, ".ism")) { + *mime = "model/vnd.gdl"; + return 1; + } + else if (!strcmp(dot, ".gtw")) { + *mime = "model/vnd.gtw"; + return 1; + } + else if (!strcmp(dot, ".moml")) { + *mime = "model/vnd.moml+xml"; + return 1; + } + else if (!strcmp(dot, ".mts")) { + *mime = "model/vnd.mts"; + return 1; + } + else if (!strcmp(dot, ".ogex")) { + *mime = "model/vnd.opengex"; + return 1; + } + else if (!strcmp(dot, ".x_b")) { + *mime = "model/vnd.parasolid.transmit.binary"; + return 1; + } + else if (!strcmp(dot, ".xmt_bin")) { + *mime = "model/vnd.parasolid.transmit.binary"; + return 1; + } + else if (!strcmp(dot, ".x_t")) { + *mime = "model/vnd.parasolid.transmit.text"; + } + else if (!strcmp(dot, ".xmt_txt")) { + *mime = "model/vnd.parasolid.transmit.text"; + } + else if (!strcmp(dot, ".pyox")) { + *mime = "model/vnd.pytha.pyox"; + return 1; + } + else if (!strcmp(dot, ".vds")) { + *mime = "model/vnd.sap.vds"; + return 1; + } + else if (!strcmp(dot, ".usdz")) { + *mime = "model/vnd.usdz+zip"; + return 1; + } + else if (!strcmp(dot, ".bsp")) { + *mime = "model/vnd.valve.source.compiled-map"; + return 1; + } + else if (!strcmp(dot, ".vtu")) { + *mime = "model/vnd.vtu"; + return 1; + } + else if (!strcmp(dot, ".wrl")) { + *mime = "model/vrml"; + return 1; + } + else if (!strcmp(dot, ".vrml")) { + *mime = "model/vrml"; + return 1; + } + else if (!strcmp(dot, ".x3db")) { + *mime = "model/x3d+binary"; + return 1; + } + else if (!strcmp(dot, ".x3dv")) { + *mime = "model/x3d+vrml"; + return 1; + } + else if (!strcmp(dot, ".x3dvz")) { + *mime = "model/x3d+vrml"; + return 1; + } + else if (!strcmp(dot, ".bmed")) { + *mime = "multipart/vnd.bint.med-plus"; + return 1; + } + else if (!strcmp(dot, ".vpm")) { + *mime = "multipart/voice-message"; + return 1; + } + else if (!strcmp(dot, ".appcache")) { + *mime = "text/cache-manifest"; + } + else if (!strcmp(dot, ".manifest")) { + *mime = "text/cache-manifest"; + } + else if (!strcmp(dot, ".ics")) { + *mime = "text/calendar"; + } + else if (!strcmp(dot, ".ifb")) { + *mime = "text/calendar"; + } + else if (!strcmp(dot, ".CQL")) { + *mime = "text/cql"; + } + else if (!strcmp(dot, ".csvs")) { + *mime = "text/csv-schema"; + } + else if (!strcmp(dot, ".soa")) { + *mime = "text/dns"; + } + else if (!strcmp(dot, ".zone")) { + *mime = "text/dns"; + } + else if (!strcmp(dot, ".gff3")) { + *mime = "text/gff3"; + } + else if (!strcmp(dot, ".cnd")) { + *mime = "text/jcr-cnd"; + } + else if (!strcmp(dot, ".markdown")) { + *mime = "text/markdown"; + } + else if (!strcmp(dot, ".md")) { + *mime = "text/markdown"; + } + else if (!strcmp(dot, ".miz")) { + *mime = "text/mizar"; + } + else if (!strcmp(dot, ".n3")) { + *mime = "text/n3"; + } + else if (!strcmp(dot, ".asc")) { + *mime = "application/pgp-signature"; + return 1; + } + else if (!strcmp(dot, ".text")) { + *mime = "text/plain"; + } + else if (!strcmp(dot, ".pm")) { + *mime = "text/plain"; + } + else if (!strcmp(dot, ".el")) { + *mime = "text/plain"; + } + else if (!strcmp(dot, ".cc")) { + *mime = "text/x-c"; + } + else if (!strcmp(dot, ".hh")) { + *mime = "text/x-c"; + } + else if (!strcmp(dot, ".cxx")) { + *mime = "text/x-c"; + } + else if (!strcmp(dot, ".hxx")) { + *mime = "text/plain"; + } + else if (!strcmp(dot, ".f90")) { + *mime = "text/x-fortran"; + } + else if (!strcmp(dot, ".conf")) { + *mime = "text/plain"; + } + else if (!strcmp(dot, ".log")) { + *mime = "text/plain"; + } + else if (!strcmp(dot, ".provn")) { + *mime = "text/provenance-notation"; + } + else if (!strcmp(dot, ".rst")) { + *mime = "text/prs.fallenstein.rst"; + } + else if (!strcmp(dot, ".tag")) { + *mime = "text/prs.lines.tag"; + } + else if (!strcmp(dot, ".dsc")) { + *mime = "text/prs.lines.tag"; + } + else if (!strcmp(dot, ".shaclc")) { + *mime = "text/shaclc"; + } + else if (!strcmp(dot, ".shc")) { + *mime = "text/shaclc"; + } + else if (!strcmp(dot, ".spdx")) { + *mime = "text/spdx"; + } + else if (!strcmp(dot, ".ttl")) { + *mime = "text/turtle"; + } + else if (!strcmp(dot, ".uris")) { + *mime = "text/uri-list"; + } + else if (!strcmp(dot, ".uri")) { + *mime = "text/uri-list"; + } + else if (!strcmp(dot, ".vcard")) { + *mime = "text/vcard"; + } + else if (!strcmp(dot, ".abc")) { + *mime = "text/vnd.abc"; + } + else if (!strcmp(dot, ".ascii")) { + *mime = "text/vnd.ascii-art"; + } + else if (!strcmp(dot, ".copyright")) { + *mime = "text/vnd.debian.copyright"; + } + else if (!strcmp(dot, ".dms")) { + *mime = "application/octet-stream"; + return 1; + } + else if (!strcmp(dot, ".sub")) { + *mime = "text/vnd.dvb.subtitle"; + } + else if (!strcmp(dot, ".jtd")) { + *mime = "text/vnd.esmertec.theme-descriptor"; + } + else if (!strcmp(dot, ".flt")) { + *mime = "text/vnd.ficlab.flt"; + } + else if (!strcmp(dot, ".fly")) { + *mime = "text/vnd.fly"; + } + else if (!strcmp(dot, ".flx")) { + *mime = "text/vnd.fmi.flexstor"; + } + else if (!strcmp(dot, ".gv")) { + *mime = "text/vnd.graphviz"; + } + else if (!strcmp(dot, ".hans")) { + *mime = "text/vnd.hans"; + } + else if (!strcmp(dot, ".hgl")) { + *mime = "text/vnd.hgl"; + } + else if (!strcmp(dot, ".3dml")) { + *mime = "text/vnd.in3d.3dml"; + } + else if (!strcmp(dot, ".3dm")) { + *mime = "text/vnd.in3d.3dml"; + } + else if (!strcmp(dot, ".spot")) { + *mime = "text/vnd.in3d.spot"; + } + else if (!strcmp(dot, ".spo")) { + *mime = "text/vnd.in3d.spot"; + } + else if (!strcmp(dot, ".mpf")) { + *mime = "text/vnd.ms-mediapackage"; + } + else if (!strcmp(dot, ".ccc")) { + *mime = "text/vnd.net2phone.commcenter.command"; + } + else if (!strcmp(dot, ".mc2")) { + *mime = "text/vnd.senx.warpscript"; + } + else if (!strcmp(dot, ".uric")) { + *mime = "text/vnd.si.uricatalogue"; + } + else if (!strcmp(dot, ".jad")) { + *mime = "text/vnd.sun.j2me.app-descriptor"; + } + else if (!strcmp(dot, ".sos")) { + *mime = "text/vnd.sosi"; + } + else if (!strcmp(dot, ".ts")) { + *mime = "text/vnd.trolltech.linguist"; + } + else if (!strcmp(dot, ".si")) { + *mime = "text/vnd.wap.si"; + } + else if (!strcmp(dot, ".sl")) { + *mime = "text/vnd.wap.sl"; + } + else if (!strcmp(dot, ".wml")) { + *mime = "text/vnd.wap.wml"; + } + else if (!strcmp(dot, ".wmls")) { + *mime = "text/vnd.wap.wmlscript"; + } + else if (!strcmp(dot, ".vtt")) { + *mime = "text/vtt"; + } + else if (!strcmp(dot, ".xsd")) { + *mime = "text/xml"; + } + else if (!strcmp(dot, ".rng")) { + *mime = "text/xml"; + } + else if (!strcmp(dot, ".ent")) { + *mime = "text/xml-external-parsed-entity"; + } + else if (!strcmp(dot, ".m4s")) { + *mime = "video/iso.segment"; + return 1; + } + else if (!strcmp(dot, ".mj2")) { + *mime = "video/mj2"; + return 1; + } + else if (!strcmp(dot, ".mjp2")) { + *mime = "video/mj2"; + return 1; + } + else if (!strcmp(dot, ".mpg4")) { + *mime = "video/mp4"; + return 1; + } + else if (!strcmp(dot, ".m4v")) { + *mime = "video/x-m4v"; + return 1; + } + else if (!strcmp(dot, ".m2v")) { + *mime = "video/mpeg"; + return 1; + } + else if (!strcmp(dot, ".ogv")) { + *mime = "video/ogg"; + return 1; + } + else if (!strcmp(dot, ".uvh")) { + *mime = "video/vnd.dece.hd"; + return 1; + } + else if (!strcmp(dot, ".uvvh")) { + *mime = "video/vnd.dece.hd"; + return 1; + } + else if (!strcmp(dot, ".uvm")) { + *mime = "video/vnd.dece.mobile"; + return 1; + } + else if (!strcmp(dot, ".uvvm")) { + *mime = "video/vnd.dece.mobile"; + return 1; + } + else if (!strcmp(dot, ".uvu")) { + *mime = "video/vnd.uvvu.mp4"; + return 1; + } + else if (!strcmp(dot, ".uvvu")) { + *mime = "video/vnd.uvvu.mp4"; + return 1; + } + else if (!strcmp(dot, ".uvp")) { + *mime = "video/vnd.dece.pd"; + return 1; + } + else if (!strcmp(dot, ".uvvp")) { + *mime = "video/vnd.dece.pd"; + return 1; + } + else if (!strcmp(dot, ".uvs")) { + *mime = "video/vnd.dece.sd"; + return 1; + } + else if (!strcmp(dot, ".uvvs")) { + *mime = "video/vnd.dece.sd"; + return 1; + } + else if (!strcmp(dot, ".uvv")) { + *mime = "video/vnd.dece.video"; + return 1; + } + else if (!strcmp(dot, ".uvvv")) { + *mime = "video/vnd.dece.video"; + return 1; + } + else if (!strcmp(dot, ".dvb")) { + *mime = "video/vnd.dvb.file"; + return 1; + } + else if (!strcmp(dot, ".fvt")) { + *mime = "video/vnd.fvt"; + return 1; + } + else if (!strcmp(dot, ".mxu")) { + *mime = "video/vnd.mpegurl"; + return 1; + } + else if (!strcmp(dot, ".m4u")) { + *mime = "video/vnd.mpegurl"; + return 1; + } + else if (!strcmp(dot, ".pyv")) { + *mime = "video/vnd.ms-playready.media.pyv"; + return 1; + } + else if (!strcmp(dot, ".nim")) { + *mime = "video/vnd.nokia.interleaved-multimedia"; + return 1; + } + else if (!strcmp(dot, ".bik")) { + *mime = "video/vnd.radgamettools.bink"; + return 1; + } + else if (!strcmp(dot, ".bk2")) { + *mime = "video/vnd.radgamettools.bink"; + return 1; + } + else if (!strcmp(dot, ".smk")) { + *mime = "video/vnd.radgamettools.smacker"; + return 1; + } + else if (!strcmp(dot, ".smpg")) { + *mime = "video/vnd.sealed.mpeg1"; + return 1; + } + else if (!strcmp(dot, ".s11")) { + *mime = "video/vnd.sealed.mpeg1"; + return 1; + } + else if (!strcmp(dot, ".s14")) { + *mime = "video/vnd.sealed.mpeg4"; + return 1; + } + else if (!strcmp(dot, ".sswf")) { + *mime = "video/vnd.sealed.swf"; + return 1; + } + else if (!strcmp(dot, ".ssw")) { + *mime = "video/vnd.sealed.swf"; + return 1; + } + else if (!strcmp(dot, ".smov")) { + *mime = "video/vnd.sealedmedia.softseal.mov"; + return 1; + } + else if (!strcmp(dot, ".smo")) { + *mime = "video/vnd.sealedmedia.softseal.mov"; + return 1; + } + else if (!strcmp(dot, ".s1q")) { + *mime = "video/vnd.sealedmedia.softseal.mov"; + return 1; + } + else if (!strcmp(dot, ".yt")) { + *mime = "video/vnd.youtube.yt"; + return 1; + } + else if (!strcmp(dot, ".viv")) { + *mime = "video/vnd.vivo"; + return 1; + } + else if (!strcmp(dot, ".cpt")) { + *mime = "application/mac-compactpro"; + return 1; + } + else if (!strcmp(dot, ".metalink")) { + *mime = "application/metalink+xml"; + return 1; + } + else if (!strcmp(dot, ".owx")) { + *mime = "application/owl+xml"; + return 1; + } + else if (!strcmp(dot, ".rss")) { + *mime = "application/rss+xml"; + return 1; + } + else if (!strcmp(dot, ".apk")) { + *mime = "application/vnd.android.package-archive"; + return 1; + } + else if (!strcmp(dot, ".dd")) { + *mime = "application/vnd.oma.dd+xml"; + return 1; + } + else if (!strcmp(dot, ".dcf")) { + *mime = "application/vnd.oma.drm.content"; + return 1; + } + else if (!strcmp(dot, ".o4a")) { + *mime = "application/vnd.oma.drm.dcf"; + return 1; + } + else if (!strcmp(dot, ".o4v")) { + *mime = "application/vnd.oma.drm.dcf"; + return 1; + } + else if (!strcmp(dot, ".dm")) { + *mime = "application/vnd.oma.drm.message"; + return 1; + } + else if (!strcmp(dot, ".drc")) { + *mime = "application/vnd.oma.drm.rights+wbxml"; + return 1; + } + else if (!strcmp(dot, ".dr")) { + *mime = "application/vnd.oma.drm.rights+xml"; + return 1; + } + else if (!strcmp(dot, ".sxc")) { + *mime = "application/vnd.sun.xml.calc"; + return 1; + } + else if (!strcmp(dot, ".stc")) { + *mime = "application/vnd.sun.xml.calc.template"; + return 1; + } + else if (!strcmp(dot, ".sxd")) { + *mime = "application/vnd.sun.xml.draw"; + return 1; + } + else if (!strcmp(dot, ".std")) { + *mime = "application/vnd.sun.xml.draw.template"; + return 1; + } + else if (!strcmp(dot, ".sxi")) { + *mime = "application/vnd.sun.xml.impress"; + return 1; + } + else if (!strcmp(dot, ".sti")) { + *mime = "application/vnd.sun.xml.impress.template"; + return 1; + } + else if (!strcmp(dot, ".sxm")) { + *mime = "application/vnd.sun.xml.math"; + return 1; + } + else if (!strcmp(dot, ".sxw")) { + *mime = "application/vnd.sun.xml.writer"; + return 1; + } + else if (!strcmp(dot, ".sxg")) { + *mime = "application/vnd.sun.xml.writer.global"; + return 1; + } + else if (!strcmp(dot, ".stw")) { + *mime = "application/vnd.sun.xml.writer.template"; + return 1; + } + else if (!strcmp(dot, ".sis")) { + *mime = "application/vnd.symbian.install"; + return 1; + } + else if (!strcmp(dot, ".mms")) { + *mime = "application/vnd.wap.mms-message"; + return 1; + } + else if (!strcmp(dot, ".anx")) { + *mime = "application/x-annodex"; + return 1; + } + else if (!strcmp(dot, ".torrent")) { + *mime = "application/x-bittorrent"; + return 1; + } + else if (!strcmp(dot, ".bz2")) { + *mime = "application/x-bzip2"; + return 1; + } + else if (!strcmp(dot, ".vcd")) { + *mime = "application/x-cdlink"; + return 1; + } + else if (!strcmp(dot, ".crx")) { + *mime = "application/x-chrome-extension"; + return 1; + } + else if (!strcmp(dot, ".dcr")) { + *mime = "application/x-director"; + return 1; + } + else if (!strcmp(dot, ".dir")) { + *mime = "application/x-director"; + return 1; + } + else if (!strcmp(dot, ".dxr")) { + *mime = "application/x-director"; + return 1; + } + else if (!strcmp(dot, ".spl")) { + *mime = "application/x-futuresplash"; + return 1; + } + else if (!strcmp(dot, ".jar")) { + *mime = "application/java-archive"; + return 1; + } + else if (!strcmp(dot, ".jnlp")) { + *mime = "application/x-java-jnlp-file"; + return 1; + } + else if (!strcmp(dot, ".pack")) { + *mime = "application/x-java-pack200"; + return 1; + } + else if (!strcmp(dot, ".kil")) { + *mime = "application/x-killustrator"; + return 1; + } + else if (!strcmp(dot, ".rpm")) { + *mime = "application/x-rpm"; + return 1; + } + else if (!strcmp(dot, ".sit")) { + *mime = "application/x-stuffit"; + return 1; + } + else if (!strcmp(dot, ".1")) { + *mime = "application/x-troff-man"; + return 1; + } + else if (!strcmp(dot, ".2")) { + *mime = "application/x-troff-man"; + return 1; + } + else if (!strcmp(dot, ".3")) { + *mime = "application/x-troff-man"; + return 1; + } + else if (!strcmp(dot, ".4")) { + *mime = "application/x-troff-man"; + return 1; + } + else if (!strcmp(dot, ".5")) { + *mime = "application/x-troff-man"; + return 1; + } + else if (!strcmp(dot, ".6")) { + *mime = "application/x-troff-man"; + return 1; + } + else if (!strcmp(dot, ".7")) { + *mime = "application/x-troff-man"; + return 1; + } + else if (!strcmp(dot, ".8")) { + *mime = "application/x-troff-man"; + return 1; + } + else if (!strcmp(dot, ".xpi")) { + *mime = "application/x-xpinstall"; + return 1; + } + else if (!strcmp(dot, ".xspf")) { + *mime = "application/xspf+xml"; + return 1; + } + else if (!strcmp(dot, ".xz")) { + *mime = "application/x-xz"; + return 1; + } + else if (!strcmp(dot, ".mid")) { + *mime = "audio/midi"; + return 1; + } + else if (!strcmp(dot, ".midi")) { + *mime = "audio/midi"; + return 1; + } + else if (!strcmp(dot, ".kar")) { + *mime = "audio/midi"; + return 1; + } + else if (!strcmp(dot, ".axa")) { + *mime = "audio/x-annodex"; + return 1; + } + else if (!strcmp(dot, ".flac")) { + *mime = "audio/x-flac"; + return 1; + } + else if (!strcmp(dot, ".mka")) { + *mime = "audio/x-matroska"; + return 1; + } + else if (!strcmp(dot, ".mod")) { + *mime = "audio/x-mod"; + return 1; + } + else if (!strcmp(dot, ".ult")) { + *mime = "audio/x-mod"; + return 1; + } + else if (!strcmp(dot, ".uni")) { + *mime = "audio/x-mod"; + return 1; + } + else if (!strcmp(dot, ".m15")) { + *mime = "audio/x-mod"; + return 1; + } + else if (!strcmp(dot, ".mtm")) { + *mime = "audio/x-mod"; + return 1; + } + else if (!strcmp(dot, ".669")) { + *mime = "audio/x-mod"; + return 1; + } + else if (!strcmp(dot, ".med")) { + *mime = "audio/x-mod"; + return 1; + } + else if (!strcmp(dot, ".wax")) { + *mime = "audio/x-ms-wax"; + return 1; + } + else if (!strcmp(dot, ".wma")) { + *mime = "audio/x-ms-wma"; + return 1; + } + else if (!strcmp(dot, ".rm")) { + *mime = "application/vnd.rn-realmedia"; + return 1; + } + else if (!strcmp(dot, ".s3m")) { + *mime = "audio/s3m"; + return 1; + } + else if (!strcmp(dot, ".stm")) { + *mime = "audio/x-stm"; + return 1; + } + else if (!strcmp(dot, ".xyz")) { + *mime = "chemical/x-xyz"; + return 1; + } + else if (!strcmp(dot, ".webp")) { + *mime = "image/webp"; + return 1; + } + else if (!strcmp(dot, ".tga")) { + *mime = "image/x-tga"; + return 1; + } + else if (!strcmp(dot, ".sandboxed")) { + *mime = "text/html-sandboxed"; + } + else if (!strcmp(dot, ".pod")) { + *mime = "text/x-pod"; + } + else if (!strcmp(dot, ".axv")) { + *mime = "video/x-annodex"; + return 1; + } + else if (!strcmp(dot, ".flv")) { + *mime = "video/x-flv"; + return 1; + } + else if (!strcmp(dot, ".fxm")) { + *mime = "video/x-javafx"; + return 1; + } + else if (!strcmp(dot, ".mkv")) { + *mime = "video/x-matroska"; + return 1; + } + else if (!strcmp(dot, ".mk3d")) { + *mime = "video/x-matroska"; + return 1; + } + else if (!strcmp(dot, ".asx")) { + *mime = "video/x-ms-asf"; + return 1; + } + else if (!strcmp(dot, ".wm")) { + *mime = "video/x-ms-wm"; + return 1; + } + else if (!strcmp(dot, ".wmv")) { + *mime = "video/x-ms-wmv"; + return 1; + } + else if (!strcmp(dot, ".wmx")) { + *mime = "video/x-ms-wmx"; + return 1; + } + else if (!strcmp(dot, ".wvx")) { + *mime = "video/x-ms-wvx"; + return 1; + } + else if (!strcmp(dot, ".ice")) { + *mime = "x-conference/x-cooltalk"; + return 1; + } + else if (!strcmp(dot, ".sisx")) { + *mime = "application/vnd.symbian.install"; + return 1; + } + else if (!strcmp(dot, ".aw")) { + *mime = "application/applixware"; + return 1; + } + else if (!strcmp(dot, ".cu")) { + *mime = "application/cu-seeme"; + return 1; + } + else if (!strcmp(dot, ".dbk")) { + *mime = "application/docbook+xml"; + return 1; + } + else if (!strcmp(dot, ".ecma")) { + *mime = "application/ecmascript"; + return 1; + } + else if (!strcmp(dot, ".gpx")) { + *mime = "application/gpx+xml"; + return 1; + } + else if (!strcmp(dot, ".gxf")) { + *mime = "application/gxf"; + return 1; + } + else if (!strcmp(dot, ".ser")) { + *mime = "application/java-serialized-object"; + return 1; + } + else if (!strcmp(dot, ".jsonml")) { + *mime = "application/jsonml+json"; + } + else if (!strcmp(dot, ".mathml")) { + *mime = "application/mathml+xml"; + return 1; + } + else if (!strcmp(dot, ".mscml")) { + *mime = "application/mediaservercontrol+xml"; + return 1; + } + else if (!strcmp(dot, ".mp4s")) { + *mime = "application/mp4"; + return 1; + } + else if (!strcmp(dot, ".lrf")) { + *mime = "application/octet-stream"; + return 1; + } + else if (!strcmp(dot, ".mar")) { + *mime = "application/octet-stream"; + return 1; + } + else if (!strcmp(dot, ".bpk")) { + *mime = "application/octet-stream"; + return 1; + } + else if (!strcmp(dot, ".dump")) { + *mime = "application/octet-stream"; + return 1; + } + else if (!strcmp(dot, ".elc")) { + *mime = "application/octet-stream"; + return 1; + } + else if (!strcmp(dot, ".deploy")) { + *mime = "application/octet-stream"; + return 1; + } + else if (!strcmp(dot, ".omdoc")) { + *mime = "application/omdoc+xml"; + return 1; + } + else if (!strcmp(dot, ".onetoc")) { + *mime = "application/onenote"; + return 1; + } + else if (!strcmp(dot, ".onetoc2")) { + *mime = "application/onenote"; + return 1; + } + else if (!strcmp(dot, ".onetmp")) { + *mime = "application/onenote"; + return 1; + } + else if (!strcmp(dot, ".onepkg")) { + *mime = "application/onenote"; + return 1; + } + else if (!strcmp(dot, ".prf")) { + *mime = "application/pics-rules"; + return 1; + } + else if (!strcmp(dot, ".rsd")) { + *mime = "application/rsd+xml"; + return 1; + } + else if (!strcmp(dot, ".sbml")) { + *mime = "application/sbml+xml"; + return 1; + } + else if (!strcmp(dot, ".setpay")) { + *mime = "application/set-payment-initiation"; + return 1; + } + else if (!strcmp(dot, ".setreg")) { + *mime = "application/set-registration-initiation"; + return 1; + } + else if (!strcmp(dot, ".ssdl")) { + *mime = "application/ssdl+xml"; + return 1; + } + else if (!strcmp(dot, ".teicorpus")) { + *mime = "application/tei+xml"; + return 1; + } + else if (!strcmp(dot, ".air")) { + *mime = "application/vnd.adobe.air-application-installer-package+zip"; + return 1; + } + else if (!strcmp(dot, ".azw")) { + *mime = "application/vnd.amazon.ebook"; + return 1; + } + else if (!strcmp(dot, ".car")) { + *mime = "application/vnd.curl.car"; + return 1; + } + else if (!strcmp(dot, ".pcurl")) { + *mime = "application/vnd.curl.pcurl"; + return 1; + } + else if (!strcmp(dot, ".kpxx")) { + *mime = "application/vnd.ds-keypoint"; + return 1; + } + else if (!strcmp(dot, ".frame")) { + *mime = "application/vnd.framemaker"; + return 1; + } + else if (!strcmp(dot, ".maker")) { + *mime = "application/vnd.framemaker"; + return 1; + } + else if (!strcmp(dot, ".book")) { + *mime = "application/vnd.framemaker"; + return 1; + } + else if (!strcmp(dot, ".pclxl")) { + *mime = "application/vnd.hp-pclxl"; + return 1; + } + else if (!strcmp(dot, ".cat")) { + *mime = "application/vnd.ms-pki.seccat"; + return 1; + } + else if (!strcmp(dot, ".odft")) { + *mime = "application/vnd.oasis.opendocument.formula-template"; + return 1; + } + else if (!strcmp(dot, ".musicxml")) { + *mime = "application/vnd.recordare.musicxml+xml"; + return 1; + } + else if (!strcmp(dot, ".cod")) { + *mime = "application/vnd.rim.cod"; + return 1; + } + else if (!strcmp(dot, ".rmvb")) { + *mime = "application/vnd.rn-realmedia-vbr"; + return 1; + } + else if (!strcmp(dot, ".sdc")) { + *mime = "application/vnd.stardivision.calc"; + return 1; + } + else if (!strcmp(dot, ".sda")) { + *mime = "application/vnd.stardivision.draw"; + return 1; + } + else if (!strcmp(dot, ".sdd")) { + *mime = "application/vnd.stardivision.impress"; + return 1; + } + else if (!strcmp(dot, ".smf")) { + *mime = "application/vnd.stardivision.math"; + return 1; + } + else if (!strcmp(dot, ".sdw")) { + *mime = "application/vnd.stardivision.writer"; + return 1; + } + else if (!strcmp(dot, ".vor")) { + *mime = "application/vnd.stardivision.writer"; + return 1; + } + else if (!strcmp(dot, ".sgl")) { + *mime = "application/vnd.stardivision.writer-global"; + return 1; + } + else if (!strcmp(dot, ".svd")) { + *mime = "application/vnd.svd"; + return 1; + } + else if (!strcmp(dot, ".osfpvg")) { + *mime = "application/vnd.yamaha.openscoreformat.osfpvg+xml"; + return 1; + } + else if (!strcmp(dot, ".hlp")) { + *mime = "application/winhlp"; + return 1; + } + else if (!strcmp(dot, ".7z")) { + *mime = "application/x-7z-compressed"; + return 1; + } + else if (!strcmp(dot, ".abw")) { + *mime = "application/x-abiword"; + return 1; + } + else if (!strcmp(dot, ".ace")) { + *mime = "application/x-ace-compressed"; + return 1; + } + else if (!strcmp(dot, ".dmg")) { + *mime = "application/x-apple-diskimage"; + return 1; + } + else if (!strcmp(dot, ".aab")) { + *mime = "application/x-authorware-bin"; + return 1; + } + else if (!strcmp(dot, ".x32")) { + *mime = "application/x-authorware-bin"; + return 1; + } + else if (!strcmp(dot, ".u32")) { + *mime = "application/x-authorware-bin"; + return 1; + } + else if (!strcmp(dot, ".vox")) { + *mime = "application/x-authorware-bin"; + return 1; + } + else if (!strcmp(dot, ".aam")) { + *mime = "application/x-authorware-map"; + return 1; + } + else if (!strcmp(dot, ".aas")) { + *mime = "application/x-authorware-seg"; + return 1; + } + else if (!strcmp(dot, ".blb")) { + *mime = "application/x-blorb"; + return 1; + } + else if (!strcmp(dot, ".blorb")) { + *mime = "application/x-blorb"; + return 1; + } + else if (!strcmp(dot, ".bz")) { + *mime = "application/x-bzip"; + return 1; + } + else if (!strcmp(dot, ".boz")) { + *mime = "application/x-bzip2"; + return 1; + } + else if (!strcmp(dot, ".cba")) { + *mime = "application/x-cbr"; + return 1; + } + else if (!strcmp(dot, ".cbt")) { + *mime = "application/x-cbr"; + return 1; + } + else if (!strcmp(dot, ".cb7")) { + *mime = "application/x-cbr"; + return 1; + } + else if (!strcmp(dot, ".cfs")) { + *mime = "application/x-cfs-compressed"; + return 1; + } + else if (!strcmp(dot, ".chat")) { + *mime = "application/x-chat"; + return 1; + } + else if (!strcmp(dot, ".nsc")) { + *mime = "application/x-conference"; + return 1; + } + else if (!strcmp(dot, ".dgc")) { + *mime = "application/x-dgc-compressed"; + return 1; + } + else if (!strcmp(dot, ".cct")) { + *mime = "application/x-director"; + return 1; + } + else if (!strcmp(dot, ".cxt")) { + *mime = "application/x-director"; + return 1; + } + else if (!strcmp(dot, ".w3d")) { + *mime = "application/x-director"; + return 1; + } + else if (!strcmp(dot, ".fgd")) { + *mime = "application/x-director"; + return 1; + } + else if (!strcmp(dot, ".swa")) { + *mime = "application/x-director"; + return 1; + } + else if (!strcmp(dot, ".wad")) { + *mime = "application/x-doom"; + return 1; + } + else if (!strcmp(dot, ".ncx")) { + *mime = "application/x-dtbncx+xml"; + return 1; + } + else if (!strcmp(dot, ".dtb")) { + *mime = "application/x-dtbook+xml"; + return 1; + } + else if (!strcmp(dot, ".res")) { + *mime = "application/x-dtbresource+xml"; + return 1; + } + else if (!strcmp(dot, ".evy")) { + *mime = "application/x-envoy"; + return 1; + } + else if (!strcmp(dot, ".eva")) { + *mime = "application/x-eva"; + return 1; + } + else if (!strcmp(dot, ".bdf")) { + *mime = "application/x-font-bdf"; + return 1; + } + else if (!strcmp(dot, ".gsf")) { + *mime = "application/x-font-ghostscript"; + return 1; + } + else if (!strcmp(dot, ".psf")) { + *mime = "application/x-font-linux-psf"; + return 1; + } + else if (!strcmp(dot, ".pcf")) { + *mime = "application/x-font-pcf"; + return 1; + } + else if (!strcmp(dot, ".snf")) { + *mime = "application/x-font-snf"; + return 1; + } + else if (!strcmp(dot, ".pfa")) { + *mime = "application/x-font-type1"; + return 1; + } + else if (!strcmp(dot, ".pfb")) { + *mime = "application/x-font-type1"; + return 1; + } + else if (!strcmp(dot, ".pfm")) { + *mime = "application/x-font-type1"; + return 1; + } + else if (!strcmp(dot, ".afm")) { + *mime = "application/x-font-type1"; + return 1; + } + else if (!strcmp(dot, ".arc")) { + *mime = "application/x-freearc"; + return 1; + } + else if (!strcmp(dot, ".gca")) { + *mime = "application/x-gca-compressed"; + return 1; + } + else if (!strcmp(dot, ".ulx")) { + *mime = "application/x-glulx"; + return 1; + } + else if (!strcmp(dot, ".gnumeric")) { + *mime = "application/x-gnumeric"; + return 1; + } + else if (!strcmp(dot, ".gramps")) { + *mime = "application/x-gramps-xml"; + return 1; + } + else if (!strcmp(dot, ".install")) { + *mime = "application/x-install-instructions"; + return 1; + } + else if (!strcmp(dot, ".mie")) { + *mime = "application/x-mie"; + return 1; + } + else if (!strcmp(dot, ".mobi")) { + *mime = "application/x-mobipocket-ebook"; + return 1; + } + else if (!strcmp(dot, ".application")) { + *mime = "application/x-ms-application"; + return 1; + } + else if (!strcmp(dot, ".lnk")) { + *mime = "application/x-ms-shortcut"; + return 1; + } + else if (!strcmp(dot, ".wmd")) { + *mime = "application/x-ms-wmd"; + return 1; + } + else if (!strcmp(dot, ".wmz")) { + *mime = "application/x-msmetafile"; + return 1; + } + else if (!strcmp(dot, ".xbap")) { + *mime = "application/x-ms-xbap"; + return 1; + } + else if (!strcmp(dot, ".mdb")) { + *mime = "application/x-msaccess"; + return 1; + } + else if (!strcmp(dot, ".obd")) { + *mime = "application/x-msbinder"; + return 1; + } + else if (!strcmp(dot, ".crd")) { + *mime = "application/x-mscardfile"; + return 1; + } + else if (!strcmp(dot, ".clp")) { + *mime = "application/x-msclip"; + return 1; + } + else if (!strcmp(dot, ".com")) { + *mime = "application/x-msdownload"; + return 1; + } + else if (!strcmp(dot, ".msi")) { + *mime = "application/x-msdownload"; + return 1; + } + else if (!strcmp(dot, ".mvb")) { + *mime = "application/x-msmediaview"; + return 1; + } + else if (!strcmp(dot, ".m13")) { + *mime = "application/x-msmediaview"; + return 1; + } + else if (!strcmp(dot, ".m14")) { + *mime = "application/x-msmediaview"; + return 1; + } + else if (!strcmp(dot, ".emz")) { + *mime = "application/x-msmetafile"; + return 1; + } + else if (!strcmp(dot, ".mny")) { + *mime = "application/x-msmoney"; + return 1; + } + else if (!strcmp(dot, ".trm")) { + *mime = "application/x-msterminal"; + return 1; + } + else if (!strcmp(dot, ".wri")) { + *mime = "application/x-mswrite"; + return 1; + } + else if (!strcmp(dot, ".nzb")) { + *mime = "application/x-nzb"; + return 1; + } + else if (!strcmp(dot, ".p7b")) { + *mime = "application/x-pkcs7-certificates"; + return 1; + } + else if (!strcmp(dot, ".spc")) { + *mime = "application/x-pkcs7-certificates"; + return 1; + } + else if (!strcmp(dot, ".p7r")) { + *mime = "application/x-pkcs7-certreqresp"; + return 1; + } + else if (!strcmp(dot, ".ris")) { + *mime = "application/x-research-info-systems"; + return 1; + } + else if (!strcmp(dot, ".xap")) { + *mime = "application/x-silverlight-app"; + return 1; + } + else if (!strcmp(dot, ".sitx")) { + *mime = "application/x-stuffitx"; + return 1; + } + else if (!strcmp(dot, ".srt")) { + *mime = "application/x-subrip"; + return 1; + } + else if (!strcmp(dot, ".t3")) { + *mime = "application/x-t3vm-image"; + return 1; + } + else if (!strcmp(dot, ".gam")) { + *mime = "application/x-tads"; + return 1; + } + else if (!strcmp(dot, ".tfm")) { + *mime = "application/x-tex-tfm"; + return 1; + } + else if (!strcmp(dot, ".der")) { + *mime = "application/x-x509-ca-cert"; + return 1; + } + else if (!strcmp(dot, ".crt")) { + *mime = "application/x-x509-ca-cert"; + return 1; + } + else if (!strcmp(dot, ".fig")) { + *mime = "application/x-xfig"; + return 1; + } + else if (!strcmp(dot, ".z1")) { + *mime = "application/x-zmachine"; + return 1; + } + else if (!strcmp(dot, ".z2")) { + *mime = "application/x-zmachine"; + return 1; + } + else if (!strcmp(dot, ".z3")) { + *mime = "application/x-zmachine"; + return 1; + } + else if (!strcmp(dot, ".z4")) { + *mime = "application/x-zmachine"; + return 1; + } + else if (!strcmp(dot, ".z5")) { + *mime = "application/x-zmachine"; + return 1; + } + else if (!strcmp(dot, ".z6")) { + *mime = "application/x-zmachine"; + return 1; + } + else if (!strcmp(dot, ".z7")) { + *mime = "application/x-zmachine"; + return 1; + } + else if (!strcmp(dot, ".z8")) { + *mime = "application/x-zmachine"; + return 1; + } + else if (!strcmp(dot, ".xaml")) { + *mime = "application/xaml+xml"; + return 1; + } + else if (!strcmp(dot, ".xenc")) { + *mime = "application/xenc+xml"; + return 1; + } + else if (!strcmp(dot, ".xpl")) { + *mime = "application/xproc+xml"; + return 1; + } + else if (!strcmp(dot, ".adp")) { + *mime = "audio/adpcm"; + return 1; + } + else if (!strcmp(dot, ".rmi")) { + *mime = "audio/midi"; + return 1; + } + else if (!strcmp(dot, ".mp4a")) { + *mime = "audio/mp4"; + return 1; + } + else if (!strcmp(dot, ".mp2a")) { + *mime = "audio/mpeg"; + return 1; + } + else if (!strcmp(dot, ".m2a")) { + *mime = "audio/mpeg"; + return 1; + } + else if (!strcmp(dot, ".m3a")) { + *mime = "audio/mpeg"; + return 1; + } + else if (!strcmp(dot, ".sil")) { + *mime = "audio/silk"; + return 1; + } + else if (!strcmp(dot, ".dra")) { + *mime = "audio/vnd.dra"; + return 1; + } + else if (!strcmp(dot, ".weba")) { + *mime = "audio/webm"; + return 1; + } + else if (!strcmp(dot, ".caf")) { + *mime = "audio/x-caf"; + return 1; + } + else if (!strcmp(dot, ".rmp")) { + *mime = "audio/x-pn-realaudio-plugin"; + return 1; + } + else if (!strcmp(dot, ".xm")) { + *mime = "audio/xm"; + return 1; + } + else if (!strcmp(dot, ".cdx")) { + *mime = "chemical/x-cdx"; + return 1; + } + else if (!strcmp(dot, ".cmdf")) { + *mime = "chemical/x-cmdf"; + return 1; + } + else if (!strcmp(dot, ".csml")) { + *mime = "chemical/x-csml"; + return 1; + } + else if (!strcmp(dot, ".wdp")) { + *mime = "image/vnd.ms-photo"; + return 1; + } + else if (!strcmp(dot, ".npx")) { + *mime = "image/vnd.net-fpx"; + return 1; + } + else if (!strcmp(dot, ".3ds")) { + *mime = "image/x-3ds"; + return 1; + } + else if (!strcmp(dot, ".cmx")) { + *mime = "image/x-cmx"; + return 1; + } + else if (!strcmp(dot, ".fh")) { + *mime = "image/x-freehand"; + return 1; + } + else if (!strcmp(dot, ".fhc")) { + *mime = "image/x-freehand"; + return 1; + } + else if (!strcmp(dot, ".fh4")) { + *mime = "image/x-freehand"; + return 1; + } + else if (!strcmp(dot, ".fh5")) { + *mime = "image/x-freehand"; + return 1; + } + else if (!strcmp(dot, ".fh7")) { + *mime = "image/x-freehand"; + return 1; + } + else if (!strcmp(dot, ".pic")) { + *mime = "image/x-pict"; + return 1; + } + else if (!strcmp(dot, ".pct")) { + *mime = "image/x-pict"; + return 1; + } + else if (!strcmp(dot, ".mime")) { + *mime = "message/rfc822"; + return 1; + } + else if (!strcmp(dot, ".x3dbz")) { + *mime = "model/x3d+binary"; + return 1; + } + else if (!strcmp(dot, ".x3dz")) { + *mime = "model/x3d+xml"; + return 1; + } + else if (!strcmp(dot, ".def")) { + *mime = "text/plain"; + } + else if (!strcmp(dot, ".list")) { + *mime = "text/plain"; + } + else if (!strcmp(dot, ".in")) { + *mime = "text/plain"; + } + else if (!strcmp(dot, ".urls")) { + *mime = "text/uri-list"; + } + else if (!strcmp(dot, ".dcurl")) { + *mime = "text/vnd.curl.dcurl"; + } + else if (!strcmp(dot, ".mcurl")) { + *mime = "text/vnd.curl.mcurl"; + } + else if (!strcmp(dot, ".scurl")) { + *mime = "text/vnd.curl.scurl"; + } + else if (!strcmp(dot, ".s")) { + *mime = "text/x-asm"; + } + else if (!strcmp(dot, ".asm")) { + *mime = "text/x-asm"; + } + else if (!strcmp(dot, ".cpp")) { + *mime = "text/x-c"; + } + else if (!strcmp(dot, ".dic")) { + *mime = "text/x-c"; + } + else if (!strcmp(dot, ".f")) { + *mime = "text/x-fortran"; + } + else if (!strcmp(dot, ".for")) { + *mime = "text/x-fortran"; + } + else if (!strcmp(dot, ".f77")) { + *mime = "text/x-fortran"; + } + else if (!strcmp(dot, ".java")) { + *mime = "text/x-java-source"; + } + else if (!strcmp(dot, ".nfo")) { + *mime = "text/x-nfo"; + } + else if (!strcmp(dot, ".opml")) { + *mime = "text/x-opml"; + } + else if (!strcmp(dot, ".p")) { + *mime = "text/x-pascal"; + } + else if (!strcmp(dot, ".pas")) { + *mime = "text/x-pascal"; + } + else if (!strcmp(dot, ".sfv")) { + *mime = "text/x-sfv"; + } + else if (!strcmp(dot, ".uu")) { + *mime = "text/x-uuencode"; + } + else if (!strcmp(dot, ".vcs")) { + *mime = "text/x-vcalendar"; + } + else if (!strcmp(dot, ".h261")) { + *mime = "video/h261"; + return 1; + } + else if (!strcmp(dot, ".h263")) { + *mime = "video/h263"; + return 1; + } + else if (!strcmp(dot, ".h264")) { + *mime = "video/h264"; + return 1; + } + else if (!strcmp(dot, ".jpgv")) { + *mime = "video/jpeg"; + return 1; + } + else if (!strcmp(dot, ".mp4v")) { + *mime = "video/mp4"; + return 1; + } + else if (!strcmp(dot, ".f4v")) { + *mime = "video/x-f4v"; + return 1; + } + else if (!strcmp(dot, ".fli")) { + *mime = "video/x-fli"; + return 1; + } + else if (!strcmp(dot, ".mks")) { + *mime = "video/x-matroska"; + return 1; + } + else if (!strcmp(dot, ".mng")) { + *mime = "video/x-mng"; + return 1; + } + else if (!strcmp(dot, ".vob")) { + *mime = "video/x-ms-vob"; + return 1; + } + else if (!strcmp(dot, "example")) { + *mime = "text/example"; } else { - warn("mimetype for %s not found\n", filename); + warn("mimetype for %s not found\n", filename); *mime = "text/plain"; } if (hasTriedIndex == 1) { diff --git a/scripts/genMime.py b/scripts/genMime.py new file mode 100644 index 0000000..95b9a5a --- /dev/null +++ b/scripts/genMime.py @@ -0,0 +1,71 @@ +CUSTOM_TYPES = { + "example": "text/example" +} + +import mimetypes +mimetypes.init() + +types = mimetypes.types_map + +for k,v in CUSTOM_TYPES.items(): + types[k] = v + +genString = "if (0) {} " + +for k,v in types.items(): + if "text" in v or "application/json" in v or "application/x-sh" in v or "application/xhtml+xml" in v or "application/xml" in v or "application/javascript" in v: + genString += f""" + else if (!strcmp(dot, "{k}")) {{ + *mime = "{v}"; + }}""" + else: + genString += f""" + else if (!strcmp(dot, "{k}")) {{ + *mime = "{v}"; + return 1; + }}""" + +fullText = f"""#pragma once +#include +#ifdef NO_GC +#include +#define malloc(n) GC_malloc(n) +#else +#include +#endif + +#include "log.h" + +int hasTriedIndex; + +int getMime(char** mime, char* filename) {{ + char* dot = strrchr(filename, '.'); + + if (!dot || dot == filename) {{ + if (!hasTriedIndex) {{ + hasTriedIndex++; + strcat(filename, "/index.html"); + info("trying to upgrade directory to index.html"); + return getMime(mime, filename); + }} else {{ + warn("file extension does not exist or is the same as request's path.\\n"); + hasTriedIndex = 1; + *mime = "text/plain"; + return 0; + }} + }} else {{ {genString} else {{ + warn("mimetype for %s not found\\n", filename); + *mime = "text/plain"; + }} + if (hasTriedIndex == 1) {{ + hasTriedIndex = 2; + }} else {{ + hasTriedIndex = 0; + }} + }} + return 0; +}} +""" + +with open("lib/mime.h", "w") as f: + f.write(fullText)