Use NotWritableError

This commit is contained in:
Johannes Rauh 2025-08-11 13:12:45 +02:00
parent c192082b27
commit 9187ca4030

View File

@ -3,14 +3,14 @@
namespace Icinga\File\Ini; namespace Icinga\File\Ini;
use Icinga\Application\Config;
use Icinga\Application\Logger; use Icinga\Application\Logger;
use Icinga\Data\ConfigObject; use Icinga\Data\ConfigObject;
use Icinga\Exception\NotWritableError;
use Icinga\Exception\ProgrammingError; use Icinga\Exception\ProgrammingError;
use Icinga\File\Ini\Dom\Directive; use Icinga\File\Ini\Dom\Directive;
use Icinga\File\Ini\Dom\Document; use Icinga\File\Ini\Dom\Document;
use Icinga\File\Ini\Dom\Section; use Icinga\File\Ini\Dom\Section;
use Zend_Config_Exception;
use Icinga\Application\Config;
/** /**
* A INI file adapter that respects the file structure and the comments of already existing ini files * A INI file adapter that respects the file structure and the comments of already existing ini files
@ -89,21 +89,21 @@ class IniWriter
* @param string $filename * @param string $filename
* @param bool $exclusiveLock * @param bool $exclusiveLock
* *
* @throws Zend_Config_Exception * @throws NotWritableError
*/ */
public function write($filename = null, $exclusiveLock = false) public function write($filename = null, $exclusiveLock = false)
{ {
$filePath = isset($filename) ? $filename : $this->filename; $filePath = isset($filename) ? $filename : $this->filename;
$setMode = false === file_exists($filePath); $setMode = false === file_exists($filePath);
if (@file_put_contents($filePath, $this->render(), $exclusiveLock ? LOCK_EX : 0) === false) { if (@file_put_contents($filePath, $this->render(), $exclusiveLock ? LOCK_EX : 0) === false) {
throw new Zend_Config_Exception('Could not write to file "' . $filePath . '"'); throw new NotWritableError('Could not write to file "' . $filePath . '"');
} }
if ($setMode) { if ($setMode) {
// file was newly created // file was newly created
$mode = $this->fileMode; $mode = $this->fileMode;
if (is_int($this->fileMode) && false === @chmod($filePath, $this->fileMode)) { if (is_int($this->fileMode) && false === @chmod($filePath, $this->fileMode)) {
throw new Zend_Config_Exception(sprintf('Failed to set file mode "%o" on file "%s"', $mode, $filePath)); throw new NotWritableError(sprintf('Failed to set file mode "%o" on file "%s"', $mode, $filePath));
} }
} }
} }