summaryrefslogtreecommitdiff
path: root/vendors/labltk/browser/useunix.ml
diff options
context:
space:
mode:
authorFabrice Le Fessant <Fabrice.Le_fessant@inria.fr>2012-11-27 19:33:38 +0000
committerFabrice Le Fessant <Fabrice.Le_fessant@inria.fr>2012-11-27 19:33:38 +0000
commit26fb459100237f249fe094a5c6f0192054e977c9 (patch)
tree85b50375142fff22d2fc6a28af57502c090b9eed /vendors/labltk/browser/useunix.ml
parentf80d01e968bf899aaa36882840eddc11ce428f94 (diff)
downloadocaml-stripped-ocaml.tar.gz
stripped-ocaml: moved labltk, ocamlbuild, camlp4 to vendors/ subdirstripped-ocaml
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/stripped-ocaml@13105 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'vendors/labltk/browser/useunix.ml')
-rw-r--r--vendors/labltk/browser/useunix.ml69
1 files changed, 69 insertions, 0 deletions
diff --git a/vendors/labltk/browser/useunix.ml b/vendors/labltk/browser/useunix.ml
new file mode 100644
index 0000000000..86554d4884
--- /dev/null
+++ b/vendors/labltk/browser/useunix.ml
@@ -0,0 +1,69 @@
+(*************************************************************************)
+(* *)
+(* OCaml LablTk library *)
+(* *)
+(* Jacques Garrigue, Kyoto University RIMS *)
+(* *)
+(* Copyright 1999 Institut National de Recherche en Informatique et *)
+(* en Automatique and Kyoto University. All rights reserved. *)
+(* This file is distributed under the terms of the GNU Library *)
+(* General Public License, with the special exception on linking *)
+(* described in file ../../../LICENSE. *)
+(* *)
+(*************************************************************************)
+
+(* $Id$ *)
+
+open StdLabels
+open UnixLabels
+
+let get_files_in_directory dir =
+ let len = String.length dir in
+ let dir =
+ if len > 0 && Sys.os_type = "Win32" &&
+ (dir.[len-1] = '/' || dir.[len-1] = '\\')
+ then String.sub dir ~pos:0 ~len:(len-1)
+ else dir
+ in match
+ try Some(opendir dir) with Unix_error _ -> None
+ with
+ None -> []
+ | Some dirh ->
+ let rec get_them l =
+ match
+ try Some(readdir dirh) with _ -> None
+ with
+ | Some x ->
+ get_them (x::l)
+ | None ->
+ closedir dirh; l
+ in
+ List.sort ~cmp:compare (get_them [])
+
+let is_directory name =
+ try
+ (stat name).st_kind = S_DIR
+ with _ -> false
+
+let concat dir name =
+ let len = String.length dir in
+ if len = 0 then name else
+ if dir.[len-1] = '/' then dir ^ name
+ else dir ^ "/" ^ name
+
+let get_directories_in_files ~path =
+ List.filter ~f:(fun x -> is_directory (concat path x))
+
+(************************************************** Subshell call *)
+let subshell ~cmd =
+ let rc = open_process_in cmd in
+ let rec it l =
+ match
+ try Some(input_line rc) with _ -> None
+ with
+ Some x -> it (x::l)
+ | None -> List.rev l
+ in
+ let answer = it [] in
+ ignore (close_process_in rc);
+ answer