ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
MagicConfig.php
Go to the documentation of this file.
1<?
2
3/*
4
5This program is free software; you can redistribute it and/or modify
6it under the terms of the GNU General Public License as published by
7the Free Software Foundation; either version 2 of the License, or
8(at your option) any later version.
9
10This program is distributed in the hope that it will be useful,
11but WITHOUT ANY WARRANTY; without even the implied warranty of
12MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13GNU General Public License for more details.
14
15You should have received a copy of the GNU General Public License
16along with this program; if not, write to the Free Software
17Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18
19*/
20
22{
23 function MagicConfig()
24 {
25 $this->separator = ".";
26
27 $this->extensions = array(
28 "a" => "ada95",
29 "ada" => "ada95",
30 "adb" => "ada95",
31 "ads" => "ada95",
32 "asm" => "asm_x86",
33 "asp" => "jscript|vb|vbdotnet",
34 "awk" => "awk",
35 "bas" => "vb|vbdotnet",
36 "c" => "c",
37 "cbl" => "cobol",
38 "cls" => "vb|vbdotnet",
39 "cob" => "cobol",
40 "cpy" => "cobol",
41 "cpp" => "cpp",
42 "cs" => "csharp",
43 "cxx" => "cpp",
44 "dat" => "mumps",
45 "dpr" => "delphi",
46 "e" => "eiffel|euphoria",
47 "ew" => "euphoria",
48 "eu" => "euphoria",
49 "ex" => "euphoria",
50 "exw" => "euphoria",
51 "exu" => "euphoria",
52 "frm" => "vb|vbdotnet",
53 "h" => "c",
54 "hpp" => "cpp",
55 "inc" => "turbopascal|vb|vbdotnet",
56 "java" => "javaswing",
57 "js" => "jscript|javascript",
58 "lsp" => "lisp",
59 "m" => "mumps",
60 "pas" => "delphi|turbopascal",
61 "php" => "php3",
62 "php3" => "php3",
63 "php4" => "php3",
64 "pl" => "perl",
65 "pm" => "perl",
66 "py" => "python",
67 "pyc" => "python",
68 "rtn" => "mumps",
69 "scm" => "scheme",
70 "vb" => "vb|vbdotnet",
71 "vbs" => "vb|vbdotnet|vbscript",
72 "wsf" => "vbscript"
73 );
74
75 $this->langfunctions = array(
76 // ASCII
77 // --- Languages
78 "awk",
79 "bash",
80 "perl",
81 "rc",
82 "env",
83 "cpp",
84 "diff",
85 "xdiff",
86 "swf",
87 "psfont",
88 "lex",
89 "lisp",
90 "magic",
91 "mime",
92 // --- Markup
93 "postscript",
94 "rtf",
95 "html",
96 "xml",
97 "sgml",
98 // --- Generic tests
99 "genericshell");
100
101 $this->binfunctions = array(
102 // Binary
103 // --- Images
104 "gif",
105 "jpeg",
106 "png",
107 "bmp",
108 "tif"
109 // --- Compressed
110 );
111 }
112
113 function detect_cpp()
114 {
115 return !(strpos($this->file, "//") === false);
116 }
117
118 function detect_awk()
119 {
120 if (preg_match("/^#!\s+\/bin\/nawk/", $this->file)
121 || preg_match("/^#!\s+\/bin\/nawk/", $this->file)
122 || preg_match("/^#!\s+\/usr\/bin\/nawk/", $this->file)
123 || preg_match("/^#!\s+\/usr\/local\/bin\/nawk/", $this->file)
124 || preg_match("/^#!\s+\/bin\/gawk/", $this->file)
125 || preg_match("/^#!\s+\/usr\/bin\/gawk/", $this->file)
126 || preg_match("/^#!\s+\/usr\/local\/bin\/gawk/", $this->file)
127 || preg_match("/^#!\s+\/bin\/awk/", $this->file)
128 || preg_match("/^#!\s+\/usr\/bin\/awk/", $this->file)
129 || preg_match("/^BEGIN\s+/", $this->file)) return true;
130 else return false;
131 }
132
133 function detect_perl()
134 {
135 if (preg_match("/^#!\s+\/bin\/perl/", $this->file)
136 || preg_match("/^eval\s+\"exec\s+\/bin\/perl/", $this->file)
137 || preg_match("/^#!\s+\/usr\/bin\/perl/", $this->file)
138 || preg_match("/^eval\s+\"exec\s+\/usr\/bin\/perl/", $this->file)
139 || preg_match("/^#!\s+\/usr\/local\/bin\/perl/", $this->file)
140 || preg_match("/^eval\s+\"exec\s+\/usr\/local\/bin\/perl/", $this->file)) return true;
141 else return false;
142 }
143
144 function detect_bash()
145 {
146 if (preg_match("/^#!\s+\/bin\/bash/", $this->file)
147 || preg_match("/^#!\s+\/usr\/local\/bin\/bash/", $this->file)) return true;
148 else return false;
149 }
150
151 function detect_rc()
152 {
153 if (preg_match("/^#!\s+\/bin\/rc/", $this->file)) return true;
154 else return false;
155 }
156
157 function detect_env()
158 {
159 if (preg_match("/^#!\s*\/usr\/bin\/env/", $this->file)) return true;
160 else return false;
161 }
162
164 {
165 if (preg_match("/^#!/", $this->file)) return true;
166 else return false;
167 }
168
169 function detect_diff()
170 {
171 if (preg_match("/^diff\s+/", $this->file)
172 || preg_match("/^\*\*\*\s+/", $this->file)
173 || preg_match("/^Only\s+in\s+/", $this->file)
174 || preg_match("/^Common\s+subdirectories:\s+/", $this->file)) return true;
175 else return false;
176 }
177
178 function detect_xdiff()
179 {
180 if (preg_match("/^%XDZ/", $this->file)) return true;
181 else return false;
182 }
183
184 function detect_swf()
185 {
186 if (preg_match("/^FWS/", $this->file)) return true;
187 else return false;
188 }
189
190 function detect_psfont()
191 {
192 if (preg_match("/^(.*?)PS-AdobeFont-1\.0/", $this->file)) return true;
193 else return false;
194 }
195
196 function detect_lex()
197 {
198 if (substr($this->file, 53, 10)=="yyprevious"
199 || substr($this->file, 21, 17)=="generated by flex") return true;
200 else return false;
201 }
202
203 function detect_lisp()
204 {
205 return !(strpos($this->file, ";;") === false);
206 }
207
208 function detect_magic()
209 {
210 return preg_match("/^#\s+Magic/", $this->file);
211 }
212
213 function detect_mime()
214 {
215 return preg_match("/^Content-Type:/", $this->file);
216 }
217
219 {
220 return (substr($this->file, 0, 2)=="%!" || substr($this->file, 0, 3)==(string)(4)."%!");
221 }
222
223 function detect_rtf()
224 {
225 return substr($this->file, 0, 5)=="{\\rtf";
226 }
227
228 function detect_html()
229 {
230 if (preg_match("/\s*<!doctype\s+html/", $this->file)
231 || preg_match("/\s*<head/", $this->file)
232 || preg_match("/\s*<title/", $this->file)
233 || preg_match("/\s*<html/", $this->file)) return true;
234 else return false;
235 }
236
237 function detect_xml()
238 {
239 if (preg_match("/\s*<\?xml/", $this->file)) return true;
240 else return false;
241 }
242
243 function detect_sgml()
244 {
245 if (preg_match("/\s*<!doctype/", $this->file)
246 || preg_match("/\s*<!subdoc/", $this->file)
247 || preg_match("/\s*<!--/", $this->file)) return true;
248 else return false;
249 }
250
251 // --- Images
252
253 function detect_gif()
254 {
255 return (substr($this->file, 0, 6) == "GIF89a");
256 }
257
258 function detect_jpeg()
259 {
260 return !(strpos(substr($this->file, 0, 16), "JFIF") === false);
261 }
262
263 function detect_png()
264 {
265 $arr = unpack("C*", $this->file);
266 if (sizeof($arr)<9) return false;
267 return ($arr[1] == 0x89 && $arr[2] == 0x50
268 && $arr[3] == 0x4E && $arr[4] == 0x47
269 && $arr[5] == 0x0D && $arr[6] == 0x0A
270 && $arr[7] == 0x1A && $arr[8] == 0x0A);
271 }
272
273 function detect_bmp()
274 {
275 return (substr($this->file, 0, 2) == "BM");
276 }
277
278 function detect_tif()
279 {
280 return ((substr($this->file, 0, 2) == "MM") || (substr($this->file, 0, 2) == "II"));
281 }
282}
283
284
285
286?>