diff --git a/src/indexOptions.ml b/src/indexOptions.ml index 0669790..b03be72 100644 --- a/src/indexOptions.ml +++ b/src/indexOptions.ml @@ -46,9 +46,11 @@ let filter opt info = | ModuleType | ClassType -> kinds.s | Keyword -> kinds.k +let null_file = if Sys.win32 then "NUL" else "/dev/null" + let cmd_input_line cmd = try - let ic = Unix.open_process_in (cmd ^ " 2>/dev/null") in + let ic = Unix.open_process_in (Printf.sprintf "%s 2>%s" cmd null_file) in let r = input_line ic in let r = let len = String.length r in @@ -72,6 +74,15 @@ let filter_to_string l = in String.concat "," (List.map pp l) +let initial_cwd = Sys.getcwd () + +let path_sep = if Sys.win32 then ';' else ':' + +let parse_path_var s = + let l = String.split_on_char path_sep s in + let l = List.filter (fun s -> s <> "") l in + List.map (fun path -> if Filename.is_relative path then Filename.concat initial_cwd path else path) l + let common_opts ?(default_filter = default_filter) () : t Term.t = let ocamllib : string list Term.t = let no_stdlib : bool Term.t = @@ -90,6 +101,11 @@ let common_opts ?(default_filter = default_filter) () : t Term.t = in let set_default no_stdlib no_opamlib includes = let paths = List.flatten includes in + let paths = + match Sys.getenv "OCAMLPATH" with + | exception Not_found -> paths + | s -> parse_path_var s @ paths + in let paths = if no_opamlib then paths else try cmd_input_line "opam config var lib" :: paths