]> granicus.if.org Git - php/commitdiff
- Make mkTemp() automatically removed temporary created files
authorTomas V.V.Cox <cox@php.net>
Fri, 31 May 2002 17:47:19 +0000 (17:47 +0000)
committerTomas V.V.Cox <cox@php.net>
Fri, 31 May 2002 17:47:19 +0000 (17:47 +0000)
  or dirs at script shutdown time
- Remove unnecesarry PEAR inheritance
- Some PHPDoc fixes

pear/System.php

index 98d9b8eae7545003efdd4fbcabea40712a2005d5..0f35eb1220bf3bf22a8a4da5d49173e9a14d2f4a 100644 (file)
@@ -22,6 +22,8 @@
 require_once 'PEAR.php';
 require_once 'Console/Getopt.php';
 
+$GLOBALS['_System_temp_files'] = array();
+
 /**
 * System offers cross plattform compatible system functions
 *
@@ -45,7 +47,7 @@ require_once 'Console/Getopt.php';
 * @access   public
 * @see      http://pear.php.net/manual/
 */
-class System extends PEAR
+class System
 {
     /**
     * returns the commandline arguments of a function
@@ -306,7 +308,8 @@ class System extends PEAR
     }
 
     /**
-    * Creates temporal files or directories
+    * Creates temporary files or directories. This function will remove
+    * the created files when the scripts finish its execution.
     *
     * Usage:
     *   1) $tempfile = System::mktemp("prefix");
@@ -316,8 +319,8 @@ class System extends PEAR
     *
     * prefix -> The string that will be prepended to the temp name
     *           (defaults to "tmp").
-    * -d     -> A temporal dir will be created instead of a file.
-    * -t     -> The target dir where the temporal (file|dir) will be created. If
+    * -d     -> A temporary dir will be created instead of a file.
+    * -t     -> The target dir where the temporary (file|dir) will be created. If
     *           this param is missing by default the env vars TMP on Windows or
     *           TMPDIR in Unix will be used. If these vars are also missing
     *           c:\windows\temp or /tmp will be used.
@@ -329,6 +332,7 @@ class System extends PEAR
     */
     function mktemp($args = null)
     {
+        static $first_time = true;
         $opts = System::_parseArgs($args, 't:d');
         if (PEAR::isError($opts)) {
             return System::raiseError($opts);
@@ -354,9 +358,29 @@ class System extends PEAR
                 return System::raiseError("Unable to create temporary directory $tmpdir");
             }
         }
+        $GLOBALS['_System_temp_files'][] = $tmp;
+        if ($first_time) {
+            PEAR::registerShutdownFunc(array('System', '_removeTmpFiles'));
+            $first_time = false;
+        }
         return $tmp;
     }
 
+    /**
+    * Remove temporary files created my mkTemp. This function is executed
+    * at script shutdown time
+    *
+    * @access private
+    */
+    function _removeTmpFiles()
+    {
+        if (count($GLOBALS['_System_temp_files'])) {
+            $delete = $GLOBALS['_System_temp_files'];
+            array_unshift($delete, '-r');
+            System::rm($delete);
+        }
+    }
+
     /**
     * Get the path of the temporal directory set in the system
     * by looking in its environments variables.