]> git.saurik.com Git - wxWidgets.git/commitdiff
wxSetEnv for Win32 (now seems to work)
authorVadim Zeitlin <vadim@wxwidgets.org>
Mon, 27 Nov 2000 00:21:29 +0000 (00:21 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Mon, 27 Nov 2000 00:21:29 +0000 (00:21 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@8840 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/latex/wx/function.tex
include/wx/utils.h
samples/console/console.cpp
src/msw/utils.cpp
src/unix/utilsunx.cpp

index 6c8dc48c2f1fcacadfb17030effbeb5eeec99892..ca75cff21afe791948136e084118a606de67809a 100644 (file)
@@ -2977,12 +2977,26 @@ Win32 and POSIX-like systems (Unix).
 
 <wx/utils.h>
 
-\membersection{wxGetEnv}\label{wxgetenv}
+\membersection{wxGetenv}\label{wxgetenvmacro}
 
 \func{wxChar *}{wxGetEnv}{\param{const wxString\&}{ var}}
 
-Returns the current value of the environment variable {\it var} or {\tt NULL} 
-if it doesn't exist.
+This is a macro defined as {\tt getenv()} or its wide char version in Unicode
+mode.
+
+Note that under Win32 it may not return correct value for the variables set
+with \helpref{wxSetEnv}{wxsetenv}, use \helpref{wxGetEnv}{wxgetenv} function
+instead.
+
+\membersection{wxGetEnv}\label{wxgetenv}
+
+\func{bool}{wxGetEnv}{\param{const wxString\&}{ var}, \param{wxString *}{value}}
+
+Returns the current value of the environment variable {\it var} in {\it value}.
+{\it value} may be {\tt NULL} if you just want to know if the variable exists
+and are not interested in its value.
+
+Returns {\tt TRUE} if the variable exists, {\tt FALSE} otherwise.
 
 \membersection{wxSetEnv}\label{wxsetenv}
 
index abb225b1eae35cf1684de46d26c21cde01cb903e..09094b4877881b4f2edb8108e1bc72366b3fcf06 100644 (file)
@@ -207,9 +207,9 @@ WXDLLEXPORT bool wxHandleFatalExceptions(bool doit = TRUE);
 // Environment variables
 // ----------------------------------------------------------------------------
 
-// wxGetenv is declared in wxchar.h, but define a wrapper/synonym for it for
-// consistency with wxSetEnv
-inline const wxChar *wxGetEnv(const wxString& var) { return wxGetenv(var); }
+// returns TRUE if variable exists (value may be NULL if you just want to check
+// for this)
+WXDLLEXPORT bool wxGetEnv(const wxString& var, wxString *value);
 
 // set the env var name to the given value, return TRUE on success
 WXDLLEXPORT bool wxSetEnv(const wxString& var, const wxChar *value);
index 39fade1b34c6689e58e0a27bd4da763aea59df07..bf78c7d95736fd0234b173e4a0d75da312f3b6f9 100644 (file)
@@ -292,19 +292,31 @@ static void TestDllLoad()
 
 #include <wx/utils.h>
 
+static wxString MyGetEnv(const wxString& var)
+{
+    wxString val;
+    if ( !wxGetEnv(var, &val) )
+        val = _T("<empty>");
+    else
+        val = wxString(_T('\'')) + val + _T('\'');
+
+    return val;
+}
+
 static void TestEnvironment()
 {
     const wxChar *var = _T("wxTestVar");
 
     puts("*** testing environment access functions ***");
 
-    printf("Initially getenv(%s) = '%s'\n", var, wxGetenv(var));
+    printf("Initially getenv(%s) = %s\n", var, MyGetEnv(var).c_str());
     wxSetEnv(var, _T("value for wxTestVar"));
-    printf("After wxSetEnv: getenv(%s) = '%s'\n",  var, wxGetenv(var));
+    printf("After wxSetEnv: getenv(%s) = %s\n",  var, MyGetEnv(var).c_str());
     wxSetEnv(var, _T("another value"));
-    printf("After 2nd wxSetEnv: getenv(%s) = '%s'\n",  var, wxGetenv(var));
+    printf("After 2nd wxSetEnv: getenv(%s) = %s\n",  var, MyGetEnv(var).c_str());
     wxUnsetEnv(var);
-    printf("After wxUnsetEnv: getenv(%s) = '%s'\n",  var, wxGetenv(var));
+    printf("After wxUnsetEnv: getenv(%s) = %s\n",  var, MyGetEnv(var).c_str());
+    printf("PATH = %s\n",  MyGetEnv(_T("PATH")));
 }
 
 #endif // TEST_ENVIRON
index 0c647be3b590e45b615e08e03110a8739844517a..3d64ac17052c8951bea4e8d03502424588781eab 100644 (file)
@@ -457,6 +457,29 @@ bool wxDirExists(const wxString& dir)
 #endif // Win32/16
 }
 
+// ----------------------------------------------------------------------------
+// env vars
+// ----------------------------------------------------------------------------
+
+bool wxGetEnv(const wxString& var, wxString *value)
+{
+    // first get the size of the buffer
+    DWORD dwRet = ::GetEnvironmentVariable(var, NULL, 0);
+    if ( !dwRet )
+    {
+        // this means that there is no such variable
+        return FALSE;
+    }
+
+    if ( value )
+    {
+        (void)::GetEnvironmentVariable(var, value->GetWriteBuf(dwRet), dwRet);
+        value->UngetWriteBuf();
+    }
+
+    return TRUE;
+}
+
 bool wxSetEnv(const wxString& var, const wxChar *value)
 {
     // some compilers have putenv() or _putenv() or _wputenv() but it's better
index f7b404b19e17994dbda84f7a06d25cab1b22b577..0c2e7f37d2060bce39e5a32cc4a5c74a0dfe89a1 100644 (file)
@@ -873,6 +873,21 @@ long wxGetFreeMemory()
 // env vars
 // ----------------------------------------------------------------------------
 
+bool wxGetEnv(const wxString& var, wxString *value);
+{
+    // wxGetenv is defined as getenv()
+    wxChar *p = wxGetenv(var);
+    if ( !p )
+        return FALSE;
+
+    if ( value )
+    {
+        *value = p;
+    }
+
+    return TRUE;
+}
+
 bool wxSetEnv(const wxString& variable, const wxChar *value)
 {
 #if defined(HAVE_SETENV)