Merge pull request #70714 from Calinou/doc-os-stdin

Improve documentation for `OS.read_string_from_stdin()`
This commit is contained in:
Rémi Verschelde 2023-01-12 09:24:47 +01:00 committed by GitHub
commit 0e4e782ada
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 19 additions and 26 deletions

View file

@ -257,8 +257,8 @@ Error OS::shell_open(String p_uri) {
return ::OS::get_singleton()->shell_open(p_uri); return ::OS::get_singleton()->shell_open(p_uri);
} }
String OS::read_string_from_stdin(bool p_block) { String OS::read_string_from_stdin() {
return ::OS::get_singleton()->get_stdin_string(true); return ::OS::get_singleton()->get_stdin_string();
} }
int OS::execute(const String &p_path, const Vector<String> &p_arguments, Array r_output, bool p_read_stderr, bool p_open_console) { int OS::execute(const String &p_path, const Vector<String> &p_arguments, Array r_output, bool p_read_stderr, bool p_open_console) {
@ -539,7 +539,7 @@ void OS::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_system_font_path", "font_name", "weight", "stretch", "italic"), &OS::get_system_font_path, DEFVAL(400), DEFVAL(100), DEFVAL(false)); ClassDB::bind_method(D_METHOD("get_system_font_path", "font_name", "weight", "stretch", "italic"), &OS::get_system_font_path, DEFVAL(400), DEFVAL(100), DEFVAL(false));
ClassDB::bind_method(D_METHOD("get_system_font_path_for_text", "font_name", "text", "locale", "script", "weight", "stretch", "italic"), &OS::get_system_font_path_for_text, DEFVAL(String()), DEFVAL(String()), DEFVAL(400), DEFVAL(100), DEFVAL(false)); ClassDB::bind_method(D_METHOD("get_system_font_path_for_text", "font_name", "text", "locale", "script", "weight", "stretch", "italic"), &OS::get_system_font_path_for_text, DEFVAL(String()), DEFVAL(String()), DEFVAL(400), DEFVAL(100), DEFVAL(false));
ClassDB::bind_method(D_METHOD("get_executable_path"), &OS::get_executable_path); ClassDB::bind_method(D_METHOD("get_executable_path"), &OS::get_executable_path);
ClassDB::bind_method(D_METHOD("read_string_from_stdin", "block"), &OS::read_string_from_stdin, DEFVAL(true)); ClassDB::bind_method(D_METHOD("read_string_from_stdin"), &OS::read_string_from_stdin);
ClassDB::bind_method(D_METHOD("execute", "path", "arguments", "output", "read_stderr", "open_console"), &OS::execute, DEFVAL(Array()), DEFVAL(false), DEFVAL(false)); ClassDB::bind_method(D_METHOD("execute", "path", "arguments", "output", "read_stderr", "open_console"), &OS::execute, DEFVAL(Array()), DEFVAL(false), DEFVAL(false));
ClassDB::bind_method(D_METHOD("create_process", "path", "arguments", "open_console"), &OS::create_process, DEFVAL(false)); ClassDB::bind_method(D_METHOD("create_process", "path", "arguments", "open_console"), &OS::create_process, DEFVAL(false));
ClassDB::bind_method(D_METHOD("create_instance", "arguments"), &OS::create_instance); ClassDB::bind_method(D_METHOD("create_instance", "arguments"), &OS::create_instance);

View file

@ -146,7 +146,7 @@ public:
String get_system_font_path(const String &p_font_name, int p_weight = 400, int p_stretch = 100, bool p_italic = false) const; String get_system_font_path(const String &p_font_name, int p_weight = 400, int p_stretch = 100, bool p_italic = false) const;
Vector<String> get_system_font_path_for_text(const String &p_font_name, const String &p_text, const String &p_locale = String(), const String &p_script = String(), int p_weight = 400, int p_stretch = 100, bool p_italic = false) const; Vector<String> get_system_font_path_for_text(const String &p_font_name, const String &p_text, const String &p_locale = String(), const String &p_script = String(), int p_weight = 400, int p_stretch = 100, bool p_italic = false) const;
String get_executable_path() const; String get_executable_path() const;
String read_string_from_stdin(bool p_block = true); String read_string_from_stdin();
int execute(const String &p_path, const Vector<String> &p_arguments, Array r_output = Array(), bool p_read_stderr = false, bool p_open_console = false); int execute(const String &p_path, const Vector<String> &p_arguments, Array r_output = Array(), bool p_read_stderr = false, bool p_open_console = false);
int create_process(const String &p_path, const Vector<String> &p_arguments, bool p_open_console = false); int create_process(const String &p_path, const Vector<String> &p_arguments, bool p_open_console = false);
int create_instance(const Vector<String> &p_arguments); int create_instance(const Vector<String> &p_arguments);

View file

@ -131,7 +131,7 @@ public:
void print_rich(const char *p_format, ...) _PRINTF_FORMAT_ATTRIBUTE_2_3; void print_rich(const char *p_format, ...) _PRINTF_FORMAT_ATTRIBUTE_2_3;
void printerr(const char *p_format, ...) _PRINTF_FORMAT_ATTRIBUTE_2_3; void printerr(const char *p_format, ...) _PRINTF_FORMAT_ATTRIBUTE_2_3;
virtual String get_stdin_string(bool p_block = true) = 0; virtual String get_stdin_string() = 0;
virtual Error get_entropy(uint8_t *r_buffer, int p_bytes) = 0; // Should return cryptographically-safe random bytes. virtual Error get_entropy(uint8_t *r_buffer, int p_bytes) = 0; // Should return cryptographically-safe random bytes.

View file

@ -572,10 +572,9 @@
</method> </method>
<method name="read_string_from_stdin"> <method name="read_string_from_stdin">
<return type="String" /> <return type="String" />
<param index="0" name="block" type="bool" default="true" />
<description> <description>
Reads a user input string from the standard input (usually the terminal). Reads a user input string from the standard input (usually the terminal). This operation is [i]blocking[/i], which causes the window to freeze if [method read_string_from_stdin] is called on the main thread. The thread calling [method read_string_from_stdin] will block until the program receives a line break in standard input (usually by the user pressing [kbd]Enter[/kbd]).
[b]Note:[/b] This method is implemented on Linux, macOS and Windows. Non-blocking reads are not currently supported on any platform. [b]Note:[/b] This method is implemented on Linux, macOS and Windows.
</description> </description>
</method> </method>
<method name="request_permission"> <method name="request_permission">

View file

@ -149,13 +149,9 @@ Vector<String> OS_Unix::get_video_adapter_driver_info() const {
return Vector<String>(); return Vector<String>();
} }
String OS_Unix::get_stdin_string(bool p_block) { String OS_Unix::get_stdin_string() {
if (p_block) { char buff[1024];
char buff[1024]; return String::utf8(fgets(buff, 1024, stdin));
return String::utf8(fgets(buff, 1024, stdin));
}
return String();
} }
Error OS_Unix::get_entropy(uint8_t *r_buffer, int p_bytes) { Error OS_Unix::get_entropy(uint8_t *r_buffer, int p_bytes) {

View file

@ -51,7 +51,7 @@ public:
virtual Vector<String> get_video_adapter_driver_info() const override; virtual Vector<String> get_video_adapter_driver_info() const override;
virtual String get_stdin_string(bool p_block) override; virtual String get_stdin_string() override;
virtual Error get_entropy(uint8_t *r_buffer, int p_bytes) override; virtual Error get_entropy(uint8_t *r_buffer, int p_bytes) override;

View file

@ -680,7 +680,7 @@ bool OS_UWP::set_environment(const String &p_var, const String &p_value) const {
return false; return false;
} }
String OS_UWP::get_stdin_string(bool p_block) { String OS_UWP::get_stdin_string() {
return String(); return String();
} }

View file

@ -162,7 +162,7 @@ public:
HANDLE mouse_mode_changed; HANDLE mouse_mode_changed;
virtual void alert(const String &p_alert, const String &p_title = "ALERT!"); virtual void alert(const String &p_alert, const String &p_title = "ALERT!");
String get_stdin_string(bool p_block); String get_stdin_string();
void set_mouse_mode(MouseMode p_mode); void set_mouse_mode(MouseMode p_mode);
MouseMode get_mouse_mode() const; MouseMode get_mouse_mode() const;

View file

@ -1162,13 +1162,11 @@ bool OS_Windows::set_environment(const String &p_var, const String &p_value) con
return (bool)SetEnvironmentVariableW((LPCWSTR)(p_var.utf16().get_data()), (LPCWSTR)(p_value.utf16().get_data())); return (bool)SetEnvironmentVariableW((LPCWSTR)(p_var.utf16().get_data()), (LPCWSTR)(p_value.utf16().get_data()));
} }
String OS_Windows::get_stdin_string(bool p_block) { String OS_Windows::get_stdin_string() {
if (p_block) { WCHAR buff[1024];
WCHAR buff[1024]; DWORD count = 0;
DWORD count = 0; if (ReadConsoleW(GetStdHandle(STD_INPUT_HANDLE), buff, 1024, &count, nullptr)) {
if (ReadConsoleW(GetStdHandle(STD_INPUT_HANDLE), buff, 1024, &count, nullptr)) { return String::utf16((const char16_t *)buff, count);
return String::utf16((const char16_t *)buff, count);
}
} }
return String(); return String();

View file

@ -140,7 +140,7 @@ protected:
virtual void finalize() override; virtual void finalize() override;
virtual void finalize_core() override; virtual void finalize_core() override;
virtual String get_stdin_string(bool p_block) override; virtual String get_stdin_string() override;
String _quote_command_line_argument(const String &p_text) const; String _quote_command_line_argument(const String &p_text) const;