source: trunk/server/common/oursrc/execsys/upd-execsys @ 2305

Last change on this file since 2305 was 1877, checked in by geofft, 14 years ago
static-cat: Add all MS Office (including OOXML) and ODF types
File size: 2.3 KB
Line 
1#!/usr/bin/perl -w
2use strict;
3
4# upd-execsys
5# Copyright (C) 2006  Jeff Arnold <jbarnold@mit.edu>
6#
7# This program is free software; you can redistribute it and/or
8# modify it under the terms of the GNU General Public License
9# as published by the Free Software Foundation; either version 2
10# of the License, or (at your option) any later version.
11#
12# This program is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15# GNU General Public License for more details.
16#
17# You should have received a copy of the GNU General Public License
18# along with this program; if not, write to the Free Software
19# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
20#
21# See /COPYRIGHT in this repository for more information.
22
23my @dynamic = qw(
24 pl
25 php
26 py
27 cgi
28 scm
29 exe
30);
31
32my @static = qw(
33 html
34 css
35 gif
36 jpg
37 png
38 htm
39 jpeg
40 js
41 ico
42 xml
43 xsl
44 tiff
45 tif
46 tgz
47 tar
48 jar
49 zip
50 pdf
51 ps
52 doc
53 xls
54 ppt
55 dot
56 docx
57 dotx
58 docm
59 dotm
60 xlt
61 xla
62 xlsx
63 xltx
64 xlsm
65 xltm
66 xlam
67 xlsb
68 pot
69 pps
70 ppa
71 pptx
72 potx
73 ppsx
74 ppam
75 pptm
76 potm
77 ppsm
78 swf
79 mp3
80 mov
81 wmv
82 mpg
83 mpeg
84 avi
85 il
86 xhtml
87 svg
88 xaml
89 xap
90 wav
91 mid
92 midi
93 ttf
94 otf
95 odc
96 odb
97 odf
98 odg
99 otg
100 odi
101 odp
102 otp
103 ods
104 ots
105 odt
106 odm
107 ott
108 oth
109);
110
111my %map;
112open(TYPES, "./mime.types");
113while(my $line = <TYPES>) {
114        next if($line =~ /^\#/ or $line =~ /^\s*$/);
115        my ($type, $exts) = ($line =~ /^(\S*)\s+(.*)$/);
116        next if($exts =~ /^\s*$/);
117       
118        foreach my $ext (split " ", $exts) {
119                $map{$ext} = $type;
120        }
121}
122close(TYPES);
123
124undef $/;
125my $regexp = '(.*[\/\#]+\sSTART-AUTOGENERATED:[^!]*!).*\s([\/\#]+\sEND-AUTOGENERATED.*)';
126
127open(CONF, ">./execsys.conf");
128
129foreach my $ext (@dynamic, @static) {
130        print CONF <<END
131<FilesMatch "(?i)\\.$ext\$">
132        SetHandler cgi-script
133        Options +ExecCGI
134</FilesMatch>
135
136END
137}
138close(CONF);
139
140open(CAT, "./static-cat.c.pre");
141my $file = <CAT>;
142my ($fstart, $fend) = ($file =~ /$regexp/s);
143close(CAT);
144
145open(CAT, ">./static-cat.c");
146print CAT $fstart, "\n";
147print CAT '#define NEXTS ', scalar(@static), "\n";
148print CAT "const char *map[2 * NEXTS] = {\n";
149for(my $i = 0; $i < scalar(@static); $i++) {
150        my $comma = ( $i < scalar(@static)-1 ? "," : "" );
151        print CAT "\t\"$static[$i]\", \"$map{$static[$i]}\"$comma\n";
152}
153print CAT "};\n";
154print CAT $fend;
155close(CAT);
Note: See TracBrowser for help on using the repository browser.