示例#1
0
void environment(Options* pEnvironment)
{
   // get all environment strings (as unicode)
   LPWSTR lpEnv = ::GetEnvironmentStringsW();
   if (lpEnv == NULL)
   {
      LOG_ERROR(systemError(::GetLastError(), ERROR_LOCATION));
      return;
   }

   // iterate over them
   LPWSTR lpszEnvVar = NULL;
   for (lpszEnvVar = lpEnv; *lpszEnvVar; lpszEnvVar++)
   {
      // get the variable
      std::wstring envVarWide;
      while (*lpszEnvVar)
      {
         wchar_t ch = *lpszEnvVar;
         envVarWide.append(1, ch);
         lpszEnvVar++;
      }

      // convert to utf8 and parse
      Option envVar;
      if (parseEnvVar(string_utils::wideToUtf8(envVarWide), &envVar))
         pEnvironment->push_back(envVar);
   }


   // free environment strings
   if (!::FreeEnvironmentStringsW(lpEnv))
      LOG_ERROR(systemError(::GetLastError(), ERROR_LOCATION));
}
示例#2
0
void environment(Options* pEnvironment)
{
   for (char **env = environ; *env; ++env)
   {
      Option envVar;
      if (parseEnvVar(std::string(*env), &envVar))
         pEnvironment->push_back(envVar);
   }
}