summaryrefslogtreecommitdiffstats
path: root/perl-install
diff options
context:
space:
mode:
Diffstat (limited to 'perl-install')
-rw-r--r--perl-install/any.pm2
-rw-r--r--perl-install/c/stuff.xs.pm25
-rw-r--r--perl-install/install_steps.pm2
3 files changed, 27 insertions, 2 deletions
diff --git a/perl-install/any.pm b/perl-install/any.pm
index 42d7f4283..001ff08aa 100644
--- a/perl-install/any.pm
+++ b/perl-install/any.pm
@@ -796,4 +796,6 @@ sub runlevel {
}
}
+sub to_utf8 { c::to_utf8($lang::charset || 'ISO_8859-1', $_[0]) }
+
1;
diff --git a/perl-install/c/stuff.xs.pm b/perl-install/c/stuff.xs.pm
index 12d4c28a4..3fa08bc0a 100644
--- a/perl-install/c/stuff.xs.pm
+++ b/perl-install/c/stuff.xs.pm
@@ -455,7 +455,30 @@ from_utf8(s)
char *buf = alloca(s_len + 10); /* 10 for safety, it should not be needed, utf8 is *always* bigger than a special encoding */
{
char *ptr = buf;
- int ptr_len = s_len;
+ int ptr_len = s_len + 10;
+ if ((iconv(cd, &s, &s_len, &ptr, &ptr_len)) != (size_t) (-1)) {
+ *ptr = 0;
+ RETVAL = buf;
+ }
+ }
+ iconv_close(cd);
+ }
+ OUTPUT:
+ RETVAL
+
+char *
+to_utf8(charset, s)
+ char *charset
+ char *s
+ CODE:
+ iconv_t cd = iconv_open("utf-8", charset);
+ RETVAL = s;
+ if (cd != (iconv_t) (-1)) {
+ int s_len = strlen(RETVAL);
+ char *buf = alloca(2 * s_len + 10); /* 10 for safety, it should not be needed */
+ {
+ char *ptr = buf;
+ int ptr_len = 2 * s_len + 10;
if ((iconv(cd, &s, &s_len, &ptr, &ptr_len)) != (size_t) (-1)) {
*ptr = 0;
RETVAL = buf;
diff --git a/perl-install/install_steps.pm b/perl-install/install_steps.pm
index d9ef8c497..83dbf3d61 100644
--- a/perl-install/install_steps.pm
+++ b/perl-install/install_steps.pm
@@ -447,7 +447,7 @@ Consoles 1,3,4,7 may also contain interesting information";
# log::l("updating kde icons according to available devices");
# install_any::kdeicons_postinstall($o->{prefix});
- my $welcome = _("Welcome to %s", "HOSTNAME");
+ my $welcome = any::to_utf8(_("Welcome to %s", "HOSTNAME"));
substInFile { s/^(GreetString)=.*/$1=$welcome/ } "$o->{prefix}/usr/share/config/kdmrc";
install_any::disable_user_view($o->{prefix}) if $o->{security} >= 3 || $o->{authentication}{NIS};
run_program::rooted($o->{prefix}, "kdeDesktopCleanup");