Add some more comments.
Signed-off-by: Thomas Hochstein <thh@inter.net>
This commit is contained in:
parent
a052296f3b
commit
b955062245
17
yapfaq.pl
17
yapfaq.pl
|
@ -58,22 +58,31 @@ use Fcntl ':flock'; # import LOCK_* constants
|
||||||
use Getopt::Std;
|
use Getopt::Std;
|
||||||
my ($TDY, $TDM, $TDD) = Today(); #TD: Today's date
|
my ($TDY, $TDM, $TDD) = Today(); #TD: Today's date
|
||||||
|
|
||||||
|
# read commandline options
|
||||||
my %Options;
|
my %Options;
|
||||||
getopts('Vhvpdt:f:', \%Options);
|
getopts('Vhvpdt:f:', \%Options);
|
||||||
|
# -V: print version / copyright information
|
||||||
if ($Options{'V'}) {
|
if ($Options{'V'}) {
|
||||||
print "$0 v $Version\nCopyright (c) 2003 Marc Brockschmidt <marc\@marcbrockschmidt.de>\nCopyright (c) 2010 Thomas Hochstein <thh\@inter.net>\n";
|
print "$0 v $Version\nCopyright (c) 2003 Marc Brockschmidt <marc\@marcbrockschmidt.de>\nCopyright (c) 2010 Thomas Hochstein <thh\@inter.net>\n";
|
||||||
print "This program is free software; you may redistribute it and/or modify it under the same terms as Perl itself.\n";
|
print "This program is free software; you may redistribute it and/or modify it under the same terms as Perl itself.\n";
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
# -h: feed myself to perldoc
|
||||||
if ($Options{'h'}) {
|
if ($Options{'h'}) {
|
||||||
exec ('perldoc', $0);
|
exec ('perldoc', $0);
|
||||||
exit(0);
|
exit(0);
|
||||||
};
|
};
|
||||||
|
# -f: set $Faq
|
||||||
my ($Faq) = $Options{'f'} if ($Options{'f'});
|
my ($Faq) = $Options{'f'} if ($Options{'f'});
|
||||||
|
|
||||||
|
# read configuration (configured FAQs)
|
||||||
my @Config;
|
my @Config;
|
||||||
readconfig (\$ConfigFile, \@Config, \$Faq);
|
readconfig (\$ConfigFile, \@Config, \$Faq);
|
||||||
|
|
||||||
|
# for each FAQ:
|
||||||
|
# - parse configuration
|
||||||
|
# - read status data
|
||||||
|
# - if FAQ is due: call postfaq()
|
||||||
foreach (@Config) {
|
foreach (@Config) {
|
||||||
my ($LPD,$LPM,$LPY) = (01, 01, 0001); #LP: Last posting-date
|
my ($LPD,$LPM,$LPY) = (01, 01, 0001); #LP: Last posting-date
|
||||||
my ($NPY,$NPM,$NPD); #NP: Next posting-date
|
my ($NPY,$NPM,$NPD); #NP: Next posting-date
|
||||||
|
@ -84,8 +93,10 @@ foreach (@Config) {
|
||||||
my ($MIDF,$ReplyTo,$ExtHea)=($$_{'mid-format'},$$_{'reply-to'},$$_{'extraheader'});
|
my ($MIDF,$ReplyTo,$ExtHea)=($$_{'mid-format'},$$_{'reply-to'},$$_{'extraheader'});
|
||||||
my ($Supersede) =($$_{'supersede'});
|
my ($Supersede) =($$_{'supersede'});
|
||||||
|
|
||||||
|
# -f: loop if not FAQ to post
|
||||||
next if (defined($Faq) && $ActName ne $Faq);
|
next if (defined($Faq) && $ActName ne $Faq);
|
||||||
|
|
||||||
|
# read status data
|
||||||
if (open (FH, "<$File.cfg")) {
|
if (open (FH, "<$File.cfg")) {
|
||||||
while(<FH>){
|
while(<FH>){
|
||||||
if (/##;; Lastpost:\s*(\d{1,2})\.(\d{1,2})\.(\d{2}(\d{2})?)/){
|
if (/##;; Lastpost:\s*(\d{1,2})\.(\d{1,2})\.(\d{2}(\d{2})?)/){
|
||||||
|
@ -103,6 +114,7 @@ foreach (@Config) {
|
||||||
|
|
||||||
($NPY,$NPM,$NPD) = calcdelta ($LPY,$LPM,$LPD,$PFreq);
|
($NPY,$NPM,$NPD) = calcdelta ($LPY,$LPM,$LPD,$PFreq);
|
||||||
|
|
||||||
|
# if FAQ is due: get it out
|
||||||
if (Delta_Days($NPY,$NPM,$NPD,$TDY,$TDM,$TDD) >= 0 or ($Options{'p'})) {
|
if (Delta_Days($NPY,$NPM,$NPD,$TDY,$TDM,$TDD) >= 0 or ($Options{'p'})) {
|
||||||
if($Options{'d'}) {
|
if($Options{'d'}) {
|
||||||
print "$ActName: Would be posted now (but running in simulation mode [$0 -d]).\n" if $Options{'v'};
|
print "$ActName: Would be posted now (but running in simulation mode [$0 -d]).\n" if $Options{'v'};
|
||||||
|
@ -213,7 +225,6 @@ sub postfaq {
|
||||||
$MID =~ s/\%m/$$TDM/g;
|
$MID =~ s/\%m/$$TDM/g;
|
||||||
$MID =~ s/\%y/$$TDY/g;
|
$MID =~ s/\%y/$$TDY/g;
|
||||||
|
|
||||||
|
|
||||||
#Now get the body:
|
#Now get the body:
|
||||||
open (FH, "<$$File");
|
open (FH, "<$$File");
|
||||||
while (<FH>){
|
while (<FH>){
|
||||||
|
@ -275,14 +286,17 @@ sub postfaq {
|
||||||
push @Header, "$_\n" for (split /\n/, $$ExtraHeaders);
|
push @Header, "$_\n" for (split /\n/, $$ExtraHeaders);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# sign article if $UsePGP is true
|
||||||
my @Article = ($UsePGP)?@{signpgp(\@Header, \@Body)}:(@Header, "\n", @Body);
|
my @Article = ($UsePGP)?@{signpgp(\@Header, \@Body)}:(@Header, "\n", @Body);
|
||||||
|
|
||||||
|
# post article
|
||||||
print "$$ActName: Posting article ...\n" if($Options{'v'});
|
print "$$ActName: Posting article ...\n" if($Options{'v'});
|
||||||
post(\@Article);
|
post(\@Article);
|
||||||
|
|
||||||
# Test mode?
|
# Test mode?
|
||||||
return if($Options{'t'});
|
return if($Options{'t'});
|
||||||
|
|
||||||
|
# otherwise: update status data
|
||||||
print "$$ActName: Save status information.\n" if($Options{'v'});
|
print "$$ActName: Save status information.\n" if($Options{'v'});
|
||||||
|
|
||||||
open (FH, ">$$File.cfg") or die "$0: E: Can't open $$File.cfg: $!";
|
open (FH, ">$$File.cfg") or die "$0: E: Can't open $$File.cfg: $!";
|
||||||
|
@ -315,6 +329,7 @@ sub post {
|
||||||
$NewsConnection->datasend (@$ArticleR);
|
$NewsConnection->datasend (@$ArticleR);
|
||||||
$NewsConnection->dataend();
|
$NewsConnection->dataend();
|
||||||
|
|
||||||
|
# Posting failed? Save to ERROR.dat
|
||||||
if (!$NewsConnection->ok()) {
|
if (!$NewsConnection->ok()) {
|
||||||
open FH, ">>ERROR.dat";
|
open FH, ">>ERROR.dat";
|
||||||
print FH "\nPosting failed! Saving to ERROR.dat. Response from news server:\n";
|
print FH "\nPosting failed! Saving to ERROR.dat. Response from news server:\n";
|
||||||
|
|
Loading…
Reference in a new issue