* @param string $path
* A filepath relative to file_directory_path.
*/
-function _imagecache_recursive_delete($dir) {
- $d = dir($dir);
- while (($entry = $d->read()) !== false) {
- if ($entry == '.' || $entry == '..') continue;
- $path = $dir .'/'. $entry;
- if (is_file($path)) unlink($path);
- if (is_dir($path)) _imagecache_recursive_delete($path);
- }
- rmdir($dir);
+function _imagecache_recursive_delete($path) {
+ if (is_file($path) || is_link($path)) {
+ unlink($path);
+ }
+ elseif (is_dir($path)) {
+ $d = dir($path);
+ while (($entry = $d->read()) !== false) {
+ if ($entry == '.' || $entry == '..') continue;
+ $entry_path = $path .'/'. $entry;
+ _imagecache_recursive_delete($entry_path);
+ }
+ $d->close();
+ rmdir($path);
+ }
+ else {
+ watchdog('imagecache', t('Unknown file type(%path) stat: %stat ',
+ array('%path' => $path, '%stat' => print_r(stat($path),1))), WATCHDOG_ERROR);
+ }
}
/**