=provides __UNDEFINED__ =implementation /* If this doesn't exist, it's not needed, so noop */ __UNDEFINED__ switch_to_global_locale() /* Originally, this didn't return a value, but in perls like that, the value * should always be TRUE. Add a return to Perl_sync_locale() when it's * available. And actually do a sync when its not, if locales are available on * this system. */ #ifdef sync_locale # if { VERSION < 5.27.9 } # if { VERSION >= 5.21.3 } # undef sync_locale # define sync_locale() (Perl_sync_locale(aTHX), 1) # elif defined(sync_locale) /* These should be the 5.20 maints*/ # undef sync_locale /* Just copy their defn and return 1 */ # define sync_locale() (new_ctype(setlocale(LC_CTYPE, NULL)), \ new_collate(setlocale(LC_COLLATE, NULL)), \ set_numeric_local(), \ new_numeric(setlocale(LC_NUMERIC, NULL)), \ 1) # elif defined(new_ctype) && defined(LC_CTYPE) # define sync_locale() (new_ctype(setlocale(LC_CTYPE, NULL)), 1) # endif # endif #endif __UNDEFINED__ sync_locale() 1 =xsubs bool sync_locale() CODE: RETVAL = sync_locale(); OUTPUT: RETVAL =tests plan => 1 use Config; # We don't know for sure that we are in the global locale for testing. But # if this is unthreaded, it almost certainly is. But Configure can be called # to force POSIX locales on unthreaded systems. If this becomes a problem # this check could be beefed up. if ($Config{usethreads}) { ok(1); } else { ok(&Devel::PPPort::sync_locale()); }