]> matita.cs.unibo.it Git - helm.git/blob - helm/configuration/lib/configuration.pl.in
ocaml 3.09 transition
[helm.git] / helm / configuration / lib / configuration.pl.in
1 # Copyright (C) 2000, HELM Team.
2
3 # This file is part of HELM, an Hypertextual, Electronic
4 # Library of Mathematics, developed at the Computer Science
5 # Department, University of Bologna, Italy.
6
7 # HELM is free software; you can redistribute it and/or
8 # modify it under the terms of the GNU General Public License
9 # as published by the Free Software Foundation; either version 2
10 # of the License, or (at your option) any later version.
11
12 # HELM is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 # GNU General Public License for more details.
16
17 # You should have received a copy of the GNU General Public License
18 # along with HELM; if not, write to the Free Software
19 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
20
21 # For details, see the HELM World-Wide-Web page,
22 # http://cs.unibo.it/helm/.
23
24 use XML::Parser;
25
26 use Env;
27 my $HELM_CONFIGURATION_DIR = $ENV{"HELM_CONFIGURATION_DIR"};
28 my $DEFAULT_HELM_CONFIGURATION_DIR = "@HELM_ETC_DIR@";
29 # this should be the only fixed constant
30 if (defined ($HELM_CONFIGURATION_DIR)) {
31    $configuration_file = $HELM_CONFIGURATION_DIR."/configuration.xml";
32 } else {
33    $configuration_file = $DEFAULT_HELM_CONFIGURATION_DIR."/configuration.xml";
34 }
35
36 $parser = new XML::Parser(Handlers => {Start => \&handle_start,
37                                        End   => \&handle_end,
38                                        Char  => \&handle_char});
39
40
41 $parser->parsefile($configuration_file, ErrorContext => 3);
42
43
44 sub handle_start
45 {
46    if ($_[1] eq "value-of") {
47       $$varname .= ${$_[3]};
48    } elsif ($_[1] ne "configuration") {
49       $varname = $_[1];
50    }
51 }
52
53 sub handle_end
54 {
55    if ($_[1] ne "value-of" && $_[1] ne "configuration") {
56       # Next line for debugging only:
57       # print "OK: #$_[1]# := #$$varname#\n";
58       $varname = undef;
59    }
60 }
61
62 sub handle_char
63 {
64    $$varname .= $_[1];
65 }