diff options
author | Simon McVittie <smcv@debian.org> | 2017-07-23 15:56:24 +0100 |
---|---|---|
committer | Simon McVittie <smcv@debian.org> | 2017-07-23 16:04:57 +0100 |
commit | 3789b385b210bd8fdfa755a0ca435c11fa53290e (patch) | |
tree | aeeacb6d80fc3dbf2a965c581791ae604c286ae7 /IkiWiki.pm | |
parent | ae19c4819cfaa050bce846041120707e5f43e027 (diff) | |
download | ikiwiki-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.pm | 12 |
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 ($) { |