<?php function uojRand($l, $r) { return mt_rand($l, $r); } function uojRandString($len, $charset = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ') { $n_chars = strlen($charset); $str = ''; for ($i = 0; $i < $len; $i++) { $str .= $charset[uojRand(0, $n_chars - 1)]; } return $str; } function uojRandAvaiableFileName($dir) { do { $fileName = $dir . uojRandString(20); } while (file_exists(UOJContext::storagePath().$fileName)); return $fileName; } function uojRandAvaiableTmpFileName() { return uojRandAvaiableFileName('/tmp/'); } function uojRandAvaiableSubmissionFileName() { $num = uojRand(1, 10000); if (!file_exists(UOJContext::storagePath()."/submission/$num")) { mkdir(UOJContext::storagePath()."/submission/$num", 0777, true); } return uojRandAvaiableFileName("/submission/$num/"); }