Subject: Re: [PATCH] gitweb: use correct mime type even if filename has multiple dots.

From: Jakub Narebski <[email-masked]>
Date: Sun, 17 Sep 2006 10:23:45 +0200

Martin Waitz wrote:

> hoi :)
> 
> On Sat, Sep 16, 2006 at 11:44:52PM +0200, Jakub Narebski wrote:
>> Martin Waitz wrote:
>> 
>> > Match the last part of the filename agains the extention from the
>> > mime database instead of insisting that it starts at the first dot.
>> [...]
>> > -     $filename =~ /\.(.*?)$/;
>> > -     return $mimemap{$1};
>> 
>> Actually, that is non-greedy match, so the above code insist that 
>> extension starts at the _last_ dot.
> 
> hmm, but it didn't work for me.
> I had filenames like "man/program.8.html" which got served as
> "text/html" with the old code.

And why it shouldn't? From the extension it is HTML page, I would guess
manpage converted to HTML (pretty-printed manpage). And it should be served
with text/html mimetype.

> Besides, the new code would cope with extentions that contain a
> dot itself.

But is unnecessary complicated, and I guess performance suffers a bit.

> Looking at /etc/mime.types, it only contains pcf.Z but perhaps

So the *.pcf.Z file wouldn't get correct mimetype. No big.

> it should also contain tar.gz or similiar.

You can't properly serve tar.gz as something other than with
application/x-gzip mimetype. If you want to serve it as/with 
application/x-tar mimetype, you would need to add 
        Content-Encoding: x-gzip
in addition to
        Content-Type: application/x-tar
And your code doesn't do that.

The _last_ extension defines the type.

Besides, with the exception of files which can be displayed in browser, 
i.e. HTML files and images it doesn't matter what the mimetype is, if only
binary files get binary mimetype (e.g. generic application/octet-stream).
-- 
Jakub Narebski
Warsaw, Poland
ShadeHawk on #git