--- deliantra/Deliantra-Client/DC.pm 2006/07/24 04:24:42 1.106 +++ deliantra/Deliantra-Client/DC.pm 2006/07/24 08:23:27 1.107 @@ -28,6 +28,7 @@ use BerkeleyDB; use Pod::POM (); use Scalar::Util (); +use YAML (); use Storable (); # finally our %STAT_TOOLTIP = ( @@ -106,36 +107,38 @@ die "FATAL: can't find required file $_[0]\n"; } +sub parse_yaml { + my $text = shift; + + utf8::decode $text; + + YAML::Load $text +} + sub read_cfg { my ($file) = @_; - open CFG, $file + open my $fh, $file or return; - my $CFG; - local $/; - $CFG = eval ; - - $::CFG = $CFG; + my $CFG = <$fh>; - close CFG; + if ($CFG =~ /^---/) { + $::CFG = parse_yaml $CFG; + } else { + $::CFG = eval $CFG; + } } sub write_cfg { my ($file) = @_; - open CFG, ">$file" - or return; + $::CFG->{VERSION} = $::VERSION; - { - require Data::Dumper; - local $Data::Dumper::Purity = 1; - $::CFG->{VERSION} = $::VERSION; - print CFG Data::Dumper->Dump ([$::CFG], [qw/CFG/]); - } - - close CFG; + open my $fh, ">:utf8", $file + or return; + print $fh YAML::Dump $::CFG; } our $DB_ENV;