aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Rpmdrake/formatting.pm17
-rw-r--r--Rpmdrake/pkg.pm2
-rw-r--r--Rpmdrake/rpmnew.pm2
3 files changed, 11 insertions, 10 deletions
diff --git a/Rpmdrake/formatting.pm b/Rpmdrake/formatting.pm
index de78fb80..6f581b9e 100644
--- a/Rpmdrake/formatting.pm
+++ b/Rpmdrake/formatting.pm
@@ -54,15 +54,16 @@ our @EXPORT = qw(
# from rpmtools, #37482:
sub ensure_utf8 {
- my ($s) = @_;
- require Encode;
- Encode::_utf8_on($s); #- this is done on the copy
- if (!Encode::is_utf8($s, 1)) {
- Encode::_utf8_off($_[0]);
- Encode::from_to($_[0], 'iso-8859-15', 'utf8'); # most probable
+ if (utf8::is_utf8($_[0])) {
+ utf8::valid($_[0]) and return;
+
+ utf8::encode($_[0]); #- disable utf8 flag
+ utf8::upgrade($_[0]);
+ } else {
+ utf8::decode($_[0]); #- try to set utf8 flag
+ utf8::valid($_[0]) and return;
+ warn "do not know what to with $_[0]\n";
}
- Encode::_utf8_on($_[0]); #- now we know it is valid utf8
- $_[0];
}
sub rpm_description {
diff --git a/Rpmdrake/pkg.pm b/Rpmdrake/pkg.pm
index b8c8a690..fb51cca1 100644
--- a/Rpmdrake/pkg.pm
+++ b/Rpmdrake/pkg.pm
@@ -83,7 +83,7 @@ sub run_rpm {
foreach (qw(LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT LC_IDENTIFICATION LC_ALL)) {
local $ENV{$_} = $ENV{$_} . '.UTF-8' if $ENV{$_} && $ENV{$_} !~ /UTF-8/;
}
- my @l = map { ensure_utf8($_) } run_program::get_stdout(@_);
+ my @l = map { ensure_utf8($_); $_ } run_program::get_stdout(@_);
wantarray() ? @l : join('', @l);
}
diff --git a/Rpmdrake/rpmnew.pm b/Rpmdrake/rpmnew.pm
index fc6377d6..f3cf5ba5 100644
--- a/Rpmdrake/rpmnew.pm
+++ b/Rpmdrake/rpmnew.pm
@@ -77,7 +77,7 @@ sub inspect {
foreach (qw(LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT LC_IDENTIFICATION LC_ALL)) {
local $ENV{$_} = $ENV{$_} . '.UTF-8' if $ENV{$_} && $ENV{$_} !~ /UTF-8/;
}
- my @diff = map { ensure_utf8($_) } `/usr/bin/diff -u '$file' '$rpmnew'`;
+ my @diff = map { ensure_utf8($_); $_ } `/usr/bin/diff -u '$file' '$rpmnew'`;
@diff = N("(none)") if !@diff;
my $d = ugtk2->new(N("Inspecting %s", $file), grab => 1, transient => $::main_window);
my $save_wsize = sub { @inspect_wsize = $d->{rwindow}->get_size };