Consider libedit only in interactive mode (#1207)

This commit is contained in:
Jörg Wunsch 2022-12-14 01:07:41 +01:00 committed by GitHub
parent 72f097502f
commit b10854677d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 13 additions and 3 deletions

View File

@ -1357,7 +1357,7 @@ void term_gotline(char *cmdstr) {
}
int terminal_mode(PROGRAMMER *pgm, struct avrpart *p) {
int terminal_mode_interactive(PROGRAMMER *pgm, struct avrpart *p) {
term_pgm = pgm; // For callback routine
term_p = p;
@ -1379,10 +1379,10 @@ int terminal_mode(PROGRAMMER *pgm, struct avrpart *p) {
return pgm->flush_cache(pgm, p);
}
#else
#endif
int terminal_mode(PROGRAMMER *pgm, struct avrpart *p) {
int terminal_mode_noninteractive(PROGRAMMER *pgm, struct avrpart *p) {
char *cmdbuf;
int rc = 0;
@ -1398,7 +1398,17 @@ int terminal_mode(PROGRAMMER *pgm, struct avrpart *p) {
return pgm->flush_cache(pgm, p);
}
int terminal_mode(PROGRAMMER *pgm, struct avrpart *p) {
#if defined(HAVE_LIBREADLINE)
// GNU libreadline can also work if input is a pipe.
// EditLine (NetBSD, MacOS) has issues with that, so only use it when
// running interactively.
// EditLine uses version 4.2 (0x0402).
if (isatty(fileno(stdin)) || (rl_readline_version >= 0x0500))
return terminal_mode_interactive(pgm, p);
#endif
return terminal_mode_noninteractive(pgm, p);
}
static void update_progress_tty(int percent, double etime, const char *hdr, int finish) {
static char *header;