]> git.ipfire.org Git - thirdparty/lldpd.git/commitdiff
lldpcli: don't rely on `rl_delete_text()`
authorVincent Bernat <bernat@luffy.cx>
Sun, 6 Jan 2013 12:21:51 +0000 (13:21 +0100)
committerVincent Bernat <bernat@luffy.cx>
Sun, 6 Jan 2013 12:21:51 +0000 (13:21 +0100)
Even recent versions of libedit do not include `rl_delete_text()`
compatibility function. We don't use it.

m4/ax_lib_readline.m4
src/client/client.h
src/client/lldpcli.c

index 4fc4af3624fcf7936921e2f4e59f334b4876efe8..9da90e64569878439b32c4898a38311dab4e6e84 100644 (file)
@@ -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
index d437490290c72bba3a07f527f1da85a2e288c2e6..aaa7350c49000fc773179d6142b99721a108012c 100644 (file)
@@ -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
index b7d2938391b0f749bb2aea5347f44b5d4f2bd7e0..d45fd744e6bc205373c03d042fe7ae4cde4a9cf1 100644 (file)
@@ -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;
                }