+ (* Create a temporary directory which is always cleaned up at exit. *)
+ let tmpdir =
+ let temp_dir = try Unix.getenv "TMPDIR" with Not_found -> "/var/tmp" in
+ let t = Filename.temp_file ~temp_dir "goals" ".d" in
+ Unix.unlink t;
+ Unix.mkdir t 0o700;
+ at_exit (
+ fun () ->
+ let cmd = sprintf "rm -rf %s" (Filename.quote t) in
+ ignore (Sys.command cmd)
+ );
+ t in
+