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:
parent
3c33646725
commit
376b0e97f4
@ -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;
|
||||
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user