mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-02-17 14:00:30 +08:00
Add readline support. Change prompt to "saucer dn=CURRENT-DN> ".
This commit is contained in:
parent
973c830d32
commit
555e23dd43
@ -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)
|
||||
|
@ -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 <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#ifdef HAVE_READLINE
|
||||
# include <readline/readline.h>
|
||||
# ifdef HAVE_READLINE_HISTORY_H
|
||||
# include <readline/history.h>
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#include <ac/ctype.h>
|
||||
#include <ac/string.h>
|
||||
#include <ac/unistd.h>
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user