summaryrefslogtreecommitdiff
path: root/ext/I18N
diff options
context:
space:
mode:
authorJarkko Hietaniemi <jhi@iki.fi>2001-12-01 20:30:17 +0000
committerJarkko Hietaniemi <jhi@iki.fi>2001-12-01 20:30:17 +0000
commitbb5b2f6deaf9e14c2fb7501b3c4cdc60926e42e1 (patch)
tree9d4285cda2c6ddfc2daa896fbebbe9754e7c07db /ext/I18N
parente1faa3a01366d845f838995ae5732544dbf4ef9a (diff)
downloadperl-bb5b2f6deaf9e14c2fb7501b3c4cdc60926e42e1.tar.gz
Try to make a missing RADIXCHAR a softer kinder error.
p4raw-id: //depot/perl@13414
Diffstat (limited to 'ext/I18N')
-rw-r--r--ext/I18N/Langinfo/Langinfo.t33
1 files changed, 26 insertions, 7 deletions
diff --git a/ext/I18N/Langinfo/Langinfo.t b/ext/I18N/Langinfo/Langinfo.t
index b2e97f9d8f..4e144106a0 100644
--- a/ext/I18N/Langinfo/Langinfo.t
+++ b/ext/I18N/Langinfo/Langinfo.t
@@ -12,11 +12,17 @@ BEGIN {
}
}
-use I18N::Langinfo qw(langinfo ABDAY_1 DAY_1 ABMON_1 MON_1 RADIXCHAR);
+use I18N::Langinfo qw(langinfo ABDAY_1 DAY_1 ABMON_1 MON_1);
use POSIX qw(setlocale LC_ALL);
use Config;
-setlocale(LC_ALL, "C");
+print "# ABDAY_1 = ", ABDAY_1, "\n";
+
+eval { I18N::Langinfo->import('RADIXCHAR') }; # silly glibcs
+print "# RADIXCHAR = ", RADIXCHAR(), " (eval error = '$@')\n";
+my $has_RADIXCHAR = !$@;
+
+setlocale(LC_ALL, $ENV{LC_ALL} = $ENV{LANG} = "C");
print "1..5\n";
@@ -32,20 +38,33 @@ print "ok 3\n";
print "not " unless langinfo(MON_1) eq "January";
print "ok 4\n";
-unless (eval { langinfo(RADIXCHAR) } eq ".") {
- print "not ok 5 - RADIXCHAR undefined\n";
+my $RADIXCHAR_ok;
+
+if ($has_RADIXCHAR) {
+ unless (langinfo(RADIXCHAR()) eq ".") {
+ print "not ok 5 - RADIXCHAR not '.' under the C locale\n";
+ } else {
+ print "ok 5\n";
+ $RADIXCHAR_ok = 1;
+ }
+} else {
+ print "ok 5 # Skip: you do not have RADIXHCAR\n";
+}
+
+unless ($RADIXCHAR_ok) {
if ($Config{d_gnulibc} || $Config{cppsymbols} =~ /__GNU_LIBRARY_/) {
print <<EOM;
#
# You are probably using GNU libc. The RADIXCHAR not getting defined
-# by I18N::Langinfo is a known problem in some older versions of the
+# by I18N::Langinfo is a known problem in some versions of the
# GNU libc (caused by the combination of using only enums, not cpp
# definitions, and of hiding the definitions behind rather obscure
# feature tests). Upgrading your libc is strongly suggested.
#
EOM
}
-} else {
- print "ok 5\n";
}
+
+
+