X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Finterface%2Fconfiguration.ml.in;h=d20a3c0c0e0cf872dcb42de6cd4ccdbacad15803;hb=b1fb6b8e1767d775bc452303629e95941d142bea;hp=add4c3a882d35b4a6b5e6beebc8c9b47ca050d5d;hpb=93b0c2d038540dd1f3088609ecb0aea6d09a392c;p=helm.git diff --git a/helm/interface/configuration.ml.in b/helm/interface/configuration.ml.in index add4c3a88..d20a3c0c0 100644 --- a/helm/interface/configuration.ml.in +++ b/helm/interface/configuration.ml.in @@ -9,15 +9,19 @@ (* *) (******************************************************************************) +exception MalformedDir of string + (* this should be the only hard coded constant *) let filename = let prefix = try - Sys.getenv "HELM_CONFIGURATION_PREFIX" + Sys.getenv "HELM_CONFIGURATION_DIR" with - Not_found -> "" + Not_found -> "@HELM_CONFIGURATION_DIR@" in - prefix ^ "/local/etc/helm/configuration.xml";; + 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;; +