浏览代码

Added set_environment to OS class

Ignacio Etcheverry 6 年之前
父节点
当前提交
41873ffa88

+ 1 - 0
core/os/os.h

@@ -266,6 +266,7 @@ public:
 
 	virtual bool has_environment(const String &p_var) const = 0;
 	virtual String get_environment(const String &p_var) const = 0;
+	virtual bool set_environment(const String &p_var, const String &p_value) const = 0;
 
 	virtual String get_name() = 0;
 	virtual List<String> get_cmdline_args() const { return _cmdline; }

+ 5 - 0
drivers/unix/os_unix.cpp

@@ -469,6 +469,11 @@ 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_var.utf8().get_data(), /* overwrite: */ true) == 0;
+}
+
 int OS_Unix::get_processor_count() const {
 
 	return sysconf(_SC_NPROCESSORS_CONF);

+ 1 - 0
drivers/unix/os_unix.h

@@ -95,6 +95,7 @@ public:
 
 	virtual bool has_environment(const String &p_var) const;
 	virtual String get_environment(const String &p_var) const;
+	virtual bool set_environment(const String &p_var, const String &p_value) const;
 	virtual String get_locale() const;
 
 	virtual int get_processor_count() const;

+ 5 - 0
platform/uwp/os_uwp.cpp

@@ -739,6 +739,11 @@ String OSUWP::get_environment(const String &p_var) const {
 	return "";
 };
 
+bool OSUWP::set_environment(const String &p_var, const String &p_value) const {
+
+	return false;
+}
+
 String OSUWP::get_stdin_string(bool p_block) {
 
 	return String();

+ 1 - 0
platform/uwp/os_uwp.h

@@ -213,6 +213,7 @@ public:
 
 	virtual bool has_environment(const String &p_var) const;
 	virtual String get_environment(const String &p_var) const;
+	virtual bool set_environment(const String &p_var, const String &p_value) const;
 
 	virtual void set_clipboard(const String &p_text);
 	virtual String get_clipboard() const;

+ 5 - 0
platform/windows/os_windows.cpp

@@ -2604,6 +2604,11 @@ String OS_Windows::get_environment(const String &p_var) const {
 	return "";
 }
 
+bool OS_Windows::set_environment(const String &p_var, const String &p_value) const {
+
+	return (bool)SetEnvironmentVariableW(p_var.c_str(), p_value.c_str());
+}
+
 String OS_Windows::get_stdin_string(bool p_block) {
 
 	if (p_block) {

+ 1 - 0
platform/windows/os_windows.h

@@ -268,6 +268,7 @@ public:
 
 	virtual bool has_environment(const String &p_var) const;
 	virtual String get_environment(const String &p_var) const;
+	virtual bool set_environment(const String &p_var, const String &p_value) const;
 
 	virtual void set_clipboard(const String &p_text);
 	virtual String get_clipboard() const;