diff options
| author | Stefan Boberg <[email protected]> | 2026-04-27 15:05:16 +0200 |
|---|---|---|
| committer | GitHub Enterprise <[email protected]> | 2026-04-27 15:05:16 +0200 |
| commit | 6804dc6ff62c477399183dc85d2ad387298aa49d (patch) | |
| tree | f4153a901c758b9e385627b43f1606f8c2129a04 /src/zenutil/authutils.cpp | |
| parent | 5.8.9-pre3 (diff) | |
| download | archived-zen-6804dc6ff62c477399183dc85d2ad387298aa49d.tar.xz archived-zen-6804dc6ff62c477399183dc85d2ad387298aa49d.zip | |
GetEnvVariable: return std::optional<std::string> (#1017)
- `GetEnvVariable` now returns `std::optional<std::string>` so callers can distinguish an unset variable from one set to an empty value.
- Windows path uses `SetLastError(ERROR_SUCCESS)` + `ERROR_ENVVAR_NOT_FOUND` to detect "not found"; POSIX path returns `nullopt` when `getenv` returns `nullptr`.
- All call sites migrated. Most use `.value_or("")` to preserve current empty-or-unset behavior. The diagnostic helpers in `zen-test/artifactprovider-tests.cpp` now report `<unset>` vs `<empty>` distinctly.
- Added a check in the `ExpandEnvironmentVariables` test confirming `nullopt` for an unset variable; PATH/HOME lookups in that test use `REQUIRE(has_value())` so a missing var fails cleanly instead of throwing `bad_optional_access`.
Diffstat (limited to 'src/zenutil/authutils.cpp')
| -rw-r--r-- | src/zenutil/authutils.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/zenutil/authutils.cpp b/src/zenutil/authutils.cpp index 8ee6b1417..3945c1c62 100644 --- a/src/zenutil/authutils.cpp +++ b/src/zenutil/authutils.cpp @@ -24,7 +24,7 @@ FindOidcTokenExePath(std::string_view OidcTokenAuthExecutablePath) { if (OidcTokenAuthExecutablePath.empty()) { - std::filesystem::path OidcTokenPath = GetEnvVariable(GetOidcTokenPathEnvVariableName()); + std::filesystem::path OidcTokenPath = GetEnvVariable(GetOidcTokenPathEnvVariableName()).value_or(""); if (IsFile(OidcTokenPath)) { return OidcTokenPath; |