/* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ class MagicConfig { function MagicConfig() { $this->separator = "."; $this->extensions = array( "a" => "ada95", "ada" => "ada95", "adb" => "ada95", "ads" => "ada95", "asm" => "asm_x86", "asp" => "jscript|vb|vbdotnet", "awk" => "awk", "bas" => "vb|vbdotnet", "c" => "c", "cbl" => "cobol", "cls" => "vb|vbdotnet", "cob" => "cobol", "cpy" => "cobol", "cpp" => "cpp", "cs" => "csharp", "cxx" => "cpp", "dat" => "mumps", "dpr" => "delphi", "e" => "eiffel|euphoria", "ew" => "euphoria", "eu" => "euphoria", "ex" => "euphoria", "exw" => "euphoria", "exu" => "euphoria", "frm" => "vb|vbdotnet", "h" => "c", "hpp" => "cpp", "inc" => "turbopascal|vb|vbdotnet", "java" => "javaswing", "js" => "jscript|javascript", "lsp" => "lisp", "m" => "mumps", "pas" => "delphi|turbopascal", "php" => "php3", "php3" => "php3", "php4" => "php3", "pl" => "perl", "pm" => "perl", "py" => "python", "pyc" => "python", "rtn" => "mumps", "scm" => "scheme", "vb" => "vb|vbdotnet", "vbs" => "vb|vbdotnet|vbscript", "wsf" => "vbscript" ); $this->langfunctions = array( // ASCII // --- Languages "awk", "bash", "perl", "rc", "env", "cpp", "diff", "xdiff", "swf", "psfont", "lex", "lisp", "magic", "mime", // --- Markup "postscript", "rtf", "html", "xml", "sgml", // --- Generic tests "genericshell"); $this->binfunctions = array( // Binary // --- Images "gif", "jpeg", "png", "bmp", "tif" // --- Compressed ); } function detect_cpp() { return !(strpos($this->file, "//") === false); } function detect_awk() { if (preg_match("/^#!\s+\/bin\/nawk/", $this->file) || preg_match("/^#!\s+\/bin\/nawk/", $this->file) || preg_match("/^#!\s+\/usr\/bin\/nawk/", $this->file) || preg_match("/^#!\s+\/usr\/local\/bin\/nawk/", $this->file) || preg_match("/^#!\s+\/bin\/gawk/", $this->file) || preg_match("/^#!\s+\/usr\/bin\/gawk/", $this->file) || preg_match("/^#!\s+\/usr\/local\/bin\/gawk/", $this->file) || preg_match("/^#!\s+\/bin\/awk/", $this->file) || preg_match("/^#!\s+\/usr\/bin\/awk/", $this->file) || preg_match("/^BEGIN\s+/", $this->file)) return true; else return false; } function detect_perl() { if (preg_match("/^#!\s+\/bin\/perl/", $this->file) || preg_match("/^eval\s+\"exec\s+\/bin\/perl/", $this->file) || preg_match("/^#!\s+\/usr\/bin\/perl/", $this->file) || preg_match("/^eval\s+\"exec\s+\/usr\/bin\/perl/", $this->file) || preg_match("/^#!\s+\/usr\/local\/bin\/perl/", $this->file) || preg_match("/^eval\s+\"exec\s+\/usr\/local\/bin\/perl/", $this->file)) return true; else return false; } function detect_bash() { if (preg_match("/^#!\s+\/bin\/bash/", $this->file) || preg_match("/^#!\s+\/usr\/local\/bin\/bash/", $this->file)) return true; else return false; } function detect_rc() { if (preg_match("/^#!\s+\/bin\/rc/", $this->file)) return true; else return false; } function detect_env() { if (preg_match("/^#!\s*\/usr\/bin\/env/", $this->file)) return true; else return false; } function detect_genericshell() { if (preg_match("/^#!/", $this->file)) return true; else return false; } function detect_diff() { if (preg_match("/^diff\s+/", $this->file) || preg_match("/^\*\*\*\s+/", $this->file) || preg_match("/^Only\s+in\s+/", $this->file) || preg_match("/^Common\s+subdirectories:\s+/", $this->file)) return true; else return false; } function detect_xdiff() { if (preg_match("/^%XDZ/", $this->file)) return true; else return false; } function detect_swf() { if (preg_match("/^FWS/", $this->file)) return true; else return false; } function detect_psfont() { if (preg_match("/^(.*?)PS-AdobeFont-1\.0/", $this->file)) return true; else return false; } function detect_lex() { if (substr($this->file, 53, 10)=="yyprevious" || substr($this->file, 21, 17)=="generated by flex") return true; else return false; } function detect_lisp() { return !(strpos($this->file, ";;") === false); } function detect_magic() { return preg_match("/^#\s+Magic/", $this->file); } function detect_mime() { return preg_match("/^Content-Type:/", $this->file); } function detect_postscript() { return (substr($this->file, 0, 2)=="%!" || substr($this->file, 0, 3)==(string)(4)."%!"); } function detect_rtf() { return substr($this->file, 0, 5)=="{\\rtf"; } function detect_html() { if (preg_match("/\s*file) || preg_match("/\s*
file) || preg_match("/\s*