X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Debbugs%2FCommon.pm;h=4755fd5d2412f7fbf8f916be1765e417bad3abf8;hb=3cccbb53e0dfd0b7f970250da329615e15a54a99;hp=f3c8218ea66cf1cc8e63e6ac77e22fd31d5a2f47;hpb=c2ad38d1bb069d5110e86bef304fe10649b8d6f8;p=debbugs.git diff --git a/Debbugs/Common.pm b/Debbugs/Common.pm index f3c8218..4755fd5 100644 --- a/Debbugs/Common.pm +++ b/Debbugs/Common.pm @@ -50,7 +50,7 @@ BEGIN{ qw(cleanup_eval_fail), qw(hash_slice), ], - utf8 => [qw(encode_utf8_structure)], + utf8 => [qw(encode_utf8_structure encode_utf8_safely)], date => [qw(secs_to_english)], quit => [qw(quit)], lock => [qw(filelock unfilelock lockpid)], @@ -929,26 +929,40 @@ sub encode_utf8_structure { push @ret,$_; } else { - push @ret,__encode_utf8($_); + push @ret,encode_utf8_safely($_); } } --$depth; return @ret; } -sub __encode_utf8 { +=head2 encode_utf8_safely + + $octets = encode_utf8_safely($string); + +Given a $string, returns the octet equivalent of $string if $string is +in perl's internal encoding; otherwise returns $string. + +Silently returns REFs without encoding them. [If you want to deeply +encode REFs, see encode_utf8_structure.] + +=cut + + +sub encode_utf8_safely{ my @ret; for my $r (@_) { - if (not ref($r) and is_utf8($r)) { + if (not ref($r) and is_utf8($r)) { $r = encode_utf8($r); } push @ret,$r; } - return @ret; + return wantarray ? @ret : (length @_ > 1 ? @ret : $_[0]); } + 1; __END__