#include "wx/intl.h"
 
 #include <ctype.h>
+#ifdef __EMX__
+#include <dirent.h>
+#else
 #include <direct.h>
+#endif
 
 #include "wx/log.h"
 
 #define INCL_GPI
 #include <os2.h>
 #define PURE_32
+#ifndef __EMX__
 #include <upm.h>
 #include <netcons.h>
 #include <netbios.h>
+#endif
 
 static const wxChar WX_SECTION[] = _T("wxWindows");
 static const wxChar eHOSTNAME[]  = _T("HostName");
     char                            zServer[256];
     char                            zComputer[256];
     unsigned long                   ulLevel = 0;
-    unsigned char*                  zBuffer;
-    unsigned long                   ulBuffer;
-    unsigned long*                  pulTotalAvail;
+    unsigned char*                  zBuffer = NULL;
+    unsigned long                   ulBuffer = 256;
+    unsigned long*                  pulTotalAvail = NULL;
 
     NetBios32GetInfo( (const unsigned char*)zServer
                      ,(const unsigned char*)zComputer
 , int                               nType
 )
 {
+#ifndef __EMX__
     long                            lrc;
     // UPM procs return 0 on success
     lrc = U32ELOCU((unsigned char*)zBuf, (unsigned long *)&nType);
     if (lrc == 0) return TRUE;
+#endif
     return FALSE;
 }
 
 // Get free memory in bytes, or -1 if cannot determine amount (e.g. on UNIX)
 long wxGetFreeMemory()
 {
-    void*                           pMemptr;
+    void*                           pMemptr = NULL;
     ULONG                           lSize;
     ULONG                           lMemFlags;
     APIRET                          rc;
 , const wxString&                   rFile
 )
 {
-    HAB                             hab;
-    HINI                            hIni;
+    HAB                             hab = 0;
+    HINI                            hIni = 0;
 
     if (rFile != "")
     {
 , const wxString&                   rFile
 )
 {
-    HAB                             hab;
-    HINI                            hIni;
+    HAB                             hab = 0;
+    HINI                            hIni = 0;
     wxChar                          zDefunkt[] = _T("$$default");
     char                            zBuf[1000];
 
     wxString                        sUser1(rUser);
 
     wxBuffer = new wxChar[256];
+#ifndef __EMX__
     if (sUser1 != _T(""))
     {
         wxChar                      zTmp[64];
                 sUser1 = _T("");
         }
     }
+#endif
     if (sUser1 == _T(""))
     {
         if ((zHome = wxGetenv(_T("HOME"))) != NULL)
     if(pWnd)
     {
         QMSG                        vMsg;
-        HAB                         hab;
-        HWND                        hwndFilter;
+        HAB                         hab = 0;
+        HWND                        hwndFilter = NULLHANDLE;
         HWND                        hwndWin= (HWND) pWnd->GetHWND();
 
         while(::WinPeekMsg(hab, &vMsg, hwndFilter, 0, 0, PM_REMOVE))