From: Travis Cross Date: Tue, 31 Jan 2012 18:42:27 +0000 (+0000) Subject: fs_cli: make enhanced fs_cli features work on all TERMs X-Git-Tag: v1.2-rc1~19^2~1^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b9b77bd6156b4343f8baa9ca1a0c803108dbcdb4;p=thirdparty%2Ffreeswitch.git 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. --- 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),