XS-libcares
view release on metacpan or search on metacpan
c-ares-1.34.3/test/ares-test.h view on Meta::CPAN
const char *filename() const
{
return filename_.c_str();
}
};
#ifdef _WIN32
extern "C" {
static int setenv(const char *name, const char *value, int overwrite)
{
char *buffer;
size_t buf_size;
if (name == NULL) {
return -1;
}
if (value == NULL) {
value = ""; /* For unset */
c-ares-1.34.3/test/ares-test.h view on Meta::CPAN
}
buf_size = strlen(name) + strlen(value) + 1 /* = */ + 1 /* NULL */;
buffer = (char *)malloc(buf_size);
_snprintf(buffer, buf_size, "%s=%s", name, value);
_putenv(buffer);
free(buffer);
return 0;
}
static int unsetenv(const char *name)
{
return setenv(name, NULL, 1);
}
} /* extern "C" */
#endif
// RAII class for a temporary environment variable value.
class EnvValue {
public:
EnvValue(const char *name, const char *value) : name_(name), restore_(false)
{
char *original = getenv(name);
if (original) {
restore_ = true;
original_ = original;
}
setenv(name_.c_str(), value, 1);
}
~EnvValue()
{
if (restore_) {
setenv(name_.c_str(), original_.c_str(), 1);
} else {
unsetenv(name_.c_str());
}
}
private:
std::string name_;
bool restore_;
std::string original_;
};
( run in 0.291 second using v1.01-cache-2.11-cpan-0a6323c29d9 )