mirror of
https://github.com/tiennm99/godot.git
synced 2026-08-23 18:25:17 +00:00
Fixes stderr silence; adds missing quote from exe args(windows)
https://github.com/godotengine/godot/blob/8d117b214f2bcd14015532fdfbed9b3f059da0e6/core/bind/core_bind.cpp#L452 This function calls the bottom function https://github.com/godotengine/godot/blob/8d117b214f2bcd14015532fdfbed9b3f059da0e6/drivers/unix/os_unix.cpp#L312 OS.execute doesn't send out a value to stderr, so stderr defaults to false, which will invoke this bottom line and always silence stderr. https://github.com/godotengine/godot/blob/8d117b214f2bcd14015532fdfbed9b3f059da0e6/drivers/unix/os_unix.cpp#L315 Some programs, such as FFmpeg, will print out to stderr with valuable and vital information. This fixes stderr always being silenced, user can now opt to have it be read as normal.
This commit is contained in:
@@ -442,14 +442,14 @@ Error _OS::shell_open(String p_uri) {
|
||||
return OS::get_singleton()->shell_open(p_uri);
|
||||
};
|
||||
|
||||
int _OS::execute(const String &p_path, const Vector<String> &p_arguments, bool p_blocking, Array p_output) {
|
||||
int _OS::execute(const String &p_path, const Vector<String> &p_arguments, bool p_blocking, Array p_output, bool p_read_stderr) {
|
||||
|
||||
OS::ProcessID pid = -2;
|
||||
List<String> args;
|
||||
for (int i = 0; i < p_arguments.size(); i++)
|
||||
args.push_back(p_arguments[i]);
|
||||
String pipe;
|
||||
Error err = OS::get_singleton()->execute(p_path, args, p_blocking, &pid, &pipe);
|
||||
Error err = OS::get_singleton()->execute(p_path, args, p_blocking, &pid, &pipe, NULL, p_read_stderr);
|
||||
p_output.clear();
|
||||
p_output.push_back(pipe);
|
||||
if (err != OK)
|
||||
@@ -1173,7 +1173,7 @@ void _OS::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("get_processor_count"), &_OS::get_processor_count);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("get_executable_path"), &_OS::get_executable_path);
|
||||
ClassDB::bind_method(D_METHOD("execute", "path", "arguments", "blocking", "output"), &_OS::execute, DEFVAL(Array()));
|
||||
ClassDB::bind_method(D_METHOD("execute", "path", "arguments", "blocking", "output", "read_stderr"), &_OS::execute, DEFVAL(Array()), DEFVAL(false));
|
||||
ClassDB::bind_method(D_METHOD("kill", "pid"), &_OS::kill);
|
||||
ClassDB::bind_method(D_METHOD("shell_open", "uri"), &_OS::shell_open);
|
||||
ClassDB::bind_method(D_METHOD("get_process_id"), &_OS::get_process_id);
|
||||
|
||||
Reference in New Issue
Block a user