# Copyright (C) 2000, HELM Team. # # This file is part of HELM, an Hypertextual, Electronic # Library of Mathematics, developed at the Computer Science # Department, University of Bologna, Italy. # # HELM is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # HELM is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with HELM; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # For details, see the HELM World-Wide-Web page, # http://cs.unibo.it/helm/. use XML::Parser; use Env; my $HELM_CONFIGURATION_DIR = $ENV{"HELM_CONFIGURATION_DIR"}; my $DEFAULT_HELM_CONFIGURATION_DIR = "@HELM_ETC_DIR@"; # this should be the only fixed constant if (defined ($HELM_CONFIGURATION_DIR)) { $configuration_file = $HELM_CONFIGURATION_DIR."/configuration.xml"; } else { $configuration_file = $DEFAULT_HELM_CONFIGURATION_DIR."/configuration.xml"; } $parser = new XML::Parser(Handlers => {Start => \&handle_start, End => \&handle_end, Char => \&handle_char}); $parser->parsefile($configuration_file, ErrorContext => 3); sub handle_start { if ($_[1] eq "value-of") { $$varname .= ${$_[3]}; } elsif ($_[1] ne "configuration") { $varname = $_[1]; } } sub handle_end { if ($_[1] ne "value-of" && $_[1] ne "configuration") { # Next line for debugging only: # print "OK: #$_[1]# := #$$varname#\n"; $varname = undef; } } sub handle_char { $$varname .= $_[1]; }