From b5572d621fe221ee9dcbf990118dd6aa69125cda Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Tue, 2 Jan 2007 23:30:18 +0100 Subject: [PATCH] Refactor the charset guessing. --- perl/Sesse/pr0n/Common.pm | 14 ++++++++++++++ perl/Sesse/pr0n/WebDAV.pm | 8 +------- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/perl/Sesse/pr0n/Common.pm b/perl/Sesse/pr0n/Common.pm index 2ca54cf..bc59854 100644 --- a/perl/Sesse/pr0n/Common.pm +++ b/perl/Sesse/pr0n/Common.pm @@ -554,6 +554,20 @@ sub add_new_event { return (); } +sub guess_charset { + my $text = shift; + my $decoded; + + eval { + $decoded = Encode::decode("utf-8", $text, Encode::FB_CROAK); + }; + if ($@) { + $decoded = Encode::decode("iso8859-1", $text); + } + + return $decoded; +} + 1; diff --git a/perl/Sesse/pr0n/WebDAV.pm b/perl/Sesse/pr0n/WebDAV.pm index 6d116d0..2cadbcd 100644 --- a/perl/Sesse/pr0n/WebDAV.pm +++ b/perl/Sesse/pr0n/WebDAV.pm @@ -544,13 +544,7 @@ EOF } # Ugh, Windows XP seems to be sending this in... something that's not UTF-8, at least - my $takenby_given; - eval { - $takenby_given = Encode::decode("utf-8", $apr->param('takenby'), Encode::FB_CROAK); - }; - if ($@) { - $takenby_given = Encode::decode("iso8859-1", $apr->param('takenby')); - } + my $takenby_given = Sesse::pr0n::Common::guess_charset($apr->param('takenby')); if (defined($takenby_given) && $takenby_given !~ /^\s*$/ && $takenby_given !~ /[<>&]/ && length($takenby_given) <= 100) { $takenby = $takenby_given; -- 2.39.2