From b9b77bd6156b4343f8baa9ca1a0c803108dbcdb4 Mon Sep 17 00:00:00 2001 From: Travis Cross Date: Tue, 31 Jan 2012 18:42:27 +0000 Subject: [PATCH] fs_cli: make enhanced fs_cli features work on all TERMs FS-3815 --resolve This is a workaround for the fact that libedit counts terminal control characters when calculating the length of the prompt. By not using absolute positioning, we avoid the issue. Thanks to Ivan Isaev for the workaround and testing. --- libs/esl/fs_cli.c | 9 ++------- libs/libedit/src/term.c | 7 ++++++- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/libs/esl/fs_cli.c b/libs/esl/fs_cli.c index cc3c5f0831..36651e49d8 100644 --- a/libs/esl/fs_cli.c +++ b/libs/esl/fs_cli.c @@ -1123,7 +1123,6 @@ int main(int argc, char *argv[]) char dft_cfile[512] = "fs_cli.conf"; #endif char *home = getenv("HOME"); - char *term = getenv("TERM"); /* Vars for optargs */ int opt; static struct option options[] = { @@ -1158,15 +1157,11 @@ int main(int argc, char *argv[]) int argv_quiet = 0; int loops = 2, reconnect = 0, timeout = 0; - if (term && (!strncasecmp("screen", term, 6) || - !strncasecmp("vt100", term, 5))) { - feature_level = 1; - } else { - feature_level = 0; - } #ifdef WIN32 feature_level = 0; +#else + feature_level = 1; #endif strncpy(internal_profile.host, "127.0.0.1", sizeof(internal_profile.host)); diff --git a/libs/libedit/src/term.c b/libs/libedit/src/term.c index 34e4b23e53..99e22e6525 100644 --- a/libs/libedit/src/term.c +++ b/libs/libedit/src/term.c @@ -609,10 +609,15 @@ mc_again: } del = where - el->el_cursor.h; +#if 0 + /* workaround miscounting of control characters in prompt by + avoiding absolute horizontal positioning */ if ((del < -4 || del > 4) && GoodStr(T_ch)) /* go there directly */ (void) tputs(tgoto(Str(T_ch), where, where), where, term__putc); - else { + else +#endif + { if (del > 0) { /* moving forward */ if ((del > 4) && GoodStr(T_RI)) (void) tputs(tgoto(Str(T_RI), del, del),