diff --git a/src/IDF/Plugin/SyncMonotone.php b/src/IDF/Plugin/SyncMonotone.php index 57f4035..3168661 100644 --- a/src/IDF/Plugin/SyncMonotone.php +++ b/src/IDF/Plugin/SyncMonotone.php @@ -132,7 +132,7 @@ class IDF_Plugin_SyncMonotone foreach ($confdir_contents as $content) { if (!file_exists($confdir.$content)) { throw new IDF_Scm_Exception(sprintf( - __('The configuration file %s is missing.'), $content + __('The configuration file "%s" is missing.'), $content )); } } @@ -141,13 +141,16 @@ class IDF_Plugin_SyncMonotone $projectpath = sprintf($projecttempl, $shortname); if (file_exists($projectpath)) { throw new IDF_Scm_Exception(sprintf( - __('The project path %s already exists.'), $projectpath + __('The project path "%s" already exists.'), $projectpath )); } - if (!mkdir($projectpath)) { + if (!@mkdir($projectpath)) { + $err = error_get_last(); + $err = $err == null ? 'unknown error' : $err['message']; throw new IDF_Scm_Exception(sprintf( - __('The project path %s could not be created.'), $projectpath + __('The project path "%s" could not be created: %s'), + $projectpath, $err )); } @@ -182,9 +185,12 @@ class IDF_Plugin_SyncMonotone // $keydir = Pluf::f('tmp_folder').'/mtn-client-keys'; if (!file_exists($keydir)) { - if (!mkdir($keydir)) { + if (!@mkdir($keydir)) { + $err = error_get_last(); + $err = $err == null ? 'unknown error' : $err['message']; throw new IDF_Scm_Exception(sprintf( - __('The key directory %s could not be created.'), $keydir + __('The key directory "%s" could not be created: %s'), + $keydir, $err )); } } @@ -238,18 +244,24 @@ class IDF_Plugin_SyncMonotone foreach ($confdir_contents as $content) { $filepath = $projectpath.'/'.$content; if (substr($content, -1) == '/') { - if (!mkdir($filepath)) { + if (!@mkdir($filepath)) { + $err = error_get_last(); + $err = $err == null ? 'unknown error' : $err['message']; throw new IDF_Scm_Exception(sprintf( - __('Could not create configuration directory "%s"'), $filepath + __('Could not create configuration directory "%s": %s'), + $filepath, $err )); } continue; } if (substr($content, -3) != '.in') { - if (!symlink($confdir.$content, $filepath)) { + if (!@symlink($confdir.$content, $filepath)) { + $err = error_get_last(); + $err = $err == null ? 'unknown error' : $err['message']; IDF_Scm_Exception(sprintf( - __('Could not create symlink "%s"'), $filepath + __('Could not create symlink for configuration file "%s": %s'), + $filepath, $err )); } continue; @@ -264,9 +276,12 @@ class IDF_Plugin_SyncMonotone // remove the .in $filepath = substr($filepath, 0, -3); - if (file_put_contents($filepath, $filecontents, LOCK_EX) === false) { + if (@file_put_contents($filepath, $filecontents, LOCK_EX) === false) { + $err = error_get_last(); + $err = $err == null ? 'unknown error' : $err['message']; throw new IDF_Scm_Exception(sprintf( - __('Could not write configuration file "%s"'), $filepath + __('Could not write configuration file "%s": %s'), + $filepath, $err )); } } @@ -315,9 +330,12 @@ class IDF_Plugin_SyncMonotone // FIXME: more sanity - what happens on failing writes? we do not // have a backup copy of usher.conf around... - if (file_put_contents($usher_config, $usher_rc, LOCK_EX) === false) { + if (@file_put_contents($usher_config, $usher_rc, LOCK_EX) === false) { + $err = error_get_last(); + $err = $err == null ? 'unknown error' : $err['message']; throw new IDF_Scm_Exception(sprintf( - __('Could not write usher configuration file "%s"'), $usher_config + __('Could not write usher configuration file "%s": %s'), + $usher_config, $err )); } @@ -361,9 +379,12 @@ class IDF_Plugin_SyncMonotone $write_permissions = implode("\n", $key_ids); $rcfile = $projectpath.'/write-permissions'; - if (file_put_contents($rcfile, $write_permissions, LOCK_EX) === false) { + if (@file_put_contents($rcfile, $write_permissions, LOCK_EX) === false) { + $err = error_get_last(); + $err = $err == null ? 'unknown error' : $err['message']; throw new IDF_Scm_Exception(sprintf( - __('Could not write write-permissions file "%s"'), $rcfile + __('Could not write write-permissions file "%s": %s'), + $rcfile, $err )); } @@ -384,9 +405,12 @@ class IDF_Plugin_SyncMonotone } $read_permissions = IDF_Scm_Monotone_BasicIO::compile(array($stanza)); $rcfile = $projectpath.'/read-permissions'; - if (file_put_contents($rcfile, $read_permissions, LOCK_EX) === false) { + if (@file_put_contents($rcfile, $read_permissions, LOCK_EX) === false) { + $err = error_get_last(); + $err = $err == null ? 'unknown error' : $err['message']; throw new IDF_Scm_Exception(sprintf( - __('Could not write read-permissions file "%s"'), $rcfile + __('Could not write read-permissions file "%s": %s'), + $rcfile, $err )); } @@ -401,17 +425,19 @@ class IDF_Plugin_SyncMonotone $serverRestartRequired = false; if ($project->private && file_exists($projectfile) && is_link($projectfile)) { - if (!unlink($projectfile)) { + if (!@unlink($projectfile)) { + $err = error_get_last(); + $err = $err == null ? 'unknown error' : $err['message']; IDF_Scm_Exception(sprintf( - __('Could not remove symlink "%s"'), $projectfile + __('Could not remove symlink "%s": %s'), $projectfile, $err )); } $serverRestartRequired = true; } else if (!$project->private && !file_exists($projectfile)) { - if (!symlink($templatefile, $projectfile)) { + if (!@symlink($templatefile, $projectfile)) { throw new IDF_Scm_Exception(sprintf( - __('Could not create symlink "%s"'), $projectfile + __('Could not create symlink "%s": %s'), $projectfile, $err )); } $serverRestartRequired = true; @@ -473,8 +499,11 @@ class IDF_Plugin_SyncMonotone if ($keyname && $keyhash && file_exists($keydir .'/'. $keyname . '.' . $keyhash)) { if (!@unlink($keydir .'/'. $keyname . '.' . $keyhash)) { + $err = error_get_last(); + $err = $err == null ? 'unknown error' : $err['message']; throw new IDF_Scm_Exception(sprintf( - __('Could not delete client private key %s'), $keyname + __('Could not delete client private key "%s": %s'), + $keyname, $err )); } } @@ -505,9 +534,12 @@ class IDF_Plugin_SyncMonotone // FIXME: more sanity - what happens on failing writes? we do not // have a backup copy of usher.conf around... - if (file_put_contents($usher_config, $usher_rc, LOCK_EX) === false) { + if (@file_put_contents($usher_config, $usher_rc, LOCK_EX) === false) { + $err = error_get_last(); + $err = $err == null ? 'unknown error' : $err['message']; throw new IDF_Scm_Exception(sprintf( - __('Could not write usher configuration file "%s"'), $usher_config + __('Could not write usher configuration file "%s": %s'), + $usher_config, $err )); } @@ -598,10 +630,13 @@ class IDF_Plugin_SyncMonotone $read_perms = IDF_Scm_Monotone_BasicIO::compile($parsed_read_perms); - if (file_put_contents($projectpath.'/read-permissions', + if (@file_put_contents($projectpath.'/read-permissions', $read_perms, LOCK_EX) === false) { + $err = error_get_last(); + $err = $err == null ? 'unknown error' : $err['message']; throw new IDF_Scm_Exception(sprintf( - __('Could not write read-permissions for project "%s"'), $shortname + __('Could not write read-permissions for project "%s": %s'), + $shortname, $err )); } } @@ -611,11 +646,13 @@ class IDF_Plugin_SyncMonotone if (!in_array('*', $lines) && !in_array($mtn_key_id, $lines)) { $lines[] = $mtn_key_id; } - if (file_put_contents($projectpath.'/write-permissions', + if (@file_put_contents($projectpath.'/write-permissions', implode("\n", $lines) . "\n", LOCK_EX) === false) { + $err = error_get_last(); + $err = $err == null ? 'unknown error' : $err['message']; throw new IDF_Scm_Exception(sprintf( - __('Could not write write-permissions file for project "%s"'), - $shortname + __('Could not write write-permissions file for project "%s": %s'), + $shortname, $err )); } @@ -693,10 +730,13 @@ class IDF_Plugin_SyncMonotone $read_perms = IDF_Scm_Monotone_BasicIO::compile($parsed_read_perms); - if (file_put_contents($projectpath.'/read-permissions', + if (@file_put_contents($projectpath.'/read-permissions', $read_perms, LOCK_EX) === false) { + $err = error_get_last(); + $err = $err == null ? 'unknown error' : $err['message']; throw new IDF_Scm_Exception(sprintf( - __('Could not write read-permissions for project "%s"'), $shortname + __('Could not write read-permissions for project "%s": %s'), + $shortname, $err )); } } @@ -711,11 +751,13 @@ class IDF_Plugin_SyncMonotone continue; } } - if (file_put_contents($projectpath.'/write-permissions', - implode("\n", $lines) . "\n", LOCK_EX) === false) { + if (@file_put_contents($projectpath.'/write-permissions', + implode("\n", $lines) . "\n", LOCK_EX) === false) { + $err = error_get_last(); + $err = $err == null ? 'unknown error' : $err['message']; throw new IDF_Scm_Exception(sprintf( - __('Could not write write-permissions file for project "%s"'), - $shortname + __('Could not write write-permissions file for project "%s": %s'), + $shortname, $err )); } @@ -823,7 +865,7 @@ class IDF_Plugin_SyncMonotone foreach ($scan as $subpath) { $status |= self::_delete_recursive($subpath); } - $status |= rmdir($path); + $status |= @rmdir($path); return $status; } }