From: Thomas Hochstein Date: Sat, 10 Apr 2010 20:02:24 +0000 (+0200) Subject: Add rcfile (.yapfaqrc) for configuration. X-Git-Tag: v0.7~7 X-Git-Url: https://code.th-h.de/?p=usenet%2Fyapfaq.git;a=commitdiff_plain;h=d60c2d5fdfb9bde091cd788893dd5c7e442a58e0 Add rcfile (.yapfaqrc) for configuration. All configuration data is read from .yapfaqrc with defaults set in yapfaq.pl Signed-off-by: Thomas Hochstein --- 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