You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-07 12:30:27 +00:00
OS: Add unset_environment, better validate input
Instead of returning an undocumented boolean error code, we do the validation checks that should ensure a successful result. Based on: - https://linux.die.net/man/3/setenv - https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-setenvironmentvariable
This commit is contained in:
@@ -411,10 +411,6 @@ bool OS_Unix::is_process_running(const ProcessID &p_pid) const {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool OS_Unix::has_environment(const String &p_var) const {
|
||||
return getenv(p_var.utf8().get_data()) != nullptr;
|
||||
}
|
||||
|
||||
String OS_Unix::get_locale() const {
|
||||
if (!has_environment("LANG")) {
|
||||
return "en";
|
||||
@@ -487,6 +483,10 @@ Error OS_Unix::set_cwd(const String &p_cwd) {
|
||||
return OK;
|
||||
}
|
||||
|
||||
bool OS_Unix::has_environment(const String &p_var) const {
|
||||
return getenv(p_var.utf8().get_data()) != nullptr;
|
||||
}
|
||||
|
||||
String OS_Unix::get_environment(const String &p_var) const {
|
||||
if (getenv(p_var.utf8().get_data())) {
|
||||
return getenv(p_var.utf8().get_data());
|
||||
@@ -494,8 +494,15 @@ String OS_Unix::get_environment(const String &p_var) const {
|
||||
return "";
|
||||
}
|
||||
|
||||
bool OS_Unix::set_environment(const String &p_var, const String &p_value) const {
|
||||
return setenv(p_var.utf8().get_data(), p_value.utf8().get_data(), /* overwrite: */ true) == 0;
|
||||
void OS_Unix::set_environment(const String &p_var, const String &p_value) const {
|
||||
ERR_FAIL_COND_MSG(p_var.is_empty() || p_var.contains("="), vformat("Invalid environment variable name '%s', cannot be empty or include '='.", p_var));
|
||||
int err = setenv(p_var.utf8().get_data(), p_value.utf8().get_data(), /* overwrite: */ 1);
|
||||
ERR_FAIL_COND_MSG(err != 0, vformat("Failed setting environment variable '%s', the system is out of memory.", p_var));
|
||||
}
|
||||
|
||||
void OS_Unix::unset_environment(const String &p_var) const {
|
||||
ERR_FAIL_COND_MSG(p_var.is_empty() || p_var.contains("="), vformat("Invalid environment variable name '%s', cannot be empty or include '='.", p_var));
|
||||
unsetenv(p_var.utf8().get_data());
|
||||
}
|
||||
|
||||
String OS_Unix::get_user_data_dir() const {
|
||||
|
||||
Reference in New Issue
Block a user