X-Git-Url: https://code.th-h.de/?p=usenet%2Fyapfaq.git;a=blobdiff_plain;f=yapfaq.pl;h=36816ab82df9e3f810061323ab978d20f03d97a6;hp=0a541c82d6cf8850029047f975e3d6d343e2df2f;hb=366322b2c86c87e310a1193a3ce4d3590db31b1d;hpb=a0605478dd5e62d6288e82ce45de56b154bf1daf diff --git a/yapfaq.pl b/yapfaq.pl index 0a541c8..36816ab 100644 --- a/yapfaq.pl +++ b/yapfaq.pl @@ -12,7 +12,7 @@ # It can be redistributed and/or modified under the same terms under # which Perl itself is published. -my $Version = "0.6-unreleased"; +my $Version = "0.6.2"; my $NNTPServer = "localhost"; my $NNTPUser = ""; @@ -118,9 +118,7 @@ sub readconfig{ my ($File, $Config, $Faq) = @_; my ($LastEntry, $Error, $i) = ('','',0); - if($Options{'v'}) { - print "Reading configuration.\n"; - } + print "Reading configuration.\n" if($Options{'v'}); open FH, "<$$File" or die "$0: E: Can't open $$File: $!"; while () { @@ -151,8 +149,7 @@ sub readconfig{ unless($$Config[$i]{'posting-frequency'} =~ /^\s*\d+\s*[dwmy]\s*$/) { $Error .= "E: The Posting-frequency for your project \"$$Config[$i]{'name'}\" is invalid.\n" } - unless($$Config[$i]{'expires'} =~ /^\s*\d+\s*[dwmy]\s*$/) { - $$Config[$i]{'expires'} = '3m'; # set default: 3 month + unless(!$$Config[$i]{'expires'} || $$Config[$i]{'expires'} =~ /^\s*\d+\s*[dwmy]\s*$/) { warn "$0: W: The Expires for your project \"$$Config[$i]{'name'}\" is invalid - set to 3 month.\n"; } $Error .= "-" x 25 . "\n" if $Error; @@ -185,9 +182,7 @@ sub postfaq { my ($ActName,$File,$From,$Subject,$NG,$Fup2,$MIDF,$ExtraHeaders,$Sender,$TDY,$TDM,$TDD,$ReplyTo,$Supersedes,$Expire) = @_; my (@Header,@Body,$MID,$InRealBody,$LastModified); - if($Options{'v'}) { - print "$$ActName: Preparing to post.\n"; - } + print "$$ActName: Preparing to post.\n" if($Options{'v'}); #Prepare MID: $$TDM = ($$TDM < 10 && $$TDM !~ /^0/) ? "0" . $$TDM : $$TDM; @@ -223,7 +218,9 @@ sub postfaq { my $wday = ("Sun","Mon","Tue","Wed","Thu","Fri","Sat")[$time[6]]; my $year = (1900 + $time[5]); my $tz = $time[8] ? " +0200" : " +0100"; - + + $$Expire = '3m' if !$$Expire; # set default if unset: 3 month + my ($expY,$expM,$expD) = calcdelta ($year,$month,$day,$$Expire); my $expmonthN = ("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")[$expM-1]; @@ -261,14 +258,13 @@ sub postfaq { my @Article = ($UsePGP)?@{signpgp(\@Header, \@Body)}:(@Header, "\n", @Body); - if($Options{'v'}) { - print "$$ActName: Posting article ...\n"; - } + print "$$ActName: Posting article ...\n" if($Options{'v'}); post(\@Article); - if($Options{'v'}) { - print "$$ActName: Save status information.\n"; - } + # Test mode? + return if($Options{'t'}); + + print "$$ActName: Save status information.\n" if($Options{'v'}); open (FH, ">$$File.cfg") or die "$0: E: Can't open $$File.cfg: $!"; print FH "##;; Lastpost: $day.$month.$year\n"; @@ -476,3 +472,329 @@ sub signpgp { my @pgpmessage = (@pgphead, "\n", @pgpbody); return \@pgpmessage; } + +__END__ + +################################ Documentation ################################# + +=head1 NAME + +yapfaq - Post Usenet FAQs I<(yet another postfaq)> + +=head1 SYNOPSIS + +B [B<-hvpd>] [B<-t> I | CONSOLE] [B<-f> I] + +=head1 REQUIREMENTS + +=over 2 + +=item - + +Perl 5.8 or later + +=item - + +Net::NNTP + +=item - + +Date::Calc + +=item - + +Getopt::Std + +=back + +Furthermore you need access to a news server to actually post FAQs. + +=head1 DESCRIPTION + +B posts (one or more) FAQs to Usenet with a certain posting +frequency (every n days, weeks, months or years), adding all necessary +headers as defined in its config file (by default F). + +=head2 Configuration + +F consists of one or more blocks, separated by C<=====> on +a single line, each containing the configuration for one FAQ as a set +of definitions in the form of I. + +=over 4 + +=item B = I + +A name referring to your FAQ, also used for generation of a Message-ID. + +This value must be set. + +=item B = I + +A file containing the message body of your FAQ and all pseudo headers +(subheaders in the news.answers style). + +This value must be set. + +=item B = I