X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Finterface%2Fconfiguration.ml.in;h=d20a3c0c0e0cf872dcb42de6cd4ccdbacad15803;hb=89262281b6e83bd2321150f81f1a0583645eb0c8;hp=2177397eeec2623c3ade7f0db6e65631f9b3d05e;hpb=2540cc551ae097178c7e11ec578b58977a35bd3b;p=helm.git diff --git a/helm/interface/configuration.ml.in b/helm/interface/configuration.ml.in index 2177397ee..d20a3c0c0 100644 --- a/helm/interface/configuration.ml.in +++ b/helm/interface/configuration.ml.in @@ -9,14 +9,18 @@ (* *) (******************************************************************************) +exception MalformedDir of string + (* this should be the only hard coded constant *) let filename = let prefix = try Sys.getenv "HELM_CONFIGURATION_DIR" with - Not_found -> "@HELM_DEFAULT_CONFIGURATION_DIR@" + Not_found -> "@HELM_CONFIGURATION_DIR@" in + if prefix.[(String.length prefix) - 1] = '/' then + raise (MalformedDir prefix) ; prefix ^ "/configuration.xml";; exception Warnings;; @@ -72,14 +76,42 @@ let _ = ((xml_document ())#root#sub_nodes) ;; -let helm_dir = Hashtbl.find vars "helm_dir";; -let dtd_dir = Hashtbl.find vars "dtd_dir";; -let servers_file = Hashtbl.find vars "servers_file";; -let uris_dbm = Hashtbl.find vars "uris_dbm";; -let dest = Hashtbl.find vars "dest";; -let indexname = Hashtbl.find vars "indexname";; -let tmpdir = Hashtbl.find vars "tmpdir";; -let helm_dir = Hashtbl.find vars "helm_dir";; -let getter_url = Hashtbl.find vars "getter_url";; +(* try to read a configuration variable, given its name into the + * configuration.xml file and its name into the shell environment. + * The shell variable, if present, has precedence over configuration.xml + *) +let read_configuration_var_env xml_name env_name = + try + try + Sys.getenv env_name + with + Not_found -> Hashtbl.find vars xml_name + with + Not_found -> + Printf.printf "Sorry, cannot find variable `%s', please check your configuration\n" xml_name ; + flush stdout ; + raise Not_found + +let read_configuration_var xml_name = + try + Hashtbl.find vars xml_name + with + Not_found -> + Printf.printf "Sorry, cannot find variable `%s', please check your configuration\n" xml_name ; + flush stdout ; + raise Not_found + +let helm_dir = read_configuration_var "helm_dir";; +let dtd_dir = read_configuration_var "dtd_dir";; +let style_dir = read_configuration_var_env "style_dir" "HELM_STYLE_DIR";; +let servers_file = read_configuration_var "servers_file";; +let uris_dbm = read_configuration_var "uris_dbm";; +let dest = read_configuration_var "dest";; +let indexname = read_configuration_var "indexname";; +let tmp_dir = read_configuration_var "tmp_dir" +let helm_dir = read_configuration_var "helm_dir";; +let getter_url = read_configuration_var_env "getter_url" "HELM_GETTER_URL";; +let processor_url = read_configuration_var_env "processor_url" "HELM_PROCESSOR_URL";; let _ = Hashtbl.clear vars;; +