|
|
@ -36,7 +36,6 @@ if (empty($SOURCES['dependencies'])) { |
|
|
|
$CURL = trim(`which curl`); |
|
|
|
$WGET = trim(`which wget`); |
|
|
|
$UNZIP = trim(`which unzip`); |
|
|
|
$FILEINFO = trim(`which file`); |
|
|
|
|
|
|
|
if (($CACHEDIR = getenv("CACHEDIR")) && is_writeable($CACHEDIR)) { |
|
|
|
// use $CACHEDIR |
|
|
@ -154,19 +153,17 @@ function fetch_from_source($package, $useCache = true, &$filetype = null) |
|
|
|
*/ |
|
|
|
function extract_filetype($package, &$filetype = null) |
|
|
|
{ |
|
|
|
global $FILEINFO, $CACHEDIR; |
|
|
|
global $CACHEDIR; |
|
|
|
|
|
|
|
$filetype = pathinfo($package['url'], PATHINFO_EXTENSION) ?: 'tmp'; |
|
|
|
$cache_file = $CACHEDIR . '/' . $package['lib'] . '-' . $package['version'] . '.' . $filetype; |
|
|
|
|
|
|
|
if (empty($FILEINFO)) { |
|
|
|
rcube::raise_error("Required program 'file' not found.", false, true); |
|
|
|
} |
|
|
|
|
|
|
|
// detect downloaded/cached file type |
|
|
|
exec(sprintf('%s -b %s', $FILEINFO, $cache_file), $out); |
|
|
|
if (stripos($out[0], 'zip') === 0) { |
|
|
|
$filetype = 'zip'; |
|
|
|
// Make sure it is a zip file |
|
|
|
if (file_exists($cache_file)) { |
|
|
|
$magic = file_get_contents($cache_file, false, null, 0, 4); |
|
|
|
if ($magic === "PK\003\004") { |
|
|
|
$filetype = 'zip'; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return $cache_file; |
|
|
|