This is a wrapper around Sys.is_directory which doesn't throw
exceptions.
---
builder/cache.ml | 9 ++-------
mllib/common_utils.ml | 5 +++++
v2v/cmdline.ml | 4 +---
3 files changed, 8 insertions(+), 10 deletions(-)
diff --git a/builder/cache.ml b/builder/cache.ml
index 581b2cf..683cd35 100644
--- a/builder/cache.ml
+++ b/builder/cache.ml
@@ -34,13 +34,8 @@ type t = {
}
let create ~debug ~directory =
- (* Annoyingly Sys.is_directory throws an exception on failure
- * (RHBZ#1022431).
- *)
- let is_dir = try Sys.is_directory directory with Sys_error _ -> false in
- if is_dir = false then (
- mkdir directory 0o755
- );
+ if not (is_directory directory) then
+ mkdir directory 0o755;
{
debug = debug;
directory = directory;
diff --git a/mllib/common_utils.ml b/mllib/common_utils.ml
index 3b15868..3726eec 100644
--- a/mllib/common_utils.ml
+++ b/mllib/common_utils.ml
@@ -451,3 +451,8 @@ let is_block_device file =
let is_char_device file =
try (Unix.stat file).Unix.st_kind = Unix.S_CHR
with Unix.Unix_error _ -> false
+
+(* Annoyingly Sys.is_directory throws an exception on failure
+ * (RHBZ#1022431).
+ *)
+let is_directory path = try Sys.is_directory path with Sys_error _ -> false
diff --git a/v2v/cmdline.ml b/v2v/cmdline.ml
index 966fe42..52a4959 100644
--- a/v2v/cmdline.ml
+++ b/v2v/cmdline.ml
@@ -181,9 +181,7 @@ read the man page virt-v2v(1).
| `Local ->
if output_storage = "" then
error (f_"-o local: output directory was not specified, use '-os
/dir'");
- let dir_exists =
- try Sys.is_directory output_storage with Sys_error _ -> false in
- if not dir_exists then
+ if not (is_directory output_storage) then
error (f_"-os %s: output directory does not exist or is not a
directory")
output_storage;
OutputLocal output_storage
--
1.9.0