summaryrefslogtreecommitdiffstats
path: root/lib/libedit/prompt.c
diff options
context:
space:
mode:
authorobrien <obrien@FreeBSD.org>2001-10-01 08:41:27 +0000
committerobrien <obrien@FreeBSD.org>2001-10-01 08:41:27 +0000
commit90300f853673b3879ab4d6a60683ff69b564c58b (patch)
treef9436ba88ca8f8420af319b0a12dd175381b507b /lib/libedit/prompt.c
parentf805e363ed51ace3356b37eb173c3d6435c35022 (diff)
downloadFreeBSD-src-90300f853673b3879ab4d6a60683ff69b564c58b.zip
FreeBSD-src-90300f853673b3879ab4d6a60683ff69b564c58b.tar.gz
+ Sync with NetBSD, bringing in feature enhancements.
+ Convert to ANSI-C function definitions + style(9) Submitted by: kris
Diffstat (limited to 'lib/libedit/prompt.c')
-rw-r--r--lib/libedit/prompt.c117
1 files changed, 83 insertions, 34 deletions
diff --git a/lib/libedit/prompt.c b/lib/libedit/prompt.c
index 6baef8a..56401d6 100644
--- a/lib/libedit/prompt.c
+++ b/lib/libedit/prompt.c
@@ -32,6 +32,8 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
+ *
+ * $NetBSD: prompt.c,v 1.7 2000/09/04 22:06:31 lukem Exp $
*/
#include <sys/cdefs.h>
@@ -39,6 +41,8 @@ __FBSDID("$FreeBSD$");
#if !defined(lint) && !defined(SCCSID)
static char sccsid[] = "@(#)prompt.c 8.1 (Berkeley) 6/4/93";
#endif /* not lint && not SCCSID */
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
/*
* prompt.c: Prompt printing functions
@@ -47,18 +51,32 @@ static char sccsid[] = "@(#)prompt.c 8.1 (Berkeley) 6/4/93";
#include <stdio.h>
#include "el.h"
-private char *prompt_default __P((EditLine *));
+private char *prompt_default(EditLine *);
+private char *prompt_default_r(EditLine *);
/* prompt_default():
* Just a default prompt, in case the user did not provide one
*/
private char *
/*ARGSUSED*/
-prompt_default(el)
- EditLine *el;
+prompt_default(EditLine *el)
+{
+ static char a[3] = {'?', ' ', '\0'};
+
+ return (a);
+}
+
+
+/* prompt_default_r():
+ * Just a default rprompt, in case the user did not provide one
+ */
+private char *
+/*ARGSUSED*/
+prompt_default_r(EditLine *el)
{
- static char a[3] = { '?', ' ', '\0' };
- return a;
+ static char a[1] = {'\0'};
+
+ return (a);
}
@@ -69,31 +87,39 @@ prompt_default(el)
* bit to flag them
*/
protected void
-prompt_print(el)
- EditLine *el;
+prompt_print(EditLine *el, int op)
{
- char *p = (*el->el_prompt.p_func)(el);
- while (*p)
- re_putc(el, *p++);
+ el_prompt_t *elp;
+ char *p;
- el->el_prompt.p_pos.v = el->el_refresh.r_cursor.v;
- el->el_prompt.p_pos.h = el->el_refresh.r_cursor.h;
+ if (op == EL_PROMPT)
+ elp = &el->el_prompt;
+ else
+ elp = &el->el_rprompt;
+ p = (elp->p_func) (el);
+ while (*p)
+ re_putc(el, *p++, 1);
-} /* end prompt_print */
+ elp->p_pos.v = el->el_refresh.r_cursor.v;
+ elp->p_pos.h = el->el_refresh.r_cursor.h;
+}
/* prompt_init():
* Initialize the prompt stuff
*/
protected int
-prompt_init(el)
- EditLine *el;
+prompt_init(EditLine *el)
{
- el->el_prompt.p_func = prompt_default;
- el->el_prompt.p_pos.v = 0;
- el->el_prompt.p_pos.h = 0;
- return 0;
-} /* end prompt_init */
+
+ el->el_prompt.p_func = prompt_default;
+ el->el_prompt.p_pos.v = 0;
+ el->el_prompt.p_pos.h = 0;
+ el->el_rprompt.p_func = prompt_default_r;
+ el->el_rprompt.p_pos.v = 0;
+ el->el_rprompt.p_pos.h = 0;
+ return (0);
+}
/* prompt_end():
@@ -101,25 +127,48 @@ prompt_init(el)
*/
protected void
/*ARGSUSED*/
-prompt_end(el)
- EditLine *el;
+prompt_end(EditLine *el)
{
-} /* end prompt_end */
+}
/* prompt_set():
* Install a prompt printing function
*/
protected int
-prompt_set(el, prf)
- EditLine *el;
- el_pfunc_t prf;
+prompt_set(EditLine *el, el_pfunc_t prf, int op)
{
- if (prf == NULL)
- el->el_prompt.p_func = prompt_default;
- else
- el->el_prompt.p_func = prf;
- el->el_prompt.p_pos.v = 0;
- el->el_prompt.p_pos.h = 0;
- return 0;
-} /* end prompt_set */
+ el_prompt_t *p;
+
+ if (op == EL_PROMPT)
+ p = &el->el_prompt;
+ else
+ p = &el->el_rprompt;
+ if (prf == NULL) {
+ if (op == EL_PROMPT)
+ p->p_func = prompt_default;
+ else
+ p->p_func = prompt_default_r;
+ } else
+ p->p_func = prf;
+ p->p_pos.v = 0;
+ p->p_pos.h = 0;
+ return (0);
+}
+
+
+/* prompt_get():
+ * Retrieve the prompt printing function
+ */
+protected int
+prompt_get(EditLine *el, el_pfunc_t *prf, int op)
+{
+
+ if (prf == NULL)
+ return (-1);
+ if (op == EL_PROMPT)
+ *prf = el->el_prompt.p_func;
+ else
+ *prf = el->el_rprompt.p_func;
+ return (0);
+}
OpenPOWER on IntegriCloud