-#else
- if (!wxOKlibc()) wxConvCurrent = &wxConvLocal;
-#endif
-#else
- if (!wxOKlibc()) wxConvCurrent = (wxMBConv*) NULL;
-#endif
-
- gdk_threads_enter();
-
- gtk_init( &argc, &argv );
-
- wxSetDetectableAutoRepeat( TRUE );
-
- if (!wxApp::Initialize())
- {
- gdk_threads_leave();
- return -1;
- }
-
- return 0;
-}
-
-
-int wxEntryInitGui()
-{
- int retValue = 0;
-
- if ( !wxTheApp->OnInitGui() )
- retValue = -1;
-
- wxGetRootWindow();
-
- return retValue;
-}
-
-
-void wxEntryCleanup()
-{
-#if wxUSE_LOG
- // flush the logged messages if any
- wxLog *log = wxLog::GetActiveTarget();
- if (log != NULL && log->HasPendingMessages())
- log->Flush();
-
- // continuing to use user defined log target is unsafe from now on because
- // some resources may be already unavailable, so replace it by something
- // more safe
- wxLog *oldlog = wxLog::SetActiveTarget(new wxLogStderr);
- if ( oldlog )
- delete oldlog;
-#endif // wxUSE_LOG
-
- wxApp::CleanUp();
-
- gdk_threads_leave();
-}
-
-
-int wxEntry( int argc, char *argv[] )
-{
-#if (defined(__WXDEBUG__) && wxUSE_MEMORY_TRACING) || wxUSE_DEBUG_CONTEXT
- // This seems to be necessary since there are 'rogue'
- // objects present at this point (perhaps global objects?)
- // Setting a checkpoint will ignore them as far as the
- // memory checking facility is concerned.
- // Of course you may argue that memory allocated in globals should be
- // checked, but this is a reasonable compromise.
- wxDebugContext::SetCheckpoint();
-#endif
- int err = wxEntryStart(argc, argv);
- if (err)
- return err;
-
- if (!wxTheApp)
+#else // !wxUSE_WCHAR_T
+ if (!wxOKlibc())
+ wxConvCurrent = (wxMBConv*) NULL;
+#endif // wxUSE_WCHAR_T/!wxUSE_WCHAR_T
+
+ // decide which conversion to use for the file names
+
+ // (1) this variable exists for the sole purpose of specifying the encoding
+ // of the filenames for GTK+ programs, so use it if it is set
+ wxString encName(wxGetenv(_T("G_FILENAME_ENCODING")));
+ encName = encName.BeforeFirst(_T(','));
+ if (encName == _T("@locale"))
+ encName.clear();
+ encName.MakeUpper();
+#if wxUSE_INTL
+ if (encName.empty())