From: Vincent Bernat Date: Sun, 6 Jan 2013 12:21:51 +0000 (+0100) Subject: lldpcli: don't rely on `rl_delete_text()` X-Git-Tag: 0.7.0~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=07f2c5678ec046660e301f0e95758411eec0c3a3;p=thirdparty%2Flldpd.git lldpcli: don't rely on `rl_delete_text()` Even recent versions of libedit do not include `rl_delete_text()` compatibility function. We don't use it. --- diff --git a/m4/ax_lib_readline.m4 b/m4/ax_lib_readline.m4 index 4fc4af36..9da90e64 100644 --- a/m4/ax_lib_readline.m4 +++ b/m4/ax_lib_readline.m4 @@ -31,7 +31,6 @@ # # else /* !defined(HAVE_READLINE_H) */ # extern char *readline (); # extern int rl_insert_text(const char*); -# extern int rl_delete_text(int, int); # extern void rl_forced_update_display(void); # extern int rl_bind_key(int, int(*f)(int, int)); # # endif /* !defined(HAVE_READLINE_H) */ @@ -80,7 +79,7 @@ AC_DEFUN([AX_LIB_READLINE], [ TRY_LIB="-l$readline_lib -l$termcap_lib" fi LIBS="$ORIG_LIBS $TRY_LIB" - for readline_func in readline rl_insert_text rl_delete_text rl_forced_update_display; do + for readline_func in readline rl_insert_text rl_forced_update_display; do AC_TRY_LINK_FUNC($readline_func, ax_cv_lib_readline="$TRY_LIB", ax_cv_lib_readline="") if test -z "$ax_cv_lib_readline"; then break diff --git a/src/client/client.h b/src/client/client.h index d4374902..aaa7350c 100644 --- a/src/client/client.h +++ b/src/client/client.h @@ -39,7 +39,6 @@ extern char *readline(); extern char *rl_line_buffer; extern int rl_point; extern int rl_insert_text(const char*); -extern int rl_delete_text(int, int); extern void rl_forced_update_display(void); extern int rl_bind_key(int, int(*f)(int, int)); # endif diff --git a/src/client/lldpcli.c b/src/client/lldpcli.c index b7d29383..d45fd744 100644 --- a/src/client/lldpcli.c +++ b/src/client/lldpcli.c @@ -133,11 +133,8 @@ _cmd_complete(int all) goto end; char *compl = commands_complete(root, argc, (const char **)argv, all); - if (compl) { - int from = rl_point - strlen(argv[argc-1]); - rl_delete_text(from, rl_point); - rl_point = from; - if (rl_insert_text(compl) < 0) { + if (compl && strlen(argv[argc-1]) < strlen(compl)) { + if (rl_insert_text(compl + strlen(argv[argc-1])) < 0) { free(compl); goto end; }