summaryrefslogtreecommitdiff
path: root/source4/lib/replace
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2006-05-03 09:07:38 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:05:33 -0500
commit72a5cbadc1498b58bc7873a450de4b50e322a676 (patch)
tree6f369b9d1ff46e0c7b662873e9aea697bb14635b /source4/lib/replace
parent9177f9cf0961468342dded643be535fc427d2667 (diff)
downloadsamba-72a5cbadc1498b58bc7873a450de4b50e322a676.tar.gz
samba-72a5cbadc1498b58bc7873a450de4b50e322a676.tar.bz2
samba-72a5cbadc1498b58bc7873a450de4b50e322a676.zip
r15406: Move 'smbreadline' out of libreplace as it doesn't replace functionality
not available on some platforms but is a Samba-specific library. (This used to be commit e9d3660fa6678424e5159708a1aa572824926c8e)
Diffstat (limited to 'source4/lib/replace')
-rw-r--r--source4/lib/replace/README1
-rw-r--r--source4/lib/replace/config.m41
-rw-r--r--source4/lib/replace/readline.c164
-rw-r--r--source4/lib/replace/readline.m481
-rw-r--r--source4/lib/replace/smbreadline.h9
5 files changed, 1 insertions, 255 deletions
diff --git a/source4/lib/replace/README b/source4/lib/replace/README
index a3e9d87072..9760c75b80 100644
--- a/source4/lib/replace/README
+++ b/source4/lib/replace/README
@@ -50,6 +50,7 @@ pread
pwrite
getpass
readline (the library)
+inet_ntoa
Types:
bool
diff --git a/source4/lib/replace/config.m4 b/source4/lib/replace/config.m4
index 12e3607bb4..aec9f5805c 100644
--- a/source4/lib/replace/config.m4
+++ b/source4/lib/replace/config.m4
@@ -140,7 +140,6 @@ AC_INCLUDES_DEFAULT
#endif]
)
-sinclude(lib/replace/readline.m4)
sinclude(lib/replace/getpass.m4)
dnl VA_COPY
diff --git a/source4/lib/replace/readline.c b/source4/lib/replace/readline.c
deleted file mode 100644
index 78febf5000..0000000000
--- a/source4/lib/replace/readline.c
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- Samba readline wrapper implementation
- Copyright (C) Simo Sorce 2001
- Copyright (C) Andrew Tridgell 2001
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-#include "pstring.h"
-
-#include <unistd.h>
-#include "system/readline.h"
-
-/*******************************************************************
- Similar to sys_select() but catch EINTR and continue.
- This is what sys_select() used to do in Samba.
-********************************************************************/
-
-int sys_select_intr(int maxfd, fd_set *readfds, fd_set *writefds, fd_set *errorfds, struct timeval *tval)
-{
- int ret;
- fd_set *readfds2, readfds_buf, *writefds2, writefds_buf, *errorfds2, errorfds_buf;
- struct timeval tval2, *ptval;
-
- readfds2 = (readfds ? &readfds_buf : NULL);
- writefds2 = (writefds ? &writefds_buf : NULL);
- errorfds2 = (errorfds ? &errorfds_buf : NULL);
- ptval = (tval ? &tval2 : NULL);
-
- do {
- if (readfds)
- readfds_buf = *readfds;
- if (writefds)
- writefds_buf = *writefds;
- if (errorfds)
- errorfds_buf = *errorfds;
- if (tval)
- tval2 = *tval;
-
- /* We must use select and not sys_select here. If we use
- sys_select we'd lose the fact a signal occurred when sys_select
- read a byte from the pipe. Fix from Mark Weaver
- <mark-clist@npsl.co.uk>
- */
-
- ret = select(maxfd, readfds2, writefds2, errorfds2, ptval);
- } while (ret == -1 && errno == EINTR);
-
- if (readfds)
- *readfds = readfds_buf;
- if (writefds)
- *writefds = writefds_buf;
- if (errorfds)
- *errorfds = errorfds_buf;
-
- return ret;
-}
-
-/****************************************************************************
- Display the prompt and wait for input. Call callback() regularly
-****************************************************************************/
-
-static char *smb_readline_replacement(const char *prompt, void (*callback)(void),
- char **(completion_fn)(const char *text, int start, int end))
-{
- fd_set fds;
- static pstring line;
- struct timeval timeout;
- int fd = STDIN_FILENO;
- char *ret;
-
- do_debug("%s", prompt);
-
- while (1) {
- timeout.tv_sec = 5;
- timeout.tv_usec = 0;
-
- FD_ZERO(&fds);
- FD_SET(fd,&fds);
-
- if (sys_select_intr(fd+1,&fds,NULL,NULL,&timeout) == 1) {
- ret = x_fgets(line, sizeof(line), x_stdin);
- return ret;
- }
- if (callback)
- callback();
- }
-}
-
-/****************************************************************************
- Display the prompt and wait for input. Call callback() regularly.
-****************************************************************************/
-
-char *smb_readline(const char *prompt, void (*callback)(void),
- char **(completion_fn)(const char *text, int start, int end))
-{
-#if HAVE_LIBREADLINE
- if (isatty(STDIN_FILENO)) {
- char *ret;
-
- /* Aargh! Readline does bizzare things with the terminal width
- that mucks up expect(1). Set CLI_NO_READLINE in the environment
- to force readline not to be used. */
-
- if (getenv("CLI_NO_READLINE"))
- return smb_readline_replacement(prompt, callback, completion_fn);
-
- if (completion_fn) {
- /* The callback prototype has changed slightly between
- different versions of Readline, so the same function
- works in all of them to date, but we get compiler
- warnings in some. */
- rl_attempted_completion_function = RL_COMPLETION_CAST completion_fn;
- }
-
- if (callback)
- rl_event_hook = (Function *)callback;
- ret = readline(prompt);
- if (ret && *ret)
- add_history(ret);
- return ret;
- } else
-#endif
- return smb_readline_replacement(prompt, callback, completion_fn);
-}
-
-/****************************************************************************
- * return line buffer text
- ****************************************************************************/
-const char *smb_readline_get_line_buffer(void)
-{
-#if defined(HAVE_LIBREADLINE)
- return rl_line_buffer;
-#else
- return NULL;
-#endif
-}
-
-/****************************************************************************
- * set completion append character
- ***************************************************************************/
-void smb_readline_ca_char(char c)
-{
-#if defined(HAVE_LIBREADLINE)
- rl_completion_append_character = c;
-#endif
-}
-
-
-
diff --git a/source4/lib/replace/readline.m4 b/source4/lib/replace/readline.m4
deleted file mode 100644
index 34b538f10a..0000000000
--- a/source4/lib/replace/readline.m4
+++ /dev/null
@@ -1,81 +0,0 @@
-###############################################
-# Readline included by default unless explicitly asked not to
-test "${with_readline+set}" != "set" && with_readline=yes
-
-EXTERNAL_READLINE=no
-# test for where we get readline() from
-AC_MSG_CHECKING(whether to use readline)
-AC_ARG_WITH(readline,
-[ --with-readline[=DIR] Look for readline include/libs in DIR (default=auto) ],
-[ case "$with_readline" in
- yes)
- AC_MSG_RESULT(yes)
-
- AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
- AC_CHECK_HEADERS(readline/history.h)
-
- AC_CHECK_HEADERS(readline.h readline/readline.h,[
- for termlib in ncurses curses termcap terminfo termlib tinfo; do
- AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
- done
- AC_CHECK_LIB(readline, rl_callback_handler_install,
- [TERMLIBS="-lreadline $TERMLIBS"
- EXTERNAL_READLINE=yes
- break], [TERMLIBS=], $TERMLIBS)])
- ;;
- no)
- AC_MSG_RESULT(no)
- ;;
- *)
- AC_MSG_RESULT(yes)
-
- # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
- # alternate readline path
- _ldflags=${LDFLAGS}
- _cppflags=${CPPFLAGS}
-
- # Add additional search path
- LDFLAGS="-L$with_readline/lib $LDFLAGS"
- CPPFLAGS="-I$with_readline/include $CPPFLAGS"
-
- AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
- AC_CHECK_HEADERS(readline/history.h)
-
- AC_CHECK_HEADERS(readline.h readline/readline.h,[
- for termlib in ncurses curses termcap terminfo termlib; do
- AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
- done
- AC_CHECK_LIB(readline, rl_callback_handler_install,
- [TERMLDFLAGS="-L$with_readline/lib"
- TERMCPPFLAGS="-I$with_readline/include"
- LDFLAGS="-L$with_readline/lib $LDFLAGS"
- CPPFLAGS="-I$with_readline/include $CPPFLAGS"
- TERMLIBS="-lreadline $TERMLIBS"
- EXTERNAL_READLINE=yes
- break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
-
- ;;
- esac],
- AC_MSG_RESULT(no)
-)
-
-# The readline API changed slightly from readline3 to readline4, so
-# code will generate warnings on one of them unless we have a few
-# special cases.
-AC_CHECK_LIB(readline, rl_completion_matches,
- [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
- [Do we have rl_completion_matches?])],
- [],
- [$TERMLIBS])
-
-AC_MSG_CHECKING(whether to use extern readline)
-if test x"$EXTERNAL_READLINE" = x"yes"; then
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
- SMB_SUBSYSTEM(SMBREADLINE, [lib/replace/readline.o], [READLINE])
- SMB_EXT_LIB(READLINE, [${TERMLIBS}])
- SMB_ENABLE(READLINE,YES)
-else
- SMB_SUBSYSTEM(SMBREADLINE, [lib/replace/readline.o], [])
- AC_MSG_RESULT(no)
-fi
diff --git a/source4/lib/replace/smbreadline.h b/source4/lib/replace/smbreadline.h
deleted file mode 100644
index cde2b47a24..0000000000
--- a/source4/lib/replace/smbreadline.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#ifndef __SMBREADLINE_H__
-#define __SMBREADLINE_H__
-
-char *smb_readline(const char *prompt, void (*callback)(void),
- char **(completion_fn)(const char *text, int start, int end));
-const char *smb_readline_get_line_buffer(void);
-void smb_readline_ca_char(char c);
-
-#endif /* __SMBREADLINE_H__ */