summaryrefslogtreecommitdiff
path: root/lib/libedit/parse.c
diff options
context:
space:
mode:
authorTodd C. Miller <millert@cvs.openbsd.org>1997-01-16 05:18:56 +0000
committerTodd C. Miller <millert@cvs.openbsd.org>1997-01-16 05:18:56 +0000
commitd811c9277c942ef81ec5f325ae55337ff3089842 (patch)
treeaf13e7c0dcb8d4e9d9d938bce60eb610f8bb6748 /lib/libedit/parse.c
parent891d48fc5656bed485ad5e2b5e154786b9f84d2e (diff)
Merge in NetBSD libedit changes and new man pages. Also fix some
strncpy() usage in their code. NetBSD change log was: * add a man page for the editline routines * add a man page describing editrc * fix bugs in el_parse(): * didn't execute command when program name matched (test reversed) * was checking against empty string instead of program name * after checks, command to run also pointed to empty string * document ^char and \ escape sequences * when parsing ^char control chars, check the correct char when determining validity (previously, ^char was a NOP interpreted as the literal string because of this bug) * Implement CC_REDISPLAY, which (unlike CC_REFRESH) redraws the entire input * line (a la ^R). This is useful if the binding outputs information and * mucks up the input line. To be used in ``list-choices'' bindings (refer * to the ^D binding in csh when filec is set)
Diffstat (limited to 'lib/libedit/parse.c')
-rw-r--r--lib/libedit/parse.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/lib/libedit/parse.c b/lib/libedit/parse.c
index 2fe746f370b..b88f74e8d30 100644
--- a/lib/libedit/parse.c
+++ b/lib/libedit/parse.c
@@ -1,3 +1,5 @@
+/* $OpenBSD: parse.c,v 1.2 1997/01/16 05:18:39 millert Exp $ */
+
/*-
* Copyright (c) 1992, 1993
* The Regents of the University of California. All rights reserved.
@@ -35,7 +37,11 @@
*/
#if !defined(lint) && !defined(SCCSID)
+#if 0
static char sccsid[] = "@(#)parse.c 8.1 (Berkeley) 6/4/93";
+#else
+static char rcsid[] = "$OpenBSD: parse.c,v 1.2 1997/01/16 05:18:39 millert Exp $";
+#endif
#endif /* not lint && not SCCSID */
/*
@@ -45,8 +51,10 @@ static char sccsid[] = "@(#)parse.c 8.1 (Berkeley) 6/4/93";
*
* bind
* echotc
- * settc
* gettc
+ * history
+ * settc
+ * setty
*/
#include "sys.h"
#include "el.h"
@@ -97,12 +105,12 @@ el_parse(el, argc, argv)
char *ptr;
int i;
- for (ptr = argv[0]; *ptr && *ptr != ':'; ptr++)
- continue;
-
- if (*ptr == ':') {
- *ptr = '\0';
- if (el_match(el->el_prog, ptr))
+ if (argc < 1)
+ return -1;
+ ptr = strchr(argv[0], ':');
+ if (ptr != NULL) {
+ *ptr++ = '\0';
+ if (! el_match(el->el_prog, argv[0]))
return 0;
}
else
@@ -190,7 +198,7 @@ parse__escape(ptr)
break;
}
}
- else if (*p == '^' && isalpha((unsigned char) *p)) {
+ else if (*p == '^' && isalpha((unsigned char) p[1])) {
p++;
c = (*p == '?') ? '\177' : (*p & 0237);
}