]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/utils.cpp
Use t_str() instead of c_str()
[wxWidgets.git] / src / os2 / utils.cpp
index 142878fd26feec4fa6ee7b69c7e84214db4f2390..14d2c6b3e19d13da73d22591ecb62aea4485490f 100644 (file)
@@ -241,6 +241,14 @@ bool wxGetEnv(const wxString& var, wxString *value)
 static bool wxDoSetEnv(const wxString& variable, const char *value)
 {
 #if defined(HAVE_SETENV)
 static bool wxDoSetEnv(const wxString& variable, const char *value)
 {
 #if defined(HAVE_SETENV)
+    if ( !value ) 
+    { 
+#ifdef HAVE_UNSETENV 
+        return unsetenv(variable.mb_str()) == 0; 
+#else 
+        value = _T(""); // mustn't pass NULL to setenv() 
+#endif 
+    } 
     return setenv(variable.mb_str(), value, 1 /* overwrite */) == 0;
 #elif defined(HAVE_PUTENV)
     wxString s = variable;
     return setenv(variable.mb_str(), value, 1 /* overwrite */) == 0;
 #elif defined(HAVE_PUTENV)
     wxString s = variable;
@@ -394,55 +402,45 @@ const wxChar* wxGetHomeDir(
     return rStrDir.c_str();
 }
 
     return rStrDir.c_str();
 }
 
-// Hack for OS/2
-wxChar* wxGetUserHome ( const wxString &rUser )
+wxString wxGetUserHome ( const wxString &rUser )
 {
     wxChar*    zHome;
 {
     wxChar*    zHome;
-    wxString   sUser1(rUser);
+    wxString   sUser(rUser);
+
+    wxString home;
 
 
-    wxChar *wxBuffer = new wxChar[256];
 #ifndef __EMX__
 #ifndef __EMX__
-    if (!sUser1.empty())
+    if (!sUser.empty())
     {
     {
-        wxChar                      zTmp[64];
+        const wxString currentUser = wxGetUserId();
 
 
-        if (wxGetUserId( zTmp
-                        ,sizeof(zTmp)/sizeof(char)
-                       ))
+        // Guests belong in the temp dir
+        if ( currentUser == "annonymous" )
         {
         {
-            // Guests belong in the temp dir
-            if (wxStricmp(zTmp, _T("annonymous")) == 0)
-            {
-                if ((zHome = wxGetenv(_T("TMP"))) != NULL    ||
-                    (zHome = wxGetenv(_T("TMPDIR"))) != NULL ||
-                    (zHome = wxGetenv(_T("TEMP"))) != NULL)
-                    delete[] wxBuffer;
-                    return *zHome ? zHome : (wxChar*)_T("\\");
-            }
-            if (wxStricmp(zTmp, WXSTRINGCAST sUser1) == 0)
-                sUser1 = wxEmptyString;
+            zHome = wxGetenv(_T("TMP"));
+            if ( !zHome )
+                zHome = wxGetenv(_T("TMPDIR"));
+            if ( !zHome )
+                zHome = wxGetenv(_T("TEMP"));
+
+            if ( zHome && *zHome )
+                return zHome;
         }
         }
+
+        if ( sUser == currentUser )
+            sUser.clear();
     }
 #endif
     }
 #endif
-    if (sUser1.empty())
+    if (sUser.empty())
     {
         if ((zHome = wxGetenv(_T("HOME"))) != NULL)
         {
     {
         if ((zHome = wxGetenv(_T("HOME"))) != NULL)
         {
-            wxStrcpy(wxBuffer, zHome);
-            wxUnix2DosFilename(wxBuffer);
-#if wxUSE_UNICODE
-            wxWCharBuffer retBuffer (wxBuffer);
-            delete[] wxBuffer;
-            return retBuffer;
-#else
-            wxStrcpy(zHome, wxBuffer);
-            delete[] wxBuffer;
-            return zHome;
-#endif
+            home = zHome;
+            home.Replace("/", "\\");
         }
     }
         }
     }
-    delete[] wxBuffer;
-    return (wxChar*)wxEmptyString; // No home known!
+
+    return home;
 }
 
 bool wxGetDiskSpace(const wxString& path,
 }
 
 bool wxGetDiskSpace(const wxString& path,