Merge branch 'template' of ssh://matthijs@git.stderr.nl/matthijs/servers/drsnuggles...
[matthijs/servers/drsnuggles.git] / etc / lighttpd / scripts / create-mime.assign.pl
1 #!/usr/bin/perl -w
2
3 # This script is based on /usr/share/lighttpd/create-mime-assign.pl. This
4 # script is changed to include a charset for text types. It is also changed to
5 # serve some file types as text/plain, since browsers still don't have an
6 # option to just view text/* in the browser, but need external programs for
7 # anything but text/plain.
8
9 use strict;
10 open MIMETYPES, "/etc/mime.types" or exit;
11 print "mimetype.assign = (\n";
12 my %extensions;
13 my %translate_types = (
14         "text/x-diff" => "text/plain",
15 );
16
17 while(<MIMETYPES>) {
18   chomp;
19   s/\#.*//;
20   next if /^\w*$/;
21   if(/^([a-z0-9\/+-.]+)\s+((?:[a-z0-9.+-]+[ ]?)+)$/) {
22     my $mime = $1; my $exts = $2;
23     # Translate the mime type if needed
24     $mime = $translate_types{$mime} if exists $translate_types{$mime};
25     # Append encoding for text formats
26     if ($mime =~ /^text\//) {
27       $mime .= "; charset=utf-8";
28     }
29     foreach(split / /, $exts) {
30       # mime.types can have same extension for different
31       # mime types
32       next if $extensions{$_};
33       $extensions{$_} = 1;
34
35       print "\".$_\" => \"$mime\",\n";
36     }
37   }
38 }
39 print ")\n";