X-Git-Url: http://git.iain.cx/?a=blobdiff_plain;f=env.cpp;h=a1ca9004e29274ed5e4ed4d16df7f121259de724;hb=d47dca0afe81c1c8e75c518da5a51829e61ad1cd;hp=9945d204bf8837e01ad45a28cc018270bd1d1cca;hpb=4643e3384cb6a844aa7817c489c068f6fcd63e22;p=nssm.git diff --git a/env.cpp b/env.cpp index 9945d20..a1ca900 100644 --- a/env.cpp +++ b/env.cpp @@ -129,8 +129,7 @@ int duplicate_environment(TCHAR *rawenv) { -1 on error. */ int test_environment(TCHAR *env) { - TCHAR path[PATH_LENGTH]; - GetModuleFileName(0, path, _countof(path)); + TCHAR *path = (TCHAR *) nssm_imagepath(); STARTUPINFO si; ZeroMemory(&si, sizeof(si)); si.cb = sizeof(si); @@ -171,3 +170,12 @@ void duplicate_environment_strings(TCHAR *env) { duplicate_environment(newenv); HeapFree(GetProcessHeap(), 0, newenv); } + +/* Safely get a copy of the current environment. */ +TCHAR *copy_environment() { + TCHAR *rawenv = GetEnvironmentStrings(); + if (! rawenv) return NULL; + TCHAR *env = copy_environment_block(rawenv); + FreeEnvironmentStrings(rawenv); + return env; +}