42 lines
944 B
C
42 lines
944 B
C
|
#pragma once
|
||
|
|
||
|
#include <c10/util/Exception.h>
|
||
|
#include <cstdlib>
|
||
|
#include <cstring>
|
||
|
#include <optional>
|
||
|
|
||
|
namespace c10::utils {
|
||
|
// Reads an environment variable and returns
|
||
|
// - optional<true>, if set equal to "1"
|
||
|
// - optional<false>, if set equal to "0"
|
||
|
// - nullopt, otherwise
|
||
|
//
|
||
|
// NB:
|
||
|
// Issues a warning if the value of the environment variable is not 0 or 1.
|
||
|
inline std::optional<bool> check_env(const char* name) {
|
||
|
#ifdef _MSC_VER
|
||
|
#pragma warning(push)
|
||
|
#pragma warning(disable : 4996)
|
||
|
#endif
|
||
|
auto envar = std::getenv(name);
|
||
|
#ifdef _MSC_VER
|
||
|
#pragma warning(pop)
|
||
|
#endif
|
||
|
if (envar) {
|
||
|
if (strcmp(envar, "0") == 0) {
|
||
|
return false;
|
||
|
}
|
||
|
if (strcmp(envar, "1") == 0) {
|
||
|
return true;
|
||
|
}
|
||
|
TORCH_WARN(
|
||
|
"Ignoring invalid value for boolean flag ",
|
||
|
name,
|
||
|
": ",
|
||
|
envar,
|
||
|
"valid values are 0 or 1.");
|
||
|
}
|
||
|
return std::nullopt;
|
||
|
}
|
||
|
} // namespace c10::utils
|