require_once 'PEAR.php';
require_once 'Console/Getopt.php';
+$GLOBALS['_System_temp_files'] = array();
+
/**
* System offers cross plattform compatible system functions
*
* @access public
* @see http://pear.php.net/manual/
*/
-class System extends PEAR
+class System
{
/**
* returns the commandline arguments of a function
}
/**
- * 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");
*
* 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.
*/
function mktemp($args = null)
{
+ static $first_time = true;
$opts = System::_parseArgs($args, 't:d');
if (PEAR::isError($opts)) {
return System::raiseError($opts);
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.