diff options
author | Dexter Morgan <dmorgan@mageia.org> | 2011-06-02 20:51:50 +0000 |
---|---|---|
committer | Dexter Morgan <dmorgan@mageia.org> | 2011-06-02 20:51:50 +0000 |
commit | f1d6b8a9d3c06f74e904959887cf043d09aff687 (patch) | |
tree | 969cb9fdc3becc19b1f2a21c3a9e3cc2e15f39e6 /common/Varspaceval.pm | |
download | drakwizard-f1d6b8a9d3c06f74e904959887cf043d09aff687.tar drakwizard-f1d6b8a9d3c06f74e904959887cf043d09aff687.tar.gz drakwizard-f1d6b8a9d3c06f74e904959887cf043d09aff687.tar.bz2 drakwizard-f1d6b8a9d3c06f74e904959887cf043d09aff687.tar.xz drakwizard-f1d6b8a9d3c06f74e904959887cf043d09aff687.zip |
Branch for updates
Diffstat (limited to 'common/Varspaceval.pm')
-rw-r--r-- | common/Varspaceval.pm | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/common/Varspaceval.pm b/common/Varspaceval.pm new file mode 100644 index 00000000..9e996368 --- /dev/null +++ b/common/Varspaceval.pm @@ -0,0 +1,87 @@ +#!/usr/bin/perl -w + +# Copyright (C) 2002,2003 Mandrakesoft +# +# Author: Philippe Hetroy, phetroy@mandrakesoft.com +# +# $Id: Varspaceval.pm,v 1.5 2004-01-22 20:24:48 tvignaud Exp $ +# Module for loding and committing informations in a VAR = value file type + +package MDK::Wizard::Varspaceval; +use lib('./'); +use strict; +use Data::Dumper; + +# Get all useful content of the config file +# Return a hash containg the key and the value +# ATTENTION : in the conf file, an empty value is returnes as a spaced value (mandatory because of XML compatibility) +sub get { + my ($_self, $file) = @_; + my %l; + local *F; open F, $file or return; + local $_; + + while (<F>) { + + my ($v, $val, $val2) = + /^\s* # leading space + (\w+)\s* # variable + ( + "(.*)" # double-quoted text + | '(.*)' # single-quoted text + | [^'"\s]* # normal text + ) + \s*$ # end of line + /x; + no warnings; + $l{$v} = defined $val2 ? $val2 : $val; + } + + %l; +} + +# Commits changes in conf files and ifconfig +sub commit { + my ($_self, $file, $hash) = @_; + local *F; + + my $output = ""; + if (open(F, $file)) { + local $_; + + while (<F>) { + my ($pre, $key, $eq, $val, $rest) = /(^\s*)(\w+)(\s*"*'*)([^'"\s]*)(.*)/x; + + if (!defined $key) { + $output .= $_; + next; + }; + next if !exists $hash->{$key}; #Elt has been removed + no warnings; + $val = $hash->{$key}; + delete $hash->{$key}; + $output .= defined $val ? $pre . $key . $eq . $val . $rest . "\n" : $pre . $key . $eq . $val . $rest; +# $output .= $pre . $key . $eq . $val . $rest . "\n"; + } + #appending added parameters + foreach (keys %$hash) { + $output .= $_ . " " . $hash->{$_} . "\n"; + } + + } else { #the file does not exist + print STDERR "File $file will be created\n"; + foreach (keys %$hash) { + $output .= defined $hash->{$_} ? $_ . "=" . $hash->{$_} . "\n" : $_ . "=\n"; + } + } + +#print $output; +#print "\n------------------\n"; + + # outputing the new conf + open(F, "> $file") or return; + print F $output; + close(F); +} + +1; |