bug fix in mimetype detect code
This commit is contained in:
parent
eaf0024c0f
commit
854e0c5a9c
|
@ -205,7 +205,7 @@ class OC_FILES {
|
||||||
} else if (function_exists("mime_content_type")) {
|
} else if (function_exists("mime_content_type")) {
|
||||||
// use mime magic extension if available
|
// use mime magic extension if available
|
||||||
$mime_type = mime_content_type($fspath);
|
$mime_type = mime_content_type($fspath);
|
||||||
} else if ($this->_can_execute("file")) {
|
} else if (OC_FILES::canExecute("file")) {
|
||||||
// it looks like we have a 'file' command,
|
// it looks like we have a 'file' command,
|
||||||
// lets see it it does have mime support
|
// lets see it it does have mime support
|
||||||
$fp = popen("file -i '$fspath' 2>/dev/null", "r");
|
$fp = popen("file -i '$fspath' 2>/dev/null", "r");
|
||||||
|
@ -256,6 +256,49 @@ class OC_FILES {
|
||||||
return $mime_type;
|
return $mime_type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* detect if a given program is found in the search PATH
|
||||||
|
*
|
||||||
|
* helper function used by _mimetype() to detect if the
|
||||||
|
* external 'file' utility is available
|
||||||
|
*
|
||||||
|
* @param string program name
|
||||||
|
* @param string optional search path, defaults to $PATH
|
||||||
|
* @return bool true if executable program found in path
|
||||||
|
*/
|
||||||
|
function canExecute($name, $path = false)
|
||||||
|
{
|
||||||
|
// path defaults to PATH from environment if not set
|
||||||
|
if ($path === false) {
|
||||||
|
$path = getenv("PATH");
|
||||||
|
}
|
||||||
|
|
||||||
|
// check method depends on operating system
|
||||||
|
if (!strncmp(PHP_OS, "WIN", 3)) {
|
||||||
|
// on Windows an appropriate COM or EXE file needs to exist
|
||||||
|
$exts = array(".exe", ".com");
|
||||||
|
$check_fn = "file_exists";
|
||||||
|
} else {
|
||||||
|
// anywhere else we look for an executable file of that name
|
||||||
|
$exts = array("");
|
||||||
|
$check_fn = "is_executable";
|
||||||
|
}
|
||||||
|
|
||||||
|
// now check the directories in the path for the program
|
||||||
|
foreach (explode(PATH_SEPARATOR, $path) as $dir) {
|
||||||
|
// skip invalid path entries
|
||||||
|
if (!file_exists($dir)) continue;
|
||||||
|
if (!is_dir($dir)) continue;
|
||||||
|
|
||||||
|
// and now look for the file
|
||||||
|
foreach ($exts as $ext) {
|
||||||
|
if ($check_fn("$dir/$name".$ext)) return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function zipAddDir($dir,$zip,$internalDir=''){
|
function zipAddDir($dir,$zip,$internalDir=''){
|
||||||
|
|
Loading…
Reference in New Issue