Add rcfile (.yapfaqrc) for configuration.
authorThomas Hochstein <thh@inter.net>
Sat, 10 Apr 2010 20:02:24 +0000 (22:02 +0200)
committerThomas Hochstein <thh@inter.net>
Sat, 10 Apr 2010 20:06:49 +0000 (22:06 +0200)
All configuration data is read from .yapfaqrc
with defaults set in yapfaq.pl

Signed-off-by: Thomas Hochstein <thh@inter.net>
yapfaq.pl

index 0d331b0..23f7e5a 100644 (file)
--- a/yapfaq.pl
+++ b/yapfaq.pl
 
 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 (<FH>) {
+    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
This page took 0.011083 seconds and 4 git commands to generate.