| 210 | } |
| 211 | |
| 212 | std::optional<std::string> FindEnvironmentVariable(const std::vector<wchar_t>& environment, std::wstring_view name) { |
| 213 | if (name.empty()) return std::nullopt; |
| 214 | |
| 215 | size_t offset = 0; |
| 216 | while (offset < environment.size() && environment[offset] != L'\0') { |
| 217 | const wchar_t* entry = environment.data() + offset; |
| 218 | const size_t entryLength = wcslen(entry); |
| 219 | if (entryLength > name.size() && |
| 220 | entry[name.size()] == L'=' && |
| 221 | _wcsnicmp(entry, name.data(), name.size()) == 0) { |
| 222 | return Encoding::WideToUtf8(std::wstring_view(entry + name.size() + 1, entryLength - name.size() - 1)); |
| 223 | } |
| 224 | offset += entryLength + 1; |
| 225 | } |
| 226 | |
| 227 | return std::nullopt; |
| 228 | } |
| 229 | |
| 230 | } // namespace |
| 231 |
no test coverage detected