sethostent_r_proto=''
d_setitimer=''
d_setlinebuf=''
+d_has_C_UTF8=''
d_setlocale=''
+d_setlocale_accepts_any_locale_name=''
d_setlocale_r=''
setlocale_r_proto=''
d_setnent=''
d_times=''
d_tmpnam_r=''
tmpnam_r_proto=''
+d_towlower=''
+d_towupper=''
d_trunc=''
d_truncate=''
d_truncl=''
i_utime=''
i_vfork=''
i_wchar=''
+i_wctype=''
d_inc_version_list=''
inc_version_list=''
inc_version_list_init=''
set setlinebuf d_setlinebuf
eval $inlibc
-: see if setlocale exists
-set setlocale d_setlocale
-eval $inlibc
-
: see if locale.h is available
set locale.h i_locale
eval $inhdr
+: see if this system has wctype.h
+set wctype.h i_wctype
+eval $inhdr
+
+: see if towupper exists
+set towupper d_towupper
+eval $inlibc
+
+: check for setlocale function and behavior
+$cat <<EOM
+
+Checking to see if you have setlocale() and its behavior
+EOM
+$cat >try.c <<EOCP
+#$i_stdlib I_STDLIB
+#ifdef I_STDLIB
+# include <stdlib.h>
+#endif
+#include <string.h>
+#$i_locale I_LOCALE
+#ifdef I_LOCALE
+# include <locale.h>
+#endif
+#$i_wctype I_WCTYPE
+#ifdef I_WCTYPE
+# include <wctype.h>
+#endif
+
+int main() {
+ const char * invalid_name = "\a"; /* This is really invalid! */
+ int accepts_any_locale_name = 0;
+ int has_C_UTF8 = 0;
+ unsigned char bad_setlocale = 255;
+
+ /* If LC_CTYPE isn't defined the compilation will fail, and locales will be
+ * disabled. It's hard to imagine an instance where meaningful locale
+ * handling could be done without LC_CTYPE */
+ const char * name = setlocale(LC_CTYPE, "C");
+
+ if (name == NULL || strcmp(name, "C") != 0) {
+ exit(bad_setlocale);
+ }
+
+ name = setlocale(LC_CTYPE, invalid_name);
+ if (name != NULL) {
+
+ /* Let it pass if it accepts the name but gives back one of the C
+ * locales */
+ if (strcmp(name, "C") != 0 && strcmp(name, "C.UTF-8") != 0) {
+ accepts_any_locale_name = 1;
+ }
+ }
+
+ name = setlocale(LC_CTYPE, "C.UTF-8");
+ if (name != NULL) {
+ unsigned char y_with_diaeresis = ('A' == 193) ? 0xDF : 0xFF;
+
+#$d_towupper HAS_TOWUPPER
+#ifdef HAS_TOWUPPER
+
+ /* We assume that if the machine doesn't have the C99 towupper, it
+ * doesn't have C.UTF-8, even if we successfully changed locales to
+ * include it. This seems safer even on platforms that didn't accept
+ * the really invalid name */
+
+ if (towupper(y_with_diaeresis) == 0x178) {
+ has_C_UTF8 = 1;
+ }
+
+#endif
+
+ }
+
+#if 0
+
+ /* Currently unused code to determine if LC_ALL with disparate values uses
+ * category=value pairs or positional, and to determine the separator
+ * between the categories. We could add code so that if the separator were
+ * > '9', we subtract 10; similarly for 'Z' and 'z', and then just about
+ * every possible ASCII separator would fit in the 5 bits available in the
+ * exit code. This would not be true in EBCDIC. And then if LC_ALL is
+ * positional, we probably would want to know the order of the categories.
+ * Using a file between the C program and the shell script would really be
+ * require to do that */
+#ifdef LC_ALL
+
+ unsigned char min_separator = ' ' - 1;
+ unsigned char separator = min_separator;
+ int uses_name_value_pair_names = 0;
+
+ name = setlocale(LC_ALL, "C");
+ if (name == NULL || strcmp(name, "C") != 0) {
+ exit(bad_setlocale);
+ }
+
+ if (has_C_UTF8) {
+ char * pos;
+
+ name = setlocale(LC_CTYPE, "C.UTF-8");
+ if (name == NULL) {
+ exit(bad_setlocale);
+ }
+ name = setlocale(LC_ALL, NULL);
+ if (name == NULL) {
+ exit(bad_setlocale);
+ }
+
+ pos = strstr(name, "LC_CTYPE=C.UTF-8");
+ if (pos != NULL) {
+ uses_name_value_pair_names = 1;
+ if (pos == name) {
+ separator = name[sizeof("LC_CTYPE=C.UTF-8") - 1];
+ }
+ else {
+ separator = *(pos - 1);
+ }
+ }
+ else {
+ pos = strstr(name, "C.UTF-8");
+ if (pos == NULL) {
+ /* bad */
+ }
+ else if (pos == name) {
+ separator = name[sizeof("C.UTF-8") - 1];
+ }
+ else {
+ separator = *(pos - 1);
+ }
+ }
+ }
+
+#endif
+#endif
+
+ exit( 0 /* (separator - min_separator) << 3
+ | uses_name_value_pair_names << 2
+ */
+ | has_C_UTF8 << 1
+ | accepts_any_locale_name);
+
+}
+EOCP
+set try
+if eval $compile; then
+ echo "Your system has setlocale()..." >&4
+ $run ./try
+ case $? in
+ 0) echo "and it seems sane" >&4
+ d_setlocale="$define"
+ d_setlocale_accepts_any_locale_name="$undef"
+ d_has_C_UTF8="false"
+ ;;
+ 1) echo "and it seems sane, but accepts any locale name as valid" >&4
+ d_setlocale="$define"
+ d_setlocale_accepts_any_locale_name="$define"
+ d_has_C_UTF8="false"
+ ;;
+ 2) echo "and it seems sane" >&4
+ d_setlocale="$define"
+ d_setlocale_accepts_any_locale_name="$undef"
+ d_has_C_UTF8="true"
+ ;;
+ 3) echo "and it seems sane, but accepts any locale name as valid" >&4
+ d_setlocale="$define"
+ d_setlocale_accepts_any_locale_name="$define"
+ d_has_C_UTF8="true"
+ ;;
+ *) echo "but it doesn't seem to work, so we won't use it." >&4
+ d_setlocale="$undef"
+ d_setlocale_accepts_any_locale_name="$undef"
+ d_has_C_UTF8="false"
+ ;;
+ esac
+else
+ echo "your system does not have setlocale()" >&4
+ d_setlocale="$undef"
+ d_setlocale_accepts_any_locale_name="$undef"
+ d_has_C_UTF8="false"
+fi
+$rm_try
+
: see if setlocale_r exists
set setlocale_r d_setlocale_r
eval $inlibc
;;
esac
+: see if towlower exists
+set towlower d_towlower
+eval $inlibc
+
: see if trunc exists
set trunc d_trunc
eval $inlibc
d_gmtime_r='$d_gmtime_r'
d_gnulibc='$d_gnulibc'
d_grpasswd='$d_grpasswd'
+d_has_C_UTF8='$d_has_C_UTF8'
d_hasmntopt='$d_hasmntopt'
d_htonl='$d_htonl'
d_hypot='$d_hypot'
d_setitimer='$d_setitimer'
d_setlinebuf='$d_setlinebuf'
d_setlocale='$d_setlocale'
+d_setlocale_accepts_any_locale_name='$d_setlocale_accepts_any_locale_name'
d_setlocale_r='$d_setlocale_r'
d_setnent='$d_setnent'
d_setnetent_r='$d_setnetent_r'
d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
d_tm_tm_zone='$d_tm_tm_zone'
d_tmpnam_r='$d_tmpnam_r'
+d_towlower='$d_towlower'
+d_towupper='$d_towupper'
d_trunc='$d_trunc'
d_truncate='$d_truncate'
d_truncl='$d_truncl'
i_utime='$i_utime'
i_vfork='$i_vfork'
i_wchar='$i_wchar'
+i_wctype='$i_wctype'
i_xlocale='$i_xlocale'
ignore_versioned_solibs='$ignore_versioned_solibs'
inc_version_list='$inc_version_list'
d_setitimer='define'
d_setlinebuf='define'
d_setlocale='define'
+d_setlocale_accepts_any_locale_name='undef'
d_setlocale_r='undef'
d_setnent='define'
d_setnetent_r='undef'
d_tm_tm_gmtoff='define'
d_tm_tm_zone='define'
d_tmpnam_r='undef'
+d_towlower='undef'
+d_towupper='undef'
d_trunc='undef'
d_truncate='define'
d_truncl='define'
i_utime='define'
i_vfork='undef'
i_wchar='undef'
+i_wctype='undef'
i_xlocale='undef'
ignore_versioned_solibs='y'
inc_version_list=' '
d_setitimer='define'
d_setlinebuf='define'
d_setlocale='define'
+d_setlocale_accepts_any_locale_name='undef'
d_setlocale_r='undef'
d_setnent='define'
d_setnetent_r='undef'
d_tm_tm_gmtoff='define'
d_tm_tm_zone='define'
d_tmpnam_r='undef'
+d_towlower='undef'
+d_towupper='undef'
d_trunc='undef'
d_truncate='define'
d_truncl='define'
i_utime='define'
i_vfork='undef'
i_wchar='undef'
+i_wctype='undef'
i_xlocale='undef'
ignore_versioned_solibs='y'
inc_version_list=' '
d_setitimer='undef'
d_setlinebuf='undef'
d_setlocale='define'
+d_setlocale_accepts_any_locale_name='undef'
d_setlocale_r='undef'
d_setnent='undef'
d_setnetent_r='undef'
d_tm_tm_gmtoff='undef'
d_tm_tm_zone='undef'
d_tmpnam_r='undef'
+d_towlower='undef'
+d_towupper='undef'
d_trunc='undef'
d_truncate='undef'
d_truncl='undef'
i_utime='define'
i_vfork='undef'
i_wchar='undef'
+i_wctype='undef'
i_xlocale='undef'
ignore_versioned_solibs=''
inc_version_list=''
d_setitimer='define'
d_setlinebuf='define'
d_setlocale='define'
+d_setlocale_accepts_any_locale_name='undef'
d_setlocale_r='undef'
d_setnent='define'
d_setnetent_r='undef'
d_tm_tm_gmtoff='define'
d_tm_tm_zone='define'
d_tmpnam_r='undef'
+d_towlower='undef'
+d_towupper='undef'
d_trunc='define'
d_truncate='define'
d_truncl='define'
i_utime='define'
i_vfork='undef'
i_wchar='define'
+i_wctype='undef'
i_xlocale='define'
ignore_versioned_solibs='y'
inc_version_list=''
*/
#$d_setlinebuf HAS_SETLINEBUF /**/
-/* HAS_SETLOCALE:
- * This symbol, if defined, indicates that the setlocale routine is
- * available to handle locale-specific ctype implementations.
- */
-#$d_setlocale HAS_SETLOCALE /**/
-
/* HAS_SETPGID:
* This symbol, if defined, indicates that the setpgid(pid, gpid)
* routine is available to set process group ID.
*/
#$d_setitimer HAS_SETITIMER /**/
+/* HAS_SETLOCALE:
+ * This symbol, if defined, indicates that the setlocale routine is
+ * available to handle locale-specific ctype implementations.
+ */
+/* SETLOCALE_ACCEPTS_ANY_LOCALE_NAME:
+ * This symbol, if defined, indicates that the setlocale routine is
+ * available and it accepts any input locale name as valid.
+ */
+#$d_setlocale HAS_SETLOCALE /**/
+#$d_setlocale_accepts_any_locale_name SETLOCALE_ACCEPTS_ANY_LOCALE_NAME /**/
+
/* HAS_SETPROCTITLE:
* This symbol, if defined, indicates that the setproctitle routine is
* available to set process title.
*/
#$d_timegm HAS_TIMEGM /**/
+/* HAS_TOWLOWER:
+ * This symbol, if defined, indicates that the towlower () routine is
+ * available to do string concatenation.
+ */
+#$d_towlower HAS_TOWLOWER /**/
+
+/* HAS_TOWUPPER:
+ * This symbol, if defined, indicates that the towupper () routine is
+ * available to do string concatenation.
+ */
+#$d_towupper HAS_TOWUPPER /**/
+
/* HAS_TRUNC:
* This symbol, if defined, indicates that the trunc routine is
* available to round doubles towards zero.
*/
#$i_wchar I_WCHAR /**/
+/* I_WCTYPE:
+ * This symbol, if defined, indicates that <wctype.h> exists.
+ */
+#$i_wctype I_WCTYPE /**/
+
/* DOUBLEINFBYTES:
* This symbol, if defined, is a comma-separated list of
* hexadecimal bytes for the double precision infinity.
$ d_mktime="define"
$ d_nl_langinfo="define"
$ d_setlocale="define"
+$ d_setlocale_accepts_any_locale_name="undef"
$ d_stdiobase="define"
$ d_stdio_cnt_lval="define"
$ d_stdio_ptr_lval="define"
$ WC "d_setitimer='" + d_setitimer + "'"
$ WC "d_setlinebuf='undef'"
$ WC "d_setlocale='" + d_setlocale + "'"
+$ WC "d_setlocale_accepts_any_locale_name='" + d_setlocale_accepts_any_locale_name + "'"
$ WC "d_setnent='" + d_setnent + "'"
$ WC "d_setpent='" + d_setpent + "'"
$ WC "d_setpgid='" + d_setpgid + "'"
$ WC "i_utime='" + i_utime + "'"
$ WC "i_vfork='undef'"
$ WC "i_wchar='define'"
+$ WC "i_wctype='define'"
$ WC "i_xlocale='undef'"
$ WC "inc_version_list='0'"
$ WC "inc_version_list_init='0'"
$ WC "d_strerror_l='undef'"
$ WC "d_strerror_r='undef'"
$ WC "d_tmpnam_r='undef'"
+$ WC "d_towlower='define'"
+$ WC "d_towupper='define'"
$ WC "d_ttyname_r='" + d_ttyname_r + "'"
$ WC "d_uselocale='undef'"
$ WC "ctermid_r_proto='0'"
$test_num = $final_locales_test_number;
-unless ( $os =~ m!^(dragonfly|openbsd|bitrig|mirbsd)$! ) {
+if ( ! defined $Config{d_setlocale_accepts_any_locale_name}) {
# perl #115808
use warnings;
my $warned = 0;
#ifdef I_WCHAR
# include <wchar.h>
#endif
+#ifdef I_WCTYPE
+# include <wctype.h>
+#endif
/* If the environment says to, we can output debugging information during
* initialization. This is done before option parsing, and before any thread
/* If this assert fails, adjust the size of curlocales in intrpvar.h */
STATIC_ASSERT_STMT(C_ARRAY_LENGTH(PL_curlocales) > LC_ALL_INDEX);
-# if defined(_NL_LOCALE_NAME) && defined(DEBUGGING)
-
+# if defined(_NL_LOCALE_NAME) \
+ && defined(DEBUGGING) \
+ && ! defined(SETLOCALE_ACCEPTS_ANY_LOCALE_NAME)
+ /* On systems that accept any locale name, the real underlying locale
+ * is often returned by this internal function, so we can't use it */
{
/* Internal glibc for querylocale(), but doesn't handle
* empty-string ("") locale properly; who knows what other
/* UTF-8 locales can have special handling for 'I' and 'i' if they are
* Turkic. Make sure these two are the only anomalies. (We don't use
* towupper and towlower because they aren't in C89.) */
+
+#if defined(HAS_TOWUPPER) && defined (HAS_TOWLOWER)
+
+ if (towupper('i') == 0x130 && towlower('I') == 0x131) {
+
+#else
+
if (toupper('i') == 'i' && tolower('I') == 'I') {
+
+#endif
check_for_problems = TRUE;
maybe_utf8_turkic = TRUE;
}
* HAS_STRTOD_L
* HAS_STRTOLD_L
* I_WCHAR
+ * I_WCTYPE
+ * HAS_TOWLOWER
+ * HAS_TOWUPPER
+ * SETLOCALE_ACCEPTS_ANY_LOCALE_NAME
*/
d_setitimer='undef'
d_setlinebuf='define'
d_setlocale='define'
+d_setlocale_accepts_any_locale_name='undef'
d_setlocale_r='undef'
d_setnent='undef'
d_setnetent_r='undef'
d_tm_tm_gmtoff='undef'
d_tm_tm_zone='undef'
d_tmpnam_r='undef'
+d_towlower='undef'
+d_towupper='undef'
d_trunc='undef'
d_truncate='undef'
d_truncl='undef'
i_utime='define'
i_vfork='undef'
i_wchar='undef'
+i_wctype='undef'
i_xlocale='undef'
ignore_versioned_solibs=''
inc_version_list=' '
d_setitimer='undef'
d_setlinebuf='undef'
d_setlocale='undef'
+d_setlocale_accepts_any_locale_name='undef'
d_setlocale_r='undef'
d_setnent='undef'
d_setnetent_r='undef'
d_tm_tm_gmtoff='undef'
d_tm_tm_zone='undef'
d_tmpnam_r='undef'
+d_towlower='undef'
+d_towupper='undef'
d_trunc='undef'
d_truncate='undef'
d_truncl='undef'
i_varhdr='stdarg.h'
i_vfork='undef'
i_wchar='undef'
+i_wctype='undef'
i_xlocale='undef'
ignore_versioned_solibs='y'
inc_version_list=''
# systems
return if $locale =~ / ^ pig $ /ix;
- # As of 6.3, this platform's locale handling is basically broken. khw
- # filed a bug report (no ticket number was returned), and it is supposedly
- # going to change in a future release, so the statements here below sunset
- # for any larger version, at which point this may start failing and have
- # to be revisited.
- #
- # Given a legal individual category, basically whatever you set the locale
- # to, the return from setlocale() indicates that it has taken effect, even
- # if it hasn't. However, the return from querying LC_ALL won't reflect
- # this.
- if ($Config{osname} =~ /openbsd/i && $locale !~ / ^ (?: C | POSIX ) $/ix) {
- my ($major, $minor) = $Config{osvers} =~ / ^ ( \d+ ) \. ( \d+ ) /ax;
- return if ! defined $major || ! defined $minor
- || $major < 6 || ($major == 6 && $minor <= 3);
- }
+ # Certain platforms have a crippled locale system in which setlocale
+ # returns success for just about any possible locale name, but if anything
+ # actually happens as a result of the call, it is that the underlying
+ # locale is set to a system default, likely C or C.UTF-8. We can't test
+ # such systems fully, but we shouldn't disable the user from using
+ # locales, as it may work out for them (or not).
+ return if defined $Config{d_setlocale_accepts_any_locale_name}
+ && $locale !~ / ^ (?: C | POSIX | C\.UTF-8 ) $/ix;
$categories = [ $categories ] unless ref $categories;
my @Locale;
_trylocale("C", $categories, \@Locale, $allow_incompatible);
_trylocale("POSIX", $categories, \@Locale, $allow_incompatible);
- _trylocale("C.UTF-8", $categories, \@Locale, $allow_incompatible);
+
+ if ($Config{d_has_C_UTF8} eq 'true') {
+ _trylocale("C.UTF-8", $categories, \@Locale, $allow_incompatible);
+ }
+
+ # There's no point in looking at anything more if we know that setlocale
+ # will return success on any garbage or non-garbage name.
+ return sort @Locale if defined $Config{d_setlocale_accepts_any_locale_name};
+
foreach (1..16) {
_trylocale("ISO8859-$_", $categories, \@Locale, $allow_incompatible);
_trylocale("iso8859$_", $categories, \@Locale, $allow_incompatible);
my $non_C_locale;
foreach my $locale (@locales) {
- next if $locale eq "C" || $locale eq 'POSIX';
+ next if $locale eq "C" || $locale eq 'POSIX' || $locale eq "C.UTF-8";
$non_C_locale = $locale;
last;
}
}
SKIP: {
- # Note: a Configure probe could be written to give us the syntax to
- # use, but khw doesn't think it's worth it. If the POSIX 2008 locale
- # functions are being used, the syntax becomes mostly irrelevant, so
- # do the test anyway if they are
- # it's a lot of trouble to figure out in a perl script
- if ($^O eq 'openbsd' && ( $Config{useithreads} ne 'define'
- || ! ${^SAFE_LOCALES}))
+ # Note: the setlocale Configure probe could be enhanced to give us the
+ # syntax to use, but khw doesn't think it's worth it at this time, as
+ # the current outliers seem to be skipped by the test just below
+ # anyway. If the POSIX 2008 locale functions are being used, the
+ # syntax becomes mostly irrelevant, so do the test anyway if they are.
+ # It's a lot of trouble to figure out in a perl script.
+ if ($Config{d_setlocale_accepts_any_locale_name} eq 'true')
{
- skip("The setlocale() syntax used is invalid on this platform", 2);
+ skip("Can't distinguish between valid and invalid locale names on this system", 2);
}
my @valid_categories = valid_locale_categories();
*/
/*#define HAS_SETLINEBUF / **/
-/* HAS_SETLOCALE:
- * This symbol, if defined, indicates that the setlocale routine is
- * available to handle locale-specific ctype implementations.
- */
-/*#define HAS_SETLOCALE / **/
-
/* HAS_SETPGID:
* This symbol, if defined, indicates that the setpgid(pid, gpid)
* routine is available to set process group ID.
*/
/*#define HAS_SETITIMER / **/
+/* HAS_SETLOCALE:
+ * This symbol, if defined, indicates that the setlocale routine is
+ * available to handle locale-specific ctype implementations.
+ */
+/* SETLOCALE_ACCEPTS_ANY_LOCALE_NAME:
+ * This symbol, if defined, indicates that the setlocale routine is
+ * available and it accepts any input locale name as valid.
+ */
+/*#define HAS_SETLOCALE / **/
+/*#define SETLOCALE_ACCEPTS_ANY_LOCALE_NAME / **/
+
/* HAS_SETPROCTITLE:
* This symbol, if defined, indicates that the setproctitle routine is
* available to set process title.
*/
/*#define HAS_TIMEGM / **/
+/* HAS_TOWLOWER:
+ * This symbol, if defined, indicates that the towlower () routine is
+ * available to do string concatenation.
+ */
+/*#define HAS_TOWLOWER / **/
+
+/* HAS_TOWUPPER:
+ * This symbol, if defined, indicates that the towupper () routine is
+ * available to do string concatenation.
+ */
+/*#define HAS_TOWUPPER / **/
+
/* HAS_TRUNC:
* This symbol, if defined, indicates that the trunc routine is
* available to round doubles towards zero.
*/
/*#define I_WCHAR / **/
+/* I_WCTYPE:
+ * This symbol, if defined, indicates that <wctype.h> exists.
+ */
+/*#define I_WCTYPE / **/
+
/* DOUBLEINFBYTES:
* This symbol, if defined, is a comma-separated list of
* hexadecimal bytes for the double precision infinity.
#endif
/* Generated from:
- * 875df2221ab768da0a87740ad45e12bbc9e3b483bfa1a913727e982350ad74cf config_h.SH
- * 24ca29f990de08f8119ad2c15f060361b86fc407caab088289d7d5ac3e0f117a uconfig.sh
+ * 2cc5c49f1266887de8224d2804aae6f80c43da0a62782d74866d5e828194698d config_h.SH
+ * d6d2fc8bf209b3d6db681ac0994a29a281afe35c3a96bb62079cb15b0605d035 uconfig.sh
* ex: set ro: */
d_setitimer='undef'
d_setlinebuf='undef'
d_setlocale='undef'
+d_setlocale_accepts_any_locale_name='undef'
d_setlocale_r='undef'
d_setnent='undef'
d_setnetent_r='undef'
d_tm_tm_gmtoff='undef'
d_tm_tm_zone='undef'
d_tmpnam_r='undef'
+d_towlower='undef'
+d_towupper='undef'
d_trunc='undef'
d_truncate='undef'
d_truncl='undef'
i_utime='undef'
i_vfork='undef'
i_wchar='undef'
+i_wctype='undef'
i_xlocale='undef'
ignore_versioned_solibs='y'
inc_version_list_init='NULL'
d_setitimer='undef'
d_setlinebuf='undef'
d_setlocale='undef'
+d_setlocale_accepts_any_locale_name='undef'
d_setlocale_r='undef'
d_setnent='undef'
d_setnetent_r='undef'
d_tm_tm_gmtoff='undef'
d_tm_tm_zone='undef'
d_tmpnam_r='undef'
+d_towlower='undef'
+d_towupper='undef'
d_trunc='undef'
d_truncate='undef'
d_truncl='undef'
i_utime='undef'
i_vfork='undef'
i_wchar='undef'
+i_wctype='undef'
i_xlocale='undef'
ignore_versioned_solibs='y'
inc_version_list_init='NULL'
d_setitimer='undef'
d_setlinebuf='undef'
d_setlocale='define'
+d_setlocale_accepts_any_locale_name='undef'
d_setlocale_r='undef'
d_setnent='undef'
d_setnetent_r='undef'
d_tm_tm_gmtoff='undef'
d_tm_tm_zone='undef'
d_tmpnam_r='undef'
+d_towlower='undef'
+d_towupper='undef'
d_trunc='undef'
d_truncate='undef'
d_truncl='undef'
i_utime='define'
i_vfork='undef'
i_wchar='undef'
+i_wctype='undef'
i_xlocale='undef'
ignore_versioned_solibs=''
inc_version_list=''
d_setitimer='undef'
d_setlinebuf='undef'
d_setlocale='define'
+d_setlocale_accepts_any_locale_name='undef'
d_setlocale_r='undef'
d_setnent='undef'
d_setnetent_r='undef'
d_tm_tm_gmtoff='undef'
d_tm_tm_zone='undef'
d_tmpnam_r='undef'
+d_towlower='undef'
+d_towupper='undef'
d_trunc='define'
d_truncate='undef'
d_truncl='define'
i_utime='define'
i_vfork='undef'
i_wchar='undef'
+i_wctype='undef'
i_xlocale='undef'
ignore_versioned_solibs=''
inc_version_list=''
d_setitimer='undef'
d_setlinebuf='undef'
d_setlocale='define'
+d_setlocale_accepts_any_locale_name='undef'
d_setlocale_r='undef'
d_setnent='undef'
d_setnetent_r='undef'
d_tm_tm_gmtoff='undef'
d_tm_tm_zone='undef'
d_tmpnam_r='undef'
+d_towlower='undef'
+d_towupper='undef'
d_trunc='undef'
d_truncate='undef'
d_truncl='undef'
i_utime='define'
i_vfork='undef'
i_wchar='undef'
+i_wctype='undef'
i_xlocale='undef'
ignore_versioned_solibs=''
inc_version_list=''