#! /usr/bin/perl -W
#
-# yapfaq Version 0.8.1 by Thomas Hochstein
+# yapfaq Version 0.10 by Thomas Hochstein
# (Original author: Marc Brockschmidt)
#
# This script posts any project described in its config-file. Most people
# will use it in combination with cron(8).
#
# Copyright (C) 2003 Marc Brockschmidt <marc@marcbrockschmidt.de>
-# Copyright (c) 2010 Thomas Hochstein <thh@inter.net>
+# Copyright (c) 2010-2017 Thomas Hochstein <thh@thh.name>
#
# It can be redistributed and/or modified under the same terms under
# which Perl itself is published.
-our $VERSION = "0.9-prelease";
+our $VERSION = "0.10";
# Please do not change this setting!
# You may override the default .rc file (.yapfaqrc) by using "-c .rc file"
use Net::NNTP;
use Net::Domain qw(hostfqdn);
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
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-2017 Thomas Hochstein <thh\@thh.name>\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);
}
my ($ActName,$File,$PFreq,$Expire) =($$_{'name'},$$_{'file'},$$_{'posting-frequency'},$$_{'expires'});
my ($From,$Subject,$NG,$Fup2)=($$_{'from'},$$_{'subject'},$$_{'ngs'},$$_{'fup2'});
- my ($MIDF,$ReplyTo,$ExtHea)=($$_{'mid-format'},$$_{'reply-to'},$$_{'extraheader'});
+ my ($MIDF,$ReplyTo,$Charset,$ExtHea)=($$_{'mid-format'},$$_{'reply-to'},$$_{'charset'},$$_{'extraheader'});
my ($Supersede) =($$_{'supersede'});
# -f: loop if not FAQ to post
if($Options{'d'}) {
print "$ActName: Would be posted now (but running in simulation mode [$0 -d]).\n" if $Options{'v'};
} else {
- postfaq(\$ActName,\$File,\$From,\$Subject,\$NG,\$Fup2,\$MIDF,\$ExtHea,\$Config{'Sender'},\$TDY,\$TDM,\$TDD,\$ReplyTo,\$SupersedeMID,\$Expire);
+ postfaq(\$ActName,\$File,\$From,\$Subject,\$NG,\$Fup2,\$MIDF,\$Charset,\$ExtHea,\$Config{'Sender'},\$TDY,\$TDM,\$TDD,\$ReplyTo,\$SupersedeMID,\$Expire);
}
} elsif($Options{'v'}) {
print "$ActName: Nothing to do.\n";
# It reads the data-file $File and then posts the article.
sub postfaq {
- my ($ActName,$File,$From,$Subject,$NG,$Fup2,$MIDF,$ExtraHeaders,$Sender,$TDY,$TDM,$TDD,$ReplyTo,$Supersedes,$Expire) = @_;
+ my ($ActName,$File,$From,$Subject,$NG,$Fup2,$MIDF,$Charset,$ExtraHeaders,$Sender,$TDY,$TDM,$TDD,$ReplyTo,$Supersedes,$Expire) = @_;
my (@Header,@Body,$MID,$InRealBody,$LastModified);
print "$$ActName: Preparing to post.\n" if($Options{'v'});
$$Subject =~ s/[<\[{\(]?\%LM[>\]}\)]?//;
}
+ # Set Charset
+ $$Charset = 'UTF-8' if !$$Charset;
+ my $ContentType = sprintf('text/plain; charset=%s',$$Charset);
+
# Test mode?
if($Options{'t'} and $Options{'t'} !~ /console/i) {
$$NG = $Options{'t'};
$MID =~ s/@/-$Timestamp-test@/g;
$$ExtraHeaders .= "\n" if $$ExtraHeaders;
- $$ExtraHeaders .= "X-Supersedes: $$Supersedes\nX-yapfaq-Remark: This is only a test message.";
+ $$ExtraHeaders .= "X-Supersedes: $$Supersedes\n" if $$Supersedes;
+ $$ExtraHeaders .= "X-yapfaq-Remark: This is only a test message.";
undef $$Supersedes;
}
push @Header, "Sender: $$Sender\n" if $$Sender;
push @Header, "Mime-Version: 1.0\n";
push @Header, "Reply-To: $$ReplyTo\n" if $$ReplyTo;
- push @Header, "Content-Type: text/plain; charset=ISO-8859-15\n";
+ push @Header, "Content-Type: $ContentType\n";
push @Header, "Content-Transfer-Encoding: 8bit\n";
push @Header, "User-Agent: yapfaq/$VERSION\n";
if ($$ExtraHeaders) {
have defined a reasonable hostname that the hostfqdn() function of
Net::Domain can return.
+=item B<Charset> = I<encoding> (optional)
+
+The character encoding of your FAQ. This setting is optional, but
+should match the encoding of your FAQ B<File>. Default is set to
+I<UTF-8>.
+
+This setting is copied verbatim to the I<Content-Type> header.
+
=item B<Supersede> = I<yes> (optional)
Add Supersedes header to the message containing the Message-ID header
# Message-ID ("%n" is $Name)
# MID-Format = '<%n-%d.%m.%y@domain.invalid>'
+ # Character Encoding
+ # This setting is optional. Default: UTF-8
+ # Charset = ISO-8859-15
+
# Supersede last posting?
Supersede = yes
=head1 BUGS
-Please report any bugs or feature request to the author or use the
-bug tracker at L<http://bugs.th-h.de/>!
+Please report any bugs or feature requests to the author or use the
+bug tracker at L<https://bugs.th-h.de/>!
=head1 SEE ALSO
-L<http://th-h.de/download/scripts.php> will have the current
+L<https://th-h.de/net/software/yapfaq/> 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>.
+L<https://code.th-h.de/?p=usenet/yapfaq.git>.
=head1 AUTHOR
-Thomas Hochstein <thh@inter.net>
+Thomas Hochstein <thh@thh.name>
Original author (up to version 0.5b, dating from 2003):
Marc Brockschmidt <marc@marcbrockschmidt.de>
Copyright (c) 2003 Marc Brockschmidt <marc@marcbrockschmidt.de>
-Copyright (c) 2010 Thomas Hochstein <thh@inter.net>
+Copyright (c) 2010-2017 Thomas Hochstein <thh@thh.name>
This program is free software; you may redistribute it and/or modify it
under the same terms as Perl itself.