From: Hallvard Furuseth Date: Tue, 9 Mar 1999 22:50:06 +0000 (+0000) Subject: Add readline support. Change prompt to "saucer dn=CURRENT-DN> ". X-Git-Tag: OPENLDAP_SLAPD_BACK_LDAP~420 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=555e23dd432bd128b57e0cd0e58ec15bc6485c32;p=openldap Add readline support. Change prompt to "saucer dn=CURRENT-DN> ". --- diff --git a/contrib/saucer/Makefile.in b/contrib/saucer/Makefile.in index 2dbac4e899..39aa66577a 100644 --- a/contrib/saucer/Makefile.in +++ b/contrib/saucer/Makefile.in @@ -6,8 +6,10 @@ OBJS= main.o LDAP_INCDIR= ../../include LDAP_LIBDIR= ../../libraries +READLINE_LIBS = @READLINE_LIBS@ + XLIBS = -lldap -llber -llutil -XXLIBS = $(KRB_LIBS) $(LUTIL_LIBS) +XXLIBS = $(KRB_LIBS) $(LUTIL_LIBS) $(READLINE_LIBS) $(TERMCAP_LIBS) saucer: ${OBJS} $(LDAP_LIBDEPEND) $(LTLINK) -o $@ $(OBJS) $(LIBS) diff --git a/contrib/saucer/main.c b/contrib/saucer/main.c index 12d967a3b6..cc52dee482 100644 --- a/contrib/saucer/main.c +++ b/contrib/saucer/main.c @@ -13,6 +13,8 @@ * 'saucer' LDAP command-line client source code. * * Author: Eric Rosenquist, 1994. + * + * 07-Mar-1999 readline support added: O. Steffensen (oddbjorn@tricknology.org) */ #include "portable.h" @@ -20,6 +22,13 @@ #include #include +#ifdef HAVE_READLINE +# include +# ifdef HAVE_READLINE_HISTORY_H +# include +# endif +#endif + #include #include #include @@ -528,13 +537,39 @@ void do_commands(FILE *file) { char cmd_buf[BUFSIZ]; int tty = isatty(fileno(file)); + char *buf = cmd_buf; + int status; for (;;) { if (tty) - printf("Cmd? "); - if (!fgets(cmd_buf, sizeof(cmd_buf), file)) - break; - if (do_command(cmd_buf)) + { + char prompt[40]; + sprintf(prompt, (strlen(default_dn) < 18 + ? "saucer dn=%s> " + : "saucer dn=%.15s..> "), default_dn); +#ifndef HAVE_READLINE + fputs (prompt, stdout); +#else + buf = readline (prompt); + if (!buf) + break; + add_history (buf); +#endif + } +#ifdef HAVE_READLINE + else +#endif + { + if (!fgets(cmd_buf, sizeof(cmd_buf), file)) + break; + } + + status = do_command(buf); +#ifdef HAVE_READLINE + if (tty) + free(buf); +#endif + if (status) break; } }