void _imp_getProcessLocale( rtl_Locale ** ppLocale ) { static char *locale = NULL; /* basic thread safeness */ // pthread_mutex_lock( &aLocalMutex ); /* Only fetch the locale once and cache it */ if ( NULL == locale ) { locale = (char *)malloc( 128 ); if ( locale ) macosx_getLocale( locale, 128 ); else fprintf( stderr, "nlsupport.c: locale allocation returned NULL!\n" ); } /* handle the case where OS specific method of finding locale fails */ if ( NULL == locale ) { /* simulate behavior of setlocale */ locale = getenv( "LC_ALL" ); if( NULL == locale ) locale = getenv( "LC_CTYPE" ); if( NULL == locale ) locale = getenv( "LANG" ); if( NULL == locale ) locale = "C"; } /* return the locale */ *ppLocale = _parse_locale( locale ); setenv( "LC_ALL", locale, 1); setenv("LC_CTYPE", locale, 1 ); setenv("LANG", locale, 1 ); #if OSL_DEBUG_LEVEL > 1 OSL_TRACE("_imp_getProcessLocale() returning %s as current locale.", locale ); #endif // pthread_mutex_unlock( &aLocalMutex ); }
void _imp_getProcessLocale( rtl_Locale ** ppLocale ) { /* simulate behavior off setlocale */ char * locale = getenv( "LC_ALL" ); if( NULL == locale ) locale = getenv( "LC_CTYPE" ); if( NULL == locale ) locale = getenv( "LANG" ); if( NULL == locale ) locale = "C"; *ppLocale = _parse_locale( locale ); }
void _imp_getProcessLocale( rtl_Locale ** ppLocale ) { char * locale; /* basic thread safeness */ pthread_mutex_lock( &aLocalMutex ); /* set the locale defined by the env vars */ locale = setlocale( LC_CTYPE, "" ); /* fallback to the current locale */ if( NULL == locale ) locale = setlocale( LC_CTYPE, NULL ); /* return the LC_CTYPE locale */ *ppLocale = _parse_locale( locale ); pthread_mutex_unlock( &aLocalMutex ); }
void _imp_getProcessLocale( rtl_Locale ** ppLocale ) { #ifdef ANDROID /* No locale environment variables on Android, so why even bother * with getenv(). */ char * locale = "en-US.UTF-8"; #else /* simulate behavior off setlocale */ char * locale = getenv( "LC_ALL" ); if( NULL == locale ) locale = getenv( "LC_CTYPE" ); if( NULL == locale ) locale = getenv( "LANG" ); if( NULL == locale ) locale = "C"; #endif *ppLocale = _parse_locale( locale ); }