forked from Mirrors/freeswitch
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.
This commit is contained in:
parent
d6c6396e24
commit
b9b77bd615
@ -1123,7 +1123,6 @@ int main(int argc, char *argv[])
|
|||||||
char dft_cfile[512] = "fs_cli.conf";
|
char dft_cfile[512] = "fs_cli.conf";
|
||||||
#endif
|
#endif
|
||||||
char *home = getenv("HOME");
|
char *home = getenv("HOME");
|
||||||
char *term = getenv("TERM");
|
|
||||||
/* Vars for optargs */
|
/* Vars for optargs */
|
||||||
int opt;
|
int opt;
|
||||||
static struct option options[] = {
|
static struct option options[] = {
|
||||||
@ -1158,15 +1157,11 @@ int main(int argc, char *argv[])
|
|||||||
int argv_quiet = 0;
|
int argv_quiet = 0;
|
||||||
int loops = 2, reconnect = 0, timeout = 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
|
#ifdef WIN32
|
||||||
feature_level = 0;
|
feature_level = 0;
|
||||||
|
#else
|
||||||
|
feature_level = 1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
strncpy(internal_profile.host, "127.0.0.1", sizeof(internal_profile.host));
|
strncpy(internal_profile.host, "127.0.0.1", sizeof(internal_profile.host));
|
||||||
|
@ -609,10 +609,15 @@ mc_again:
|
|||||||
}
|
}
|
||||||
del = where - el->el_cursor.h;
|
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))
|
if ((del < -4 || del > 4) && GoodStr(T_ch))
|
||||||
/* go there directly */
|
/* go there directly */
|
||||||
(void) tputs(tgoto(Str(T_ch), where, where), where, term__putc);
|
(void) tputs(tgoto(Str(T_ch), where, where), where, term__putc);
|
||||||
else {
|
else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
if (del > 0) { /* moving forward */
|
if (del > 0) { /* moving forward */
|
||||||
if ((del > 4) && GoodStr(T_RI))
|
if ((del > 4) && GoodStr(T_RI))
|
||||||
(void) tputs(tgoto(Str(T_RI), del, del),
|
(void) tputs(tgoto(Str(T_RI), del, del),
|
||||||
|
Loading…
Reference in New Issue
Block a user