From 0fad0dfda86d2d74f605ae050b294abaa94d1f58 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 8 Oct 2005 00:36:50 +0000 Subject: [PATCH] hack: adjust C locale to supported form under HP-UX, otherwise we crash on startup git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35835 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/motif/app.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/motif/app.cpp b/src/motif/app.cpp index b41edba147..1b899d82ca 100644 --- a/src/motif/app.cpp +++ b/src/motif/app.cpp @@ -210,6 +210,38 @@ bool wxApp::OnInitGui() if( !wxAppBase::OnInitGui() ) return false; +#ifdef __HPUX__ + // under HP-UX creating XmFontSet fails when the system locale is C and + // we're using a remote DISPLAY, presumably because HP-UX uses its own + // names for C and ISO locales (roman8 and iso8859n respectively) and so + // its Motif libraries have troubles with non-HP X server + // + // whatever the reason, the fact is that without this hack any wxMotif + // program crashes on startup because it can't create any font (HP programs + // still work but they do spit out messages about failing to create font + // sets and failing back on "fixed" font too) + // + // notice that calling setlocale() here is not enough because X(m) init + // functions call setlocale() later so we really have to change environment + bool fixAll = false; // tweak LC_ALL (or just LC_CTYPE)? + const char *loc = getenv("LC_CTYPE"); + if ( !loc ) + { + loc = getenv("LC_ALL"); + if ( loc ) + fixAll = true; + } + + if ( !loc || + (loc[0] == 'C' && loc[1] == '\0') || + strcmp(loc, "POSIX") == 0 ) + { + // we're using C locale, "fix" it + wxLogDebug(_T("HP-UX fontset hack: forcing locale to en_US.iso88591")); + putenv(fixAll ? "LC_ALL=en_US.iso88591" : "LC_CTYPE=en_US.iso88591"); + } +#endif // __HPUX__ + XtSetLanguageProc(NULL, NULL, NULL); XtToolkitInitialize() ; wxTheApp->m_appContext = (WXAppContext) XtCreateApplicationContext(); -- 2.45.2