From 5cb633933f7d2467960d3b881292c2c2eda3b116 Mon Sep 17 00:00:00 2001 From: "Tomas V.V.Cox" Date: Fri, 31 May 2002 17:47:19 +0000 Subject: [PATCH] - Make mkTemp() automatically removed temporary created files or dirs at script shutdown time - Remove unnecesarry PEAR inheritance - Some PHPDoc fixes --- pear/System.php | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/pear/System.php b/pear/System.php index 98d9b8eae7..0f35eb1220 100644 --- a/pear/System.php +++ b/pear/System.php @@ -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. -- 2.40.0