summaryrefslogtreecommitdiffstats
path: root/bin
diff options
context:
space:
mode:
authorOliver Tappe2007-07-21 21:16:57 +0200
committerOliver Tappe2007-07-21 21:16:57 +0200
commitd5d920e992c24e5bce65e2a95f5c1d95dd41405e (patch)
treea757da40246e3be48b6fb85b28fa70fe72d6b066 /bin
parent* minor cleanup (two uninit values) (diff)
downloadcore-d5d920e992c24e5bce65e2a95f5c1d95dd41405e.tar.gz
core-d5d920e992c24e5bce65e2a95f5c1d95dd41405e.tar.xz
core-d5d920e992c24e5bce65e2a95f5c1d95dd41405e.zip
* first part of configuration file migration to Config::General
git-svn-id: http://svn.openslx.org/svn/openslx/trunk@1268 95ad53e4-c205-0410-b2fa-d234c58c8868
Diffstat (limited to 'bin')
-rwxr-xr-xbin/slxsettings17
1 files changed, 11 insertions, 6 deletions
diff --git a/bin/slxsettings b/bin/slxsettings
index adb26f69..be318bb5 100755
--- a/bin/slxsettings
+++ b/bin/slxsettings
@@ -36,6 +36,7 @@ use lib "$FindBin::RealBin/../lib";
use lib "$FindBin::RealBin";
# development path to config-db stuff
+use Config::General;
use Getopt::Long qw(:config pass_through);
use Pod::Usage;
@@ -87,7 +88,11 @@ while (scalar @ARGV) {
}
# fetch current content of local settings file...
-my $settings = slurpFile("$openslxConfig{'config-path'}/settings");
+my $fileName = "$openslxConfig{'config-path'}/settings";
+my $configObj = Config::General->new(
+ -ConfigFile => $fileName, -SplitPolicy => 'equalsign',
+);
+my %settings = $configObj->getall();
my %changed;
@@ -103,8 +108,8 @@ foreach my $key (keys %givenSettings) {
}
vlog(0, _tr("setting %s to '%s'", $key, $value)) unless $quiet;
my $externalKey = externalKeyFor($key);
- if (!($settings =~ s[^\s*$externalKey=.*?$][$externalKey=$value]ms)) {
- $settings .= "$externalKey=$value\n";
+ if (!exists $settings{$externalKey} || $settings{$externalKey} ne $value) {
+ $settings{$externalKey} = $value;
}
$changed{$key}++;
}
@@ -112,7 +117,8 @@ foreach my $key (keys %givenSettings) {
# reset specified keys to fall back to default:
foreach my $key (@reset) {
my $externalKey = externalKeyFor($key);
- if ($settings =~ s[^\s*?$externalKey=.*?\n][]ms) {
+ if (exists $settings{$externalKey}) {
+ delete $settings{$externalKey};
vlog(0,
_tr("removing option '%s' from local settings", $key))
unless $quiet;
@@ -126,8 +132,7 @@ foreach my $key (@reset) {
# ... and write local settings file if necessary
if (keys %changed) {
- my $fileName = "$openslxConfig{'config-path'}/settings";
- spitFile($fileName, $settings);
+ $configObj->save_file($fileName, \%settings);
openslxInit();