Many more fixes.. Trying to get all this work now..
[licom.git] / lib / LiCoM / Config.pm
index c631a4b..295f7eb 100644 (file)
@@ -2,16 +2,66 @@ package LiCoM::Config;
 
 use strict;
 use warnings;
+use Carp (qw(cluck confess));
 
 use Exporter;
 
-@LiCoM::Config::EXPORT_OK = ('get_config');
+@LiCoM::Config::EXPORT_OK = (qw(get_config set_config read_config));
 @LiCoM::Config::ISA = ('Exporter');
 
+our $Config = {};
+
 return (1);
 
+=head1 EXPORTED FUNCTIONS
+
+=over 4
+
+=item B<get_config> (I<$key>)
+
+Returns the value for I<$key> or undef if it's unknown.
+
+=cut
+
 sub get_config
 {
+       my $key = shift;
+
+       cluck ("\$key was not defined") unless (defined ($key));
+
+       if (!%$Config)
+       {
+               read_config ();
+       }
+
+       return ($Config->{$key});
+}
+
+=item B<set_config> (I<$key>, I<$value>)
+
+Sets the value of I<$key> to I<$value>.
+
+=cut
+
+sub set_config
+{
+       my $key = shift;
+       my $val = shift;
+
+       cluck ("\$key was not defined") unless (defined ($key));
+
+       $Config->{$key} = $val;
+}
+
+=item B<read_config> ([I<@files>])
+
+Read the config from the files given or F</etc/licom/licom.conf> and
+F<~/.licomrc> if no files were given.
+
+=cut
+
+sub read_config
+{
        my @files = ('/etc/licom/licom.conf');
 
        if (@_)
@@ -28,10 +78,10 @@ sub get_config
                my $file = $_;
                next unless (-r $file);
 
-               read_file ($file, $config);
+               read_file ($file, $Config);
        }
 
-       return ($config);
+       return ($Config);
 }
 
 sub read_file
@@ -59,3 +109,11 @@ sub read_file
 
        return ($config);
 }
+
+=back
+
+=head1 AUTHOR
+
+Florian octo Forster E<lt>octo at verplant.orgE<gt>
+
+=cut