If not interactive, we need the traditional behaviour of the input

not being echoed to the output. So as a _hack_ to get the world building
again, redirect the readline rl_outstream to stderr when not interactive.

The proper way to handle non-interactive mode is to read from stdin
and don't worry about edit mode, but this is GNU so it's not worth the
time thinking about. I'm already pissed off that I even had to look
at this "nice code".
This commit is contained in:
John Birrell 1998-05-02 03:28:43 +00:00
parent 3c33646725
commit 376b0e97f4
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=35613
2 changed files with 8 additions and 4 deletions

View File

@ -137,16 +137,19 @@ main (argc, argv)
char *env_value;
char *env_argv[30];
int env_argc;
extern FILE *rl_outstream;
/* Initialize many variables. */
compile_only = FALSE;
use_math = FALSE;
warn_not_std = FALSE;
std_only = FALSE;
if (isatty(0) && isatty(1))
if (isatty(0) && isatty(1))
interactive = TRUE;
else
else {
interactive = FALSE;
rl_outstream = stderr;
}
quiet = FALSE;
file_names = NULL;

View File

@ -63,6 +63,7 @@ static char *rl_start = (char *)NULL;
static char rl_len = 0;
/* Definitions for readline access. */
extern FILE *rl_outstream;
extern FILE *rl_instream;
_PROTOTYPE(char *readline, (char *));
@ -107,8 +108,8 @@ rl_input (buf, result, max)
if (rl_len != 1)
add_history (rl_line);
rl_line[rl_len-1] = '\n';
printf ("\r");
fflush (stdout);
fprintf (rl_outstream,"\r");
fflush (rl_outstream);
}
if (rl_len <= max)