summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/color/color.module4
-rw-r--r--modules/locale/locale.install2
-rw-r--r--modules/locale/locale.test4
-rw-r--r--modules/simpletest/simpletest.install2
-rw-r--r--modules/simpletest/tests/file.test53
-rw-r--r--modules/system/system.install4
-rw-r--r--modules/system/system.tar.inc12
7 files changed, 57 insertions, 24 deletions
diff --git a/modules/color/color.module b/modules/color/color.module
index 6a3ca99c4..01341a618 100644
--- a/modules/color/color.module
+++ b/modules/color/color.module
@@ -312,10 +312,10 @@ function color_scheme_form_submit($form, &$form_state) {
// Delete old files.
foreach (variable_get('color_' . $theme . '_files', array()) as $file) {
- @unlink($file);
+ @drupal_unlink($file);
}
if (isset($file) && $file = dirname($file)) {
- @rmdir($file);
+ @drupal_rmdir($file);
}
// Don't render the default colorscheme, use the standard theme instead.
diff --git a/modules/locale/locale.install b/modules/locale/locale.install
index f9c1c25d4..221241605 100644
--- a/modules/locale/locale.install
+++ b/modules/locale/locale.install
@@ -129,7 +129,7 @@ function locale_uninstall() {
}
// Delete the JavaScript translations directory if empty.
if (!file_scan_directory($locale_js_directory, '/.*/')) {
- rmdir($locale_js_directory);
+ drupal_rmdir($locale_js_directory);
}
}
diff --git a/modules/locale/locale.test b/modules/locale/locale.test
index e6c7cac81..b2f36c6e2 100644
--- a/modules/locale/locale.test
+++ b/modules/locale/locale.test
@@ -762,7 +762,7 @@ class LocaleImportFunctionalTest extends DrupalWebTestCase {
file_put_contents($name, $contents);
$options['files[file]'] = $name;
$this->drupalPost('admin/config/regional/translate/import', $options, t('Import'));
- unlink($name);
+ drupal_unlink($name);
}
/**
@@ -911,7 +911,7 @@ class LocaleExportFunctionalTest extends DrupalWebTestCase {
'langcode' => 'fr',
'files[file]' => $name,
), t('Import'));
- unlink($name);
+ drupal_unlink($name);
// Get the French translations.
$this->drupalPost('admin/config/regional/translate/export', array(
diff --git a/modules/simpletest/simpletest.install b/modules/simpletest/simpletest.install
index c7eea9f98..a3f2c72b6 100644
--- a/modules/simpletest/simpletest.install
+++ b/modules/simpletest/simpletest.install
@@ -25,7 +25,7 @@ function simpletest_uninstall() {
foreach ($files as $file) {
file_unmanaged_delete($file->uri);
}
- rmdir($path);
+ drupal_rmdir($path);
}
/**
diff --git a/modules/simpletest/tests/file.test b/modules/simpletest/tests/file.test
index 4cfdad807..cf661c63b 100644
--- a/modules/simpletest/tests/file.test
+++ b/modules/simpletest/tests/file.test
@@ -108,7 +108,20 @@ class FileTestCase extends DrupalWebTestCase {
clearstatcache();
// Mask out all but the last three octets.
- $actual_mode = fileperms($filepath) & 511;
+ $actual_mode = fileperms($filepath) & 0777;
+
+ // PHP on Windows has limited support for file permissions. Usually each of
+ // "user", "group" and "other" use one octal digit (3 bits) to represent the
+ // read/write/execute bits. On Windows, chmod() ignores the "group" and
+ // "other" bits, and fileperms() returns the "user" bits in all three
+ // positions. $expected_mode is updated to reflect this.
+ if (substr(PHP_OS, 0, 3) == 'WIN') {
+ // Reset the "group" and "other" bits.
+ $expected_mode = $expected_mode & 0700;
+ // Shift the "user" bits to the "group" and "other" positions also.
+ $expected_mode = $expected_mode | $expected_mode >> 3 | $expected_mode >> 6;
+ }
+
if (!isset($message)) {
$message = t('Expected file permission to be %expected, actually were %actual.', array('%actual' => decoct($actual_mode), '%expected' => decoct($expected_mode)));
}
@@ -130,7 +143,20 @@ class FileTestCase extends DrupalWebTestCase {
clearstatcache();
// Mask out all but the last three octets.
- $actual_mode = fileperms($directory) & 511;
+ $actual_mode = fileperms($directory) & 0777;
+
+ // PHP on Windows has limited support for file permissions. Usually each of
+ // "user", "group" and "other" use one octal digit (3 bits) to represent the
+ // read/write/execute bits. On Windows, chmod() ignores the "group" and
+ // "other" bits, and fileperms() returns the "user" bits in all three
+ // positions. $expected_mode is updated to reflect this.
+ if (substr(PHP_OS, 0, 3) == 'WIN') {
+ // Reset the "group" and "other" bits.
+ $expected_mode = $expected_mode & 0700;
+ // Shift the "user" bits to the "group" and "other" positions also.
+ $expected_mode = $expected_mode | $expected_mode >> 3 | $expected_mode >> 6;
+ }
+
if (!isset($message)) {
$message = t('Expected directory permission to be %expected, actually were %actual.', array('%actual' => decoct($actual_mode), '%expected' => decoct($expected_mode)));
}
@@ -413,7 +439,7 @@ class FileValidatorTest extends DrupalWebTestCase {
$this->assertTrue($info['width'] <= 10, t('Image scaled to correct width.'), 'File');
$this->assertTrue($info['height'] <= 5, t('Image scaled to correct height.'), 'File');
- unlink(drupal_realpath($temp_dir . '/druplicon.png'));
+ drupal_unlink(drupal_realpath($temp_dir . '/druplicon.png'));
}
else {
// TODO: should check that the error is returned if no toolkit is available.
@@ -866,19 +892,26 @@ class FileDirectoryTest extends FileTestCase {
// Make sure directory actually exists.
$this->assertTrue(is_dir($directory), t('Directory actually exists.'), 'File');
- // Make directory read only.
- @chmod($directory, 0444);
- $this->assertFalse(file_prepare_directory($directory, 0), t('Error reported for a non-writeable directory.'), 'File');
+ if (substr(PHP_OS, 0, 3) != 'WIN') {
+ // PHP on Windows doesn't support any kind of useful read-only mode for
+ // directories. When executing a chmod() on a directory, PHP only sets the
+ // read-only flag, which doesn't prevent files to actually be written
+ // in the directory on any recent version of Windows.
+
+ // Make directory read only.
+ @drupal_chmod($directory, 0444);
+ $this->assertFalse(file_prepare_directory($directory, 0), t('Error reported for a non-writeable directory.'), 'File');
- // Test directory permission modification.
- $this->assertTrue(file_prepare_directory($directory, FILE_MODIFY_PERMISSIONS), t('No error reported when making directory writeable.'), 'File');
+ // Test directory permission modification.
+ $this->assertTrue(file_prepare_directory($directory, FILE_MODIFY_PERMISSIONS), t('No error reported when making directory writeable.'), 'File');
+ }
- // Test directory permission modification actually set correct permissions.
+ // Test that the directory has the correct permissions.
$this->assertDirectoryPermissions($directory, variable_get('file_chmod_directory', 0775));
// Remove .htaccess file to then test that it gets re-created.
$directory = file_directory_path();
- @unlink($directory . '/.htaccess');
+ @drupal_unlink($directory . '/.htaccess');
$this->assertFalse(is_file($directory . '/.htaccess'), t('Successfully removed the .htaccess file in the files directory.'), 'File');
file_ensure_htaccess();
$this->assertTrue(is_file($directory . '/.htaccess'), t('Successfully re-created the .htaccess file in the files directory.'), 'File');
diff --git a/modules/system/system.install b/modules/system/system.install
index 492df8365..d4da8b4a7 100644
--- a/modules/system/system.install
+++ b/modules/system/system.install
@@ -2351,10 +2351,10 @@ function system_update_7046() {
variable_set('theme_garland_settings', $settings);
// Remove Garland's color files since they won't match Minnelli's.
foreach (variable_get('color_garland_files', array()) as $file) {
- @unlink($file);
+ @drupal_unlink($file);
}
if (isset($file) && $file = dirname($file)) {
- @rmdir($file);
+ @drupal_rmdir($file);
}
variable_del('color_garland_palette');
variable_del('color_garland_stylesheets');
diff --git a/modules/system/system.tar.inc b/modules/system/system.tar.inc
index 30b0c2f55..fd1d3c825 100644
--- a/modules/system/system.tar.inc
+++ b/modules/system/system.tar.inc
@@ -210,7 +210,7 @@ class Archive_Tar // extends PEAR
$this->_close();
// ----- Look for a local copy to delete
if ($this->_temp_tarname != '')
- @unlink($this->_temp_tarname);
+ @drupal_unlink($this->_temp_tarname);
// $this->_PEAR();
}
// }}}
@@ -777,7 +777,7 @@ class Archive_Tar // extends PEAR
// ----- Look if a local copy need to be erase
// Note that it might be interesting to keep the url for a time : ToDo
if ($this->_temp_tarname != '') {
- @unlink($this->_temp_tarname);
+ @drupal_unlink($this->_temp_tarname);
$this->_temp_tarname = '';
}
@@ -793,11 +793,11 @@ class Archive_Tar // extends PEAR
// ----- Look for a local copy
if ($this->_temp_tarname != '') {
// ----- Remove the local copy but not the remote tarname
- @unlink($this->_temp_tarname);
+ @drupal_unlink($this->_temp_tarname);
$this->_temp_tarname = '';
} else {
// ----- Remove the local tarname file
- @unlink($this->_tarname);
+ @drupal_unlink($this->_tarname);
}
$this->_tarname = '';
@@ -1603,7 +1603,7 @@ class Archive_Tar // extends PEAR
}
} elseif ($v_header['typeflag'] == "2") {
if (@file_exists($v_header['filename'])) {
- @unlink($v_header['filename']);
+ @drupal_unlink($v_header['filename']);
}
if (!@symlink($v_header['link'], $v_header['filename'])) {
$this->_error('Unable to extract symbolic link {'
@@ -1740,7 +1740,7 @@ class Archive_Tar // extends PEAR
@bzclose($v_temp_tar);
}
- if (!@unlink($this->_tarname.".tmp")) {
+ if (!@drupal_unlink($this->_tarname.".tmp")) {
$this->_error('Error while deleting temporary file \''
.$this->_tarname.'.tmp\'');
}