CRM_Core_CodeGen_Util_File - Better tempdir creation
authorTim Otten <totten@civicrm.org>
Sat, 30 Aug 2014 03:08:29 +0000 (20:08 -0700)
committerTim Otten <totten@civicrm.org>
Sat, 30 Aug 2014 03:30:54 +0000 (20:30 -0700)
CRM/Core/CodeGen/Util/File.php
CRM/Core/CodeGen/Util/Template.php

index 47f99ea623898106f59d8721b6c713d28eef1db2..5784c7ccdf76eaa9b9438b4a69f031e31b687180 100644 (file)
@@ -17,11 +17,16 @@ class CRM_Core_CodeGen_Util_File {
   /**
    * @param $dir
    */
-  static function removeDir($dir) {
+  static function cleanTempDir($dir) {
     foreach (glob("$dir/*") as $tempFile) {
       unlink($tempFile);
     }
     rmdir($dir);
+    if (preg_match(':^(.*)\.d$:', $dir, $matches)) {
+      if (file_exists($matches[1])) {
+        unlink($matches[1]);
+      }
+    }
   }
 
   /**
@@ -30,18 +35,7 @@ class CRM_Core_CodeGen_Util_File {
    * @return string
    */
   static function createTempDir($prefix) {
-    if (isset($_SERVER['TMPDIR'])) {
-      $tempDir = $_SERVER['TMPDIR'];
-    }
-    else {
-      $tempDir = '/tmp';
-    }
-
-    $newTempDir = $tempDir . '/' . $prefix . rand(1, 10000);
-    if (function_exists('posix_geteuid')) {
-      $newTempDir .= '_' . posix_geteuid();
-    }
-
+    $newTempDir = tempnam(sys_get_temp_dir(), $prefix) . '.d';
     if (file_exists($newTempDir)) {
       self::removeDir($newTempDir);
     }
index f9a509f584d83cfea1055a892bb5dba9db2e0f7e..3d14b8896f3c3b3eea0e41ca4e3367ed3ccddd45 100644 (file)
@@ -50,7 +50,7 @@ class CRM_Core_CodeGen_Util_Template {
   }
 
   function __destruct() {
-    CRM_Core_CodeGen_Util_File::removeDir($this->compileDir);
+    CRM_Core_CodeGen_Util_File::cleanTempDir($this->compileDir);
   }
 
   /**