-// ANNA - Anna is Not 'N' Anymore
+// ANNA - Anna is Not Nothingness Anymore
//
// (c) Copyright 2005-2014 Eduardo Ramos Testillano & Francisco Ruiz Rayo
//
-// https://bitbucket.org/testillano/anna
+// http://redmine.teslayout.com/projects/anna-suite
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
-// * Neither the name of Google Inc. nor the names of its
+// * Neither the name of the copyright holder nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
LOGMETHOD(TraceMethod tm("Environment", "initialize", ANNA_FILE_LOCATION));
// clear data
a_vars.clear();
- if (!envp) return;
+
+ if(!envp) return;
// register data
std::string assignment, var, val;
- while (*envp) {
- assignment = *envp;
+
+ while(*envp) {
+ assignment = *envp;
std::size_t equalPos = assignment.find("=");
- if (equalPos != string::npos) { // protection
+
+ if(equalPos != string::npos) { // protection
var = assignment.substr(0, equalPos - 1);
val = assignment.substr(equalPos, assignment.size() - 1);
a_vars[var] = val;
}
+
envp++;
}
}
throw RuntimeException("Invalid NULL variable name!", ANNA_FILE_LOCATION);
std::string var = variableName;
-
return getValue(var, exceptionIfMissing);
}
std::string Environment::getValue(const std::string &variableName, bool exceptionIfMissing) throw(RuntimeException) {
std::string result = "";
-
std::map<std::string, std::string>::const_iterator it = a_vars.find(variableName);
if(it == a_vars.end()) {
- char *current = getenv (variableName.c_str());
- if (!current) {
+ char *current = getenv(variableName.c_str());
+
+ if(!current) {
std::string msg = "The variable '";
msg += variableName;
msg += "' is not defined in the environment.";
LOGDEBUG(Logger::debug(msg, ANNA_FILE_LOCATION));
if(exceptionIfMissing) throw RuntimeException(msg, ANNA_FILE_LOCATION);
- }
- else {
+ } else {
// assignment
a_vars[variableName] = current;
result = current;
}
- }
- else {
+ } else {
result = it->second;
}
void Environment::setVariable(const std::string &name, const std::string &value, bool overwrite) throw(RuntimeException) {
+ if(name == "") throw RuntimeException("Must provide non-empty variable name", ANNA_FILE_LOCATION);
- if (name == "") throw RuntimeException("Must provide non-empty variable name", ANNA_FILE_LOCATION);
-
- if(setenv(name.c_str(), value.c_str(), overwrite ? 1:0) != 0) {
+ if(setenv(name.c_str(), value.c_str(), overwrite ? 1 : 0) != 0) {
std::string msg = "Cannot set the environment variable '";
msg += name;
msg += "=\"";
msg += value;
msg += "\"'. The errno is ";
msg += anna::functions::asString(errno);
-
throw RuntimeException(msg, ANNA_FILE_LOCATION);
}
// optimization
- if (overwrite)
+ if(overwrite)
a_vars[name] = value;
}
void Environment::unsetVariable(const std::string &name) throw(RuntimeException) {
-
- if (name == "") throw RuntimeException("Must provide non-empty variable name", ANNA_FILE_LOCATION);
+ if(name == "") throw RuntimeException("Must provide non-empty variable name", ANNA_FILE_LOCATION);
if(unsetenv(name.c_str()) != 0) {
std::string msg = "Cannot unset the environment variable named '";
msg += name;
msg += "'. The errno is ";
msg += anna::functions::asString(errno);
-
throw RuntimeException(msg, ANNA_FILE_LOCATION);
}
std::map<std::string, std::string>::iterator it = a_vars.find(name);
+
if(it != a_vars.end()) a_vars.erase(it);
}