X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fterminal%2Fread-line.c;h=493a3d63cf5bd6399e7ea90de6081ae59d967e5c;hb=c86f5b8a45cca158b46a4fe3b48280e88ce9aba1;hp=626b06353392f75c6941c6e1ac1e30f6096a0ef2;hpb=68f08c4bb53fcde16035b622bdb6e9529f9cf3ae;p=pspp diff --git a/src/ui/terminal/read-line.c b/src/ui/terminal/read-line.c index 626b063533..493a3d63cf 100644 --- a/src/ui/terminal/read-line.c +++ b/src/ui/terminal/read-line.c @@ -34,6 +34,7 @@ #include #include #include +#include #include "xalloc.h" @@ -143,6 +144,7 @@ readln_read (struct string *line, enum prompt_style style) #if HAVE_READLINE char *string; #endif + bool eof; assert (initialised); @@ -159,14 +161,14 @@ readln_read (struct string *line, enum prompt_style style) : dont_complete); string = readline (prompt); if (string == NULL) - return false; + eof = true; else { if (string[0]) add_history (string); ds_assign_cstr (line, string); free (string); - return true; + eof = false; } #else fputs (prompt, stdout); @@ -174,13 +176,23 @@ readln_read (struct string *line, enum prompt_style style) if (ds_read_line (line, stdin)) { ds_chomp (line, '\n'); - return true; + eof = false; } else - return false; + eof = true; #endif -} + /* Check whether the size of the window has changed, so that + the output drivers can adjust their settings as needed. We + only do this for the first line of a command, as it's + possible that the output drivers are actually in use + afterward, and we don't want to confuse them in the middle + of output. */ + if (style == PROMPT_FIRST) + terminal_check_size (); + + return !eof; +} static void readln_close (struct getl_interface *i)