--- httpsock.cc 2008-09-14 17:33:16.000000000 +0200 +++ httpsock_patch.cc 2008-09-14 20:23:06.000000000 +0200 @@ -92,6 +92,8 @@ { ".ra", "audio/x-pn-realaudio" }, { ".ram", "audio/x-pn-realaudio" }, { ".sys", "application/octet-stream" }, + { ".svg", "image/svg+xml" }, + { ".svgz", "image/svg+xml" }, { ".wav", "audio/x-wav" }, { ".xbm", "image/x-xbitmap" }, { ".zip", "application/zip" }, @@ -147,6 +149,29 @@ return "application/x-unknown"; } +char *getExt( char *f ) +{ + int flen; + int tlen; + int g; + + flen = strlen( f ); + + for( g=0; assocNames[ g ].ext; g++ ) + { + tlen = strlen( assocNames[ g ].ext ); + if( flen>tlen ) + { + if( !strcmp( &f[ flen-tlen ], assocNames[ g ].ext ) ) + { + return assocNames[ g ].ext; + } + } + } + + return "unknown"; +} + int findMonth( char *s ) { @@ -354,6 +379,8 @@ fprintf( out, "Date: %s\n", curTime() ); fprintf( out, "Server: %s\r\n", DHTTPDVERSION ); fprintf( out, "Content-type: %s\r\n", guessType( name ) ); + if (! strcmp(guessType(name), "image/svg+xml") && ! strcmp(getExt(name), ".svgz")) + fprintf( out, "Content-Encoding: gzip\r\n"); fprintf( out, "Last-modified: %s\r\n", getMimeTime( gmtime( &tmMod ) ) ); fprintf( out, "Content-length: %ld\r\n", filesize ); fprintf( out, "\r\n" );