0); if ($r === false) { throw IOException::last_error("$dir: unable to create directory"); } return $dir; } /** * Supprimer un répertoire créé avec mktempdir * * un minimum de vérification est effectué qu'il s'agit bien d'un répertoire * généré par mktempdir */ static final function rmtempdir(string $tmpdir, ?string $prefix=null, ?string $basedir=null): void { if ($basedir === null) $basedir = sys_get_temp_dir(); if ($prefix !== null) $prefix .= "-"; // 13 '?' parce que c'est la taille d'une chaine générée par uniqid() if (fnmatch("$basedir/$prefix?????????????", $tmpdir)) { shell::exec(["rm", "-rf", $tmpdir]); } else { throw new IOException("$tmpdir: n'est pas un répertoire temporaire"); } } /** * supprimer tous les répertoires temporaires qui ont été créés avec le * suffixe spécifié dans le répertoire $basedir */ static final function cleantempdirs(string $prefix, ?string $basedir=null): void { if ($basedir === null) $basedir = sys_get_temp_dir(); $prefix .= "-"; // 13 '?' parce que c'est la taille d'une chaine générée par uniqid() $tmpdirs = glob("$basedir/$prefix?????????????", GLOB_ONLYDIR); if ($tmpdirs) { shell::exec(array_merge(["rm", "-rf"], $tmpdirs)); } } /** s'assurer que le répertoire $dir existe */ static final function mkdirs(string $dir): bool { if (is_dir($dir)) return true; return mkdir($dir, 0777, true); } /** créer le répertoire qui va contenir le fichier $file */ static final function mkdirof(string $file): bool { if (file_exists($file)) return true; $dir = path::dirname($file); if (file_exists($dir)) return true; return mkdir($dir, 0777, true); } /** retourner le répertoire $HOME */ static final function homedir(): string { $homedir = getenv("HOME"); if ($homedir === false) { $homedir = posix_getpwuid(posix_getuid())["dir"]; } return path::abspath($homedir); } }