+ TCHAR *env;\r
+ unsigned long envlen;\r
+\r
+ /* Copy our environment for the application. */\r
+ if (! service->env) {\r
+ TCHAR *rawenv = GetEnvironmentStrings();\r
+ env = rawenv;\r
+ if (env) {\r
+ /*\r
+ The environment block starts with variables of the form\r
+ =C:=C:\Windows\System32 which we ignore.\r
+ */\r
+ while (*env == _T('=')) {\r
+ for ( ; *env; env++);\r
+ env++;\r
+ }\r
+ envlen = 0;\r
+ if (*env) {\r
+ while (true) {\r
+ for ( ; env[envlen]; envlen++);\r
+ if (! env[++envlen]) break;\r
+ }\r
+ envlen++;\r
+\r
+ service->envlen = envlen * sizeof(TCHAR);\r
+ service->env = (TCHAR *) HeapAlloc(GetProcessHeap(), 0, service->envlen);\r
+ memmove(service->env, env, service->envlen);\r
+ FreeEnvironmentStrings(rawenv);\r
+ }\r
+ }\r
+ }\r
+\r
+ /* Append extra variables to configured variables. */\r