let create_temp_dir () =
let tmp_root = Filename.temp_dir_name in
let rec inner tries_left =
if tries_left <= 0
then failwith "Filew.create_temp_dir: can't create temporary directory"
else
(let dir =
Printf.sprintf "filew%06i" (Random.State.int prng 1000000) in
let path = Filename.concat tmp_root dir
in if try_create_dir path 0o700 then path else inner (tries_left - 1))
in inner temp_create_tries