/**
* Generates closure tempnam handler
* @param $dir
* @param $prefix
* @param $cb
* @param $tries
*/
protected static function tempnamHandler($dir, $prefix, $cb, &$tries)
{
$cb = CallbackWrapper::forceWrap($cb);
if (++$tries >= 3) {
call_user_func($cb, false);
return;
}
$path = FileSystem::genRndTempnam($dir, $prefix);
FileSystem::open($path, 'x+!', function ($file) use($dir, $prefix, $cb, &$tries) {
if (!$file) {
static::tempnamHandler($dir, $prefix, $cb, $tries);
return;
}
call_user_func($cb, $file);
});
}