#! /usr/bin/perl -W
#
-# yapfaq Version 0.7 by Thomas Hochstein
+# yapfaq Version 0.8.1 by Thomas Hochstein
# (Original author: Marc Brockschmidt)
#
# This script posts any project described in its config-file. Most people
# It can be redistributed and/or modified under the same terms under
# which Perl itself is published.
-my $Version = "0.8-prelease";
+our $VERSION = "0.9-prelease";
# Please do not change this setting!
# You may override the default .rc file (.yapfaqrc) by using "-c .rc file"
my $RCFile = '.yapfaqrc';
# Valid configuration variables for use in a .rc file
-my @ValidConfVars = ('NNTPServer','NNTPUser','NNTPPass','Sender','ConfigFile');
+my @ValidConfVars = ('NNTPServer','NNTPUser','NNTPPass','Sender','ConfigFile','Program');
################################### Defaults ###################################
# Please do not change anything in here!
NNTPUser => "",
NNTPPass => "",
Sender => "",
- ConfigFile => "yapfaq.cfg");
+ ConfigFile => "yapfaq.cfg",
+ Program => "");
################################# Main program #################################
use Date::Calc qw(Add_Delta_YM Add_Delta_Days Delta_Days Today);
use Fcntl ':flock'; # import LOCK_* constants
use Getopt::Std;
+$Getopt::Std::STANDARD_HELP_VERSION = 1;
my ($TDY, $TDM, $TDD) = Today(); #TD: Today's date
# read commandline options
getopts('Vhvpdt:f:c:s:', \%Options);
# -V: print version / copyright information
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";
exit(0);
}
warn "$0: W: .rc file $RCFile does not exist!\n";
}
+$Options{'s'} = $Config{'Program'} if (defined($Config{'Program'}) && $Config{'Program'} && !defined($Options{'s'}));
+
# read configuration (configured FAQs)
my @Config;
readconfig (\$Config{'ConfigFile'}, \@Config, \$Faq);
s/\r//;
push (@Body, $_), next if $InRealBody;
$InRealBody++ if /^$/;
- $LastModified = $1 if /^Last-modified: (\S+)$/i;
+ $LastModified = $1 if /^Last-modified:\s*(\S+)\s*$/i;
push @Body, $_;
}
close FH;
push @Header, "Reply-To: $$ReplyTo\n" if $$ReplyTo;
push @Header, "Content-Type: text/plain; charset=ISO-8859-15\n";
push @Header, "Content-Transfer-Encoding: 8bit\n";
- push @Header, "User-Agent: yapfaq/$Version\n";
+ push @Header, "User-Agent: yapfaq/$VERSION\n";
if ($$ExtraHeaders) {
push @Header, "$_\n" for (split /\n/, $$ExtraHeaders);
}
The configuration file defining the FAQ(s) to post. Must be set (or
omitted; the default is "yapfaq.cfg").
+=item B<Program> = I<file name> (optional)
+
+A program the article is piped to instead of posting it to Usenet.
+See option "-f" below (which takes preference).
+
+This setting is optional.
+
=back
=head3 Example runtime configuration file
NNTPPass = ''
Sender = ''
ConfigFile = 'yapfaq.cfg'
+ Program = ''
=head3 Using more than one runtime configuration
or the much more powerful replacement I<tinews.pl> from
I<ftp://ftp.tin.org/tin/tools/tinews.pl> which is able to sign postings.
+If I<Program> is also defined in the runtime configuration file (by default
+F<.yapfaqrc>), B<-s> takes preference.
+
=item B<-c> I<.rc file>
Load another runtime configuration file (.rc file) than F<.yaofaq.rc>.
=head1 BUGS
-Many, I'm sure.
+Please report any bugs or feature request to the author or use the
+bug tracker at L<http://bugs.th-h.de/>!
=head1 SEE ALSO
L<http://th-h.de/download/scripts.php> will have the current
version of this program.
+This program is maintained using the Git version control system. You
+may clone L<git://code.th-h.de/usenet/yapfaq.git> to check out the
+current development tree or browse it on the web via
+L<http://code.th-h.de/?p=usenet/yapfaq.git>.
+
=head1 AUTHOR
Thomas Hochstein <thh@inter.net>