aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/envars.ml
diff options
context:
space:
mode:
authorGravatar pboutill <pboutill@85f007b7-540e-0410-9357-904b9bb8a0f7>2012-05-23 14:41:24 +0000
committerGravatar pboutill <pboutill@85f007b7-540e-0410-9357-904b9bb8a0f7>2012-05-23 14:41:24 +0000
commit8837c2365c382adb0a74bfedabb1659eeb472adc (patch)
tree88761584df9487ab39fe2bc2627c029d67acc229 /lib/envars.ml
parent24473ef1954c856907ba8907a4d2c910505125a1 (diff)
Revert copy/pasted function in to minilib thanks to clib.cma
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@15352 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'lib/envars.ml')
-rw-r--r--lib/envars.ml52
1 files changed, 35 insertions, 17 deletions
diff --git a/lib/envars.ml b/lib/envars.ml
index c6bf8aee0..71525f055 100644
--- a/lib/envars.ml
+++ b/lib/envars.ml
@@ -20,6 +20,15 @@ let safe_getenv warning n = getenv_else n (fun () ->
(* On win32, the home directory is probably not in $HOME, but in
some other environment variable *)
+let (/) = Filename.concat
+
+let coqify d = d / "coq"
+
+let relative_base =
+ Filename.dirname (Filename.dirname Sys.executable_name)
+
+let opt2list = function None -> [] | Some x -> [x]
+
let home ~warn =
getenv_else "HOME" (fun () ->
try (Sys.getenv "HOMEDRIVE")^(Sys.getenv "HOMEPATH") with Not_found ->
@@ -96,25 +105,34 @@ let path_to_list p =
Util.split_string_at sep p
let xdg_data_home warning =
- Filename.concat
- (getenv_else "XDG_DATA_HOME" (fun () -> Filename.concat (home warning) ".local/share"))
- "coq"
-
-let xdg_config_home ~warn =
- Filename.concat
- (getenv_else "XDG_CONFIG_HOME" (fun () -> Filename.concat (home ~warn) ".config"))
- "coq"
-
-let xdg_data_dirs =
- (try
- List.map (fun dir -> Filename.concat dir "coq") (path_to_list (Sys.getenv "XDG_DATA_DIRS"))
- with Not_found -> ["/usr/local/share/coq";"/usr/share/coq"])
- @ (match Coq_config.datadir with |None -> [] |Some datadir -> [datadir])
+ coqify
+ (getenv_else "XDG_DATA_HOME" (fun () -> (home warning) / ".local/share"))
+
+let xdg_config_home warn =
+ coqify
+ (getenv_else "XDG_CONFIG_HOME" (fun () -> (home ~warn) / ".config"))
+
+let xdg_data_dirs warn =
+ let sys_dirs =
+ (try
+ List.map coqify (path_to_list (Sys.getenv "XDG_DATA_DIRS"))
+ with
+ | Not_found when Sys.os_type = "Win32" -> [relative_base / "share"]
+ | Not_found -> ["/usr/local/share/coq";"/usr/share/coq"])
+ in
+ xdg_data_home warn :: sys_dirs @ opt2list Coq_config.datadir
+
+let xdg_config_dirs warn =
+ let sys_dirs =
+ try List.map coqify (path_to_list (Sys.getenv "XDG_CONFIG_DIRS"))
+ with
+ | Not_found when Sys.os_type = "Win32" -> [relative_base / "config"]
+ | Not_found -> ["/etc/xdg/coq"]
+ in
+ xdg_config_home warn :: sys_dirs @ opt2list Coq_config.configdir
let xdg_dirs ~warn =
- let dirs = xdg_data_home warn :: xdg_data_dirs
- in
- List.rev (List.filter Sys.file_exists dirs)
+ List.filter Sys.file_exists (xdg_data_dirs warn)
let coqpath =
try