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