aboutsummaryrefslogtreecommitdiff
path: root/IkiWiki.pm
diff options
context:
space:
mode:
authorSimon McVittie <smcv@debian.org>2017-07-23 15:56:24 +0100
committerSimon McVittie <smcv@debian.org>2017-07-23 16:04:57 +0100
commit3789b385b210bd8fdfa755a0ca435c11fa53290e (patch)
treeaeeacb6d80fc3dbf2a965c581791ae604c286ae7 /IkiWiki.pm
parentae19c4819cfaa050bce846041120707e5f43e027 (diff)
downloadikiwiki-3789b385b210bd8fdfa755a0ca435c11fa53290e.tar
ikiwiki-3789b385b210bd8fdfa755a0ca435c11fa53290e.tar.gz
core: Don't decode the result of strftime if already tagged as UTF-8
It wasn't in old Perls, but might be in Perl >= 5.21.1 due to commit https://perl5.git.perl.org/perl.git/commit/9717af6 (Closes: #869240)
Diffstat (limited to 'IkiWiki.pm')
-rw-r--r--IkiWiki.pm12
1 files changed, 9 insertions, 3 deletions
diff --git a/IkiWiki.pm b/IkiWiki.pm
index 6aa49229a..1eda16da1 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -1293,14 +1293,20 @@ sub formattime ($;$) {
my $strftime_encoding;
sub strftime_utf8 {
- # strftime doesn't know about encodings, so make sure
+ # strftime didn't know about encodings in older Perl, so make sure
# its output is properly treated as utf8.
# Note that this does not handle utf-8 in the format string.
+ my $result = POSIX::strftime(@_);
+
+ if (Encode::is_utf8($result)) {
+ return $result;
+ }
+
($strftime_encoding) = POSIX::setlocale(&POSIX::LC_TIME) =~ m#\.([^@]+)#
unless defined $strftime_encoding;
$strftime_encoding
- ? Encode::decode($strftime_encoding, POSIX::strftime(@_))
- : POSIX::strftime(@_);
+ ? Encode::decode($strftime_encoding, $result)
+ : $result;
}
sub date_3339 ($) {