summaryrefslogtreecommitdiff
path: root/sal/osl/w32/process.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sal/osl/w32/process.cxx')
-rw-r--r--sal/osl/w32/process.cxx29
1 files changed, 29 insertions, 0 deletions
diff --git a/sal/osl/w32/process.cxx b/sal/osl/w32/process.cxx
index 758100fc3417..8cb92e9257c3 100644
--- a/sal/osl/w32/process.cxx
+++ b/sal/osl/w32/process.cxx
@@ -448,6 +448,35 @@ void SAL_CALL osl_setCommandArgs (int argc, char ** argv)
#define ENV_BUFFER_SIZE (32*1024-1)
+oslProcessError SAL_CALL osl_getAllEnvironment(rtl_uString **ppustrVars)
+{
+ sal_uInt32 countenv;
+ LPTCH environ = GetEnvironmentStrings();
+
+ for (LPSTR **env = environ; *env; ++env)
+ countenv++;
+
+ if (ppustrVars)
+ {
+ rtl_uString **temp;
+ for (temp = ppustrVars; *temp; ++temp)
+ rtl_freeMemory(*temp);
+
+ rtl_freeMemory(temp);
+ }
+
+ ppustrVars = static_cast<rtl_uString**>(rtl_allocateMemory(sizeof(rtl_uString*) * countenv));
+
+ for (char **env = environ; *env; ++env, ++ppustrVars)
+ {
+ rtl_uString *pstrTmp = nullptr;
+ rtl_uString_newFromAscii(&pstrTmp, *env);
+ ppustrVars = &pstrTmp;
+ }
+ return osl_Process_E_None;
+}
+
+
oslProcessError SAL_CALL osl_getEnvironment(rtl_uString *ustrVar, rtl_uString **ustrValue)
{
WCHAR buff[ENV_BUFFER_SIZE];