aboutsummaryrefslogtreecommitdiffstats
path: root/util/ttyio.c
diff options
context:
space:
mode:
Diffstat (limited to 'util/ttyio.c')
-rw-r--r--util/ttyio.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/util/ttyio.c b/util/ttyio.c
index 0f0f144ef..3f5eb7900 100644
--- a/util/ttyio.c
+++ b/util/ttyio.c
@@ -58,6 +58,7 @@ static FILE *ttyfp = NULL;
static int initialized;
static int last_prompt_len;
static int batchmode;
+static int no_terminal;
#ifdef HAVE_TCGETATTR
static struct termios termsave;
@@ -130,11 +131,22 @@ tty_batchmode( int onoff )
return old;
}
+int
+tty_no_terminal(int onoff)
+{
+ int old = no_terminal;
+ no_terminal = onoff ? 1 : 0;
+ return old;
+}
+
void
tty_printf( const char *fmt, ... )
{
va_list arg_ptr;
+ if (no_terminal)
+ return;
+
if( !initialized )
init_ttyfp();
@@ -188,6 +200,9 @@ tty_printf( const char *fmt, ... )
void
tty_print_string( byte *p, size_t n )
{
+ if (no_terminal)
+ return;
+
if( !initialized )
init_ttyfp();
@@ -236,6 +251,11 @@ do_get( const char *prompt, int hidden )
exit(2);
}
+ if (no_terminal) {
+ log_error("Sorry, no terminal at all requested - can't get input\n");
+ exit(2);
+ }
+
if( !initialized )
init_ttyfp();
@@ -349,9 +369,12 @@ tty_get_hidden( const char *prompt )
void
tty_kill_prompt()
{
+ if ( no_terminal )
+ return;
if( !initialized )
init_ttyfp();
+
if( batchmode )
last_prompt_len = 0;
if( !last_prompt_len )