[master] a5d5ecd Require libedit/readline

Tollef Fog Heen tfheen at varnish-cache.org
Tue Mar 12 11:17:25 CET 2013


commit a5d5ecdea86ba6d9dcb036a78f7606c693f42190
Author: Tollef Fog Heen <tfheen at varnish-software.com>
Date:   Tue Mar 12 11:15:58 2013 +0100

    Require libedit/readline
    
    Remove a bunch of ifdef code and fix up proper configure check for
    libedit.
    
    Fixes #1277

diff --git a/bin/varnishadm/varnishadm.c b/bin/varnishadm/varnishadm.c
index 08adc79..532ab72 100644
--- a/bin/varnishadm/varnishadm.c
+++ b/bin/varnishadm/varnishadm.c
@@ -32,25 +32,23 @@
 #include <sys/types.h>
 #include <sys/socket.h>
 
-#ifdef HAVE_LIBEDIT
-#  include <stdio.h>
-#  ifdef HAVE_EDIT_READLINE_READLINE_H
-#    include <edit/readline/readline.h>
-#  elif HAVE_READLINE_READLINE_H
-#    include <readline/readline.h>
-#    ifdef HAVE_READLINE_HISTORY_H
-#      include <readline/history.h>
-#    endif
-#  else
-#    include <editline/readline.h>
+#include <stdio.h>
+
+#ifdef HAVE_EDIT_READLINE_READLINE_H
+#  include <edit/readline/readline.h>
+#elif HAVE_READLINE_READLINE_H
+#  include <readline/readline.h>
+#  ifdef HAVE_READLINE_HISTORY_H
+#    include <readline/history.h>
 #  endif
+#else
+#  include <editline/readline.h>
 #endif
 
 #include <errno.h>
 #include <fcntl.h>
 #include <poll.h>
 #include <stdint.h>
-#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
@@ -61,16 +59,12 @@
 #include "vcli.h"
 #include "vss.h"
 
-#ifdef HAVE_LIBEDIT
 #define RL_EXIT(status) \
 	do { \
 		rl_callback_handler_remove(); \
 		exit(status); \
 	} while (0)
 
-#else
-#define RL_EXIT(status) exit(status)
-#endif
 
 static double timeout = 5;
 
@@ -178,7 +172,6 @@ do_args(int sock, int argc, char * const *argv)
 	exit(1);
 }
 
-#ifdef HAVE_LIBEDIT
 /* Callback for readline, doesn't take a private pointer, so we need
  * to have a global variable.
  */
@@ -228,7 +221,6 @@ varnishadm_completion (const char *text, int start, int end)
 		matches = rl_completion_matches(text, command_generator);
 	return (matches);
 }
-#endif
 
 /*
  * No arguments given, simply pass bytes on stdin/stdout and CLI socket
@@ -242,11 +234,6 @@ pass(int sock)
 	int i;
 	char *answer = NULL;
 	unsigned u, status;
-#ifndef HAVE_LIBEDIT
-	int n;
-#endif
-
-#ifdef HAVE_LIBEDIT
 	_line_sock = sock;
 	rl_already_prompted = 1;
 	if (isatty(0)) {
@@ -255,7 +242,6 @@ pass(int sock)
 		rl_callback_handler_install("", send_line);
 	}
 	rl_attempted_completion_function = varnishadm_completion;
-#endif
 
 	fds[0].fd = sock;
 	fds[0].events = POLLIN;
@@ -317,25 +303,10 @@ pass(int sock)
 				free(answer);
 				answer = NULL;
 			}
-#ifdef HAVE_LIBEDIT
 			rl_forced_update_display();
-#endif
 		}
 		if (fds[1].revents & POLLIN) {
-#ifdef HAVE_LIBEDIT
 			rl_callback_read_char();
-#else
-			n = read(fds[1].fd, buf, sizeof buf);
-			if (n == 0) {
-				AZ(shutdown(sock, SHUT_WR));
-				fds[1].fd = -1;
-			} else if (n < 0) {
-				RL_EXIT(0);
-			} else {
-				buf[n] = '\0';
-				cli_write(sock, buf);
-			}
-#endif
 		}
 	}
 }
diff --git a/configure.ac b/configure.ac
index e918ad7..37e894f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -156,7 +156,7 @@ PKG_CHECK_MODULES([LIBEDIT], [libedit],
 		  LIBEDIT_CFLAGS=""
 		  LIBEDIT_LIBS="-ledit ${CURSES_LIBS}"
 		],
-               [AC_MSG_WARN([libedit not found, disabling libedit support])],
+               [AC_MSG_ERROR([libedit or readline not found])],
                [${CURSES_LIBS}])])
 
 # Checks for header files.



More information about the varnish-commit mailing list