summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDamien Doligez <damien.doligez-inria.fr>2005-01-18 14:33:08 +0000
committerDamien Doligez <damien.doligez-inria.fr>2005-01-18 14:33:08 +0000
commit99885a80a0e266aa862637780d93a7b64c726d76 (patch)
tree6ee219bca451e821f05e2d5f2eb8dd1ef1c8e23b
parentca6ab5f7d0662575674d12efc7cce57665c2e2b8 (diff)
meilleur report d'erreur pour temp_file et open_temp_file
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@6748 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
-rw-r--r--stdlib/filename.ml12
1 files changed, 4 insertions, 8 deletions
diff --git a/stdlib/filename.ml b/stdlib/filename.ml
index 7d6887eaf..62d6da568 100644
--- a/stdlib/filename.ml
+++ b/stdlib/filename.ml
@@ -166,24 +166,20 @@ let temp_file_name prefix suffix =
let temp_file prefix suffix =
let rec try_name counter =
- if counter >= 1000 then
- invalid_arg "Filename.temp_file: temp dir nonexistent or full";
let name = temp_file_name prefix suffix in
try
close_desc(open_desc name [Open_wronly; Open_creat; Open_excl] 0o600);
name
- with Sys_error _ ->
- try_name (counter + 1)
+ with Sys_error _ as e ->
+ if counter >= 1000 then raise e else try_name (counter + 1)
in try_name 0
let open_temp_file ?(mode = [Open_text]) prefix suffix =
let rec try_name counter =
- if counter >= 1000 then
- invalid_arg "Filename.open_temp_file: temp dir nonexistent or full";
let name = temp_file_name prefix suffix in
try
(name,
open_out_gen (Open_wronly::Open_creat::Open_excl::mode) 0o600 name)
- with Sys_error _ ->
- try_name (counter + 1)
+ with Sys_error _ as e ->
+ if counter >= 1000 then raise e else try_name (counter + 1)
in try_name 0