From d60c2d5fdfb9bde091cd788893dd5c7e442a58e0 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sat, 10 Apr 2010 22:02:24 +0200 Subject: [PATCH] Add rcfile (.yapfaqrc) for configuration. All configuration data is read from .yapfaqrc with defaults set in yapfaq.pl Signed-off-by: Thomas Hochstein --- yapfaq.pl | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/yapfaq.pl b/yapfaq.pl index 0d331b0..23f7e5a 100644 --- a/yapfaq.pl +++ b/yapfaq.pl @@ -14,6 +14,12 @@ my $Version = "0.6.2"; +my $RCFile = '.yapfaqrc'; +my @ValidConfVars = ('NNTPServer','NNTPUser','NNTPPass','Sender','ConfigFile', + 'UsePGP','pgp','PGPVersion','PGPSigner','PGPPass', + 'PathtoPGPPass','pgpbegin','pgpend','pgptmpf','pgpheader'); + +################################### Defaults ################################## my %Config = (NNTPServer => "localhost", NNTPUser => "", NNTPPass => "", @@ -71,6 +77,9 @@ if ($Options{'h'}) { # -f: set $Faq my ($Faq) = $Options{'f'} if ($Options{'f'}); +# read runtime configuration (configuration variables) +readrc (\$RCFile,\%Config) if -f $RCFile; + # read configuration (configured FAQs) my @Config; readconfig (\$Config{'ConfigFile'}, \@Config, \$Faq); @@ -124,6 +133,26 @@ foreach (@Config) { exit; +#################################### readrc #################################### +# Takes a filename and the reference to an array which contains the valid options + +sub readrc{ + my ($File, $Config) = @_; + + print "Reading $$File.\n" if($Options{'v'}); + + open FH, "<$$File" or die "$0: Can't open $$File: $!"; + while () { + if (/^\s*(\S+)\s*=\s*'?(.*?)'?\s*(#.*$|$)/) { + if (grep(/$1/,@ValidConfVars)) { + $$Config{$1} = $2 if $2 ne ''; + } else { + warn "$0: W: $1 is not a valid configuration variable (reading from $$File)\n"; + } + } + } +} + ################################## readconfig ################################## # Takes a filename, a reference to an array, which will hold hashes with # the data from $File, and - optionally - the name of the (single) FAQ to post