diff options
author | Jarkko Hietaniemi <jhi@iki.fi> | 2001-12-01 20:30:17 +0000 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 2001-12-01 20:30:17 +0000 |
commit | bb5b2f6deaf9e14c2fb7501b3c4cdc60926e42e1 (patch) | |
tree | 9d4285cda2c6ddfc2daa896fbebbe9754e7c07db /ext/I18N | |
parent | e1faa3a01366d845f838995ae5732544dbf4ef9a (diff) | |
download | perl-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.t | 33 |
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"; } + + + |