#include <stdbool.h>
#include <assert.h>
#include <errno.h>
+#if ! HAVE_READLINE
+#include <stdint.h>
+#endif
#include "msg-ui.h"
#include <language/prompt.h>
#include <output/journal.h>
#include <output/manager.h>
+#include <ui/terminal/terminal.h>
#include "xalloc.h"
initialised = false;
#if HAVE_READLINE
- if (history_file != NULL && false == get_testing_mode() )
+ if (history_file != NULL && false == settings_get_testing_mode () )
write_history (history_file);
clear_history ();
free (history_file);
#if HAVE_READLINE
char *string;
#endif
+ bool eof;
assert (initialised);
: 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);
fflush (stdout);
- if (ds_read_line (line, stdin))
+ if (ds_read_line (line, stdin, SIZE_MAX))
{
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)