]> git.saurik.com Git - wxWidgets.git/blobdiff - src/unix/utilsunx.cpp
*** empty log message ***
[wxWidgets.git] / src / unix / utilsunx.cpp
index 5ce6dc6c1160045638b3f118cd029185c3b20a4e..79c2431059ce100f3c97fe8251c64c019beefafd 100644 (file)
     };
 #endif // Unices without usleep()
 
+#ifdef __EMX__
+  /* I copied this from the XFree86 diffs. AV. */
+extern void DosSleep(unsigned long);
+#define INCL_DOSPROCESS
+#include <os2.h>
+void usleep(unsigned long delay)
+{
+    DosSleep(delay ? (delay/1000l) : 1l);
+}
+#endif
+
 // ============================================================================
 // implementation
 // ============================================================================
@@ -244,7 +255,7 @@ long wxExecute( wxChar **argv, bool sync, wxProcess *process )
     char *mb_argv[WXEXECUTE_NARGS];
 
     while (argv[mb_argc]) {
-      wxWX2MBbuf mb_arg = wxConv_libc.cWX2MB(argv[mb_argc]);
+      wxWX2MBbuf mb_arg = wxConvCurrent->cWX2MB(argv[mb_argc]);
       mb_argv[mb_argc] = strdup(mb_arg);
       mb_argc++;
     }
@@ -257,11 +268,16 @@ long wxExecute( wxChar **argv, bool sync, wxProcess *process )
     if (pipe(end_proc_detect) == -1)
     {
         wxLogSysError( _("Pipe creation failed") );
+#if wxUSE_UNICODE
+       mb_argc = 0;
+       while (mb_argv[mb_argc])
+         free(mb_argv[mb_argc++]);
+#endif
         return 0;
     }
 
     // fork the process
-#ifdef HAVE_VFORK
+#if HAVE_VFORK
     pid_t pid = vfork();
 #else
     pid_t pid = fork();
@@ -269,6 +285,11 @@ long wxExecute( wxChar **argv, bool sync, wxProcess *process )
     if (pid == -1)
     {
         wxLogSysError( _("Fork failed") );
+#if wxUSE_UNICODE
+       mb_argc = 0;
+       while (mb_argv[mb_argc])
+         free(mb_argv[mb_argc++]);
+#endif
         return 0;
     }
     else if (pid == 0)
@@ -383,7 +404,7 @@ char *wxGetUserHome( const wxString &user )
         }
         if ((ptr = wxGetenv(_T("USER"))) != NULL || (ptr = wxGetenv(_T("LOGNAME"))) != NULL)
         {
-            who = getpwnam(wxConv_libc.cWX2MB(ptr));
+            who = getpwnam(wxConvCurrent->cWX2MB(ptr));
         }
 
         // We now make sure the the user exists!
@@ -398,7 +419,7 @@ char *wxGetUserHome( const wxString &user )
     }
 
 #if wxUSE_UNICODE
-    return who ? wxConv_libc.cMB2WX(who->pw_dir) : (wxMB2WXbuf)((wxChar*)NULL);
+    return who ? wxConvCurrent->cMB2WX(who->pw_dir) : (wxMB2WXbuf)((wxChar*)NULL);
 #else
     return who ? who->pw_dir : ((char*)NULL);
 #endif
@@ -423,7 +444,7 @@ static bool wxGetHostNameInternal(wxChar *buf, int sz)
     bool ok = uname(&uts) != -1;
     if ( ok )
     {
-        wxStrncpy(buf, wxConv_libc.cMB2WX(uts.nodename), sz - 1);
+        wxStrncpy(buf, wxConvCurrent->cMB2WX(uts.nodename), sz - 1);
         buf[sz] = _T('\0');
     }
 #elif defined(HAVE_GETHOSTNAME)
@@ -469,7 +490,7 @@ bool wxGetFullHostName(wxChar *buf, int sz)
     {
         if ( !wxStrchr(buf, _T('.')) )
         {
-            struct hostent *host = gethostbyname(wxConv_libc.cWX2MB(buf));
+            struct hostent *host = gethostbyname(wxConvCurrent->cWX2MB(buf));
             if ( !host )
             {
                 wxLogSysError(_("Cannot get the official hostname"));
@@ -479,7 +500,7 @@ bool wxGetFullHostName(wxChar *buf, int sz)
             else
             {
                 // the canonical name
-                wxStrncpy(buf, wxConv_libc.cMB2WX(host->h_name), sz);
+                wxStrncpy(buf, wxConvCurrent->cMB2WX(host->h_name), sz);
             }
         }
         //else: it's already a FQDN (BSD behaves this way)
@@ -495,7 +516,7 @@ bool wxGetUserId(wxChar *buf, int sz)
     *buf = _T('\0');
     if ((who = getpwuid(getuid ())) != NULL)
     {
-        wxStrncpy (buf, wxConv_libc.cMB2WX(who->pw_name), sz - 1);
+        wxStrncpy (buf, wxConvCurrent->cMB2WX(who->pw_name), sz - 1);
         return TRUE;
     }
 
@@ -512,7 +533,7 @@ bool wxGetUserName(wxChar *buf, int sz)
        comma = strchr(who->pw_gecos, ',');
        if (comma)
            *comma = '\0'; // cut off non-name comment fields
-       wxStrncpy (buf, wxConv_libc.cMB2WX(who->pw_gecos), sz - 1);
+       wxStrncpy (buf, wxConvCurrent->cMB2WX(who->pw_gecos), sz - 1);
        return TRUE;
     }