提交 b9b77bd6 authored 作者: Travis Cross's avatar Travis Cross

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.
上级 d6c6396e
......@@ -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));
......
......@@ -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),
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论