Don't fail to syslog if the wiki name contains %s

This is a corner case spotted while fixing UTF-8 syslogging.
master
Simon McVittie 2016-01-21 07:32:55 +00:00
parent b8dbb48fdc
commit 02a1aa4e49
2 changed files with 3 additions and 6 deletions

View File

@ -843,12 +843,9 @@ sub log_message ($$) {
$log_open=1;
}
eval {
# keep a copy to avoid editing the original config repeatedly
my $wikiname = $config{wikiname};
utf8::encode($wikiname);
my $message = join(" ", @_);
my $message = "[$config{wikiname}] ".join(" ", @_);
utf8::encode($message);
Sys::Syslog::syslog($type, "[$wikiname] %s", $message);
Sys::Syslog::syslog($type, "%s", $message);
};
if ($@) {
print STDERR "failed to syslog: $@" unless $log_failed;

View File

@ -11,7 +11,7 @@ $IkiWiki::config{syslog} = 1;
$IkiWiki::config{wikiname} = 'ASCII';
is(debug('test'), '', 'plain ASCII syslog');
$IkiWiki::config{wikiname} = 'not ⒶSCII';
$IkiWiki::config{wikiname} = 'not ⒶSCII and has %s in it';
is(debug('𝗧ĕṡҭ'), '', 'UTF8 syslog');
my $orig = $IkiWiki::config{wikiname};
is(debug('test'), '', 'check for idempotency');