1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
|
<?php
/**
* Driver for using mkisofs for creating ISO images.
*
* $Horde: framework/VFS_ISOWriter/ISOWriter/mkisofs.php,v 1.1.8.5 2006/01/01 21:28:43 jan Exp $
*
* Copyright 2004-2006 Cronosys, LLC <http://www.cronosys.com/>
*
* See the enclosed file COPYING for license information (LGPL). If you
* did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
*
* @author Jason M. Felice <jfelice@cronosys.com>
* @package VFS_ISO
* @since Horde 3.0
*/
class VFS_ISOWriter_mkisofs extends VFS_ISOWriter {
function process()
{
require_once dirname(__FILE__) . '/RealInputStrategy.php';
$inputStrategy = &VFS_ISOWriter_RealInputStrategy::factory($this->_sourceVfs, $this->_params['sourceRoot']);
if (is_a($inputStrategy, 'PEAR_Error')) {
return $inputStrategy;
}
require_once dirname(__FILE__) . '/RealOutputStrategy.php';
$outputStrategy = &VFS_ISOWriter_RealOutputStrategy::factory($this->_targetVfs, $this->_params['targetFile']);
if (is_a($outputStrategy, 'PEAR_Error')) {
return $outputStrategy;
}
$cmd = sprintf('mkisofs -quiet -r -J -o %s %s >/dev/null',
escapeshellarg($outputStrategy->getRealFilename()),
escapeshellarg($inputStrategy->getRealPath()));
$res = system($cmd, $ec);
/* Could be a lot of space used. Give both a chance to clean up even
* if one errors out. */
$finRes1 = $inputStrategy->finished();
$finRes2 = $outputStrategy->finished();
if (is_a($finRes1, 'PEAR_Error')) {
return $finRes1;
}
if (is_a($finRes2, 'PEAR_Error')) {
return $finRes2;
}
if ($res === false) {
return PEAR::raiseError(_("Unable to run 'mkisofs'."));
}
if ($ec != 0) {
return PEAR::raiseError(sprintf(_("mkisofs error code %d while making ISO."), $ec));
}
}
/**
* Determine if we can use this driver to make images
*
* @static
*
* @return boolean Whether we can use this strategy for making ISO images.
*/
function strategyAvailable()
{
/* Check if we can find and execute the `mkisofs' command. */
$res = system("mkisofs -help >/dev/null 2>&1", $ec);
if ($res === false) {
return false;
}
if ($ec != 0) {
return false;
}
return true;
}
}
|