Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/lib/libedit From Ingo Schwarze:
details: https://anonhg.NetBSD.org/src/rev/780cbcc43446
branches: trunk
changeset: 814845:780cbcc43446
user: christos <christos%NetBSD.org@localhost>
date: Tue Apr 12 00:16:06 2016 +0000
description:
>From Ingo Schwarze:
* Delete the stubs of the XK_EXE mechanism that was never implemented.
From a security, stability, and simplicity perspective, i would
consider implementing it a truly terrible idea, so let's better
get rid of it.
* Do not use the local variable "num" in el_wgets() alternately for
two completely different purposes. Only use it for the number
of characters read, as stated in the comment (or -1 as long as
that number is still unknown), not for the (more or less boolean)
return value of read_getcmd(). Actually, there is no need at
all to save the latter return value after testing it once.
* The function read_getcmd() has very unusual return values:
It returns -1 for success and 0 for EOF/error. Switch that around
to 0 for success and -1 for EOF/error to be less confusing, and
get rid of the OKCMD preprocessor macro.
* Get rid of one #ifdef section in el_wgets() by using
el->el_chared.c_macro directly at the only place
where it is used.
* Delete the unused MIN() macro.
diffstat:
lib/libedit/keymacro.c | 12 ++++--------
lib/libedit/keymacro.h | 3 +--
lib/libedit/map.c | 10 ++--------
lib/libedit/read.c | 36 ++++++++++--------------------------
4 files changed, 17 insertions(+), 44 deletions(-)
diffs (242 lines):
diff -r 24d45561e184 -r 780cbcc43446 lib/libedit/keymacro.c
--- a/lib/libedit/keymacro.c Mon Apr 11 23:41:15 2016 +0000
+++ b/lib/libedit/keymacro.c Tue Apr 12 00:16:06 2016 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: keymacro.c,v 1.19 2016/04/11 18:56:31 christos Exp $ */
+/* $NetBSD: keymacro.c,v 1.20 2016/04/12 00:16:06 christos Exp $ */
/*-
* Copyright (c) 1992, 1993
@@ -37,7 +37,7 @@
#if 0
static char sccsid[] = "@(#)key.c 8.1 (Berkeley) 6/4/93";
#else
-__RCSID("$NetBSD: keymacro.c,v 1.19 2016/04/11 18:56:31 christos Exp $");
+__RCSID("$NetBSD: keymacro.c,v 1.20 2016/04/12 00:16:06 christos Exp $");
#endif
#endif /* not lint && not SCCSID */
@@ -50,7 +50,7 @@
* number of characters. This module maintains a map (the
* el->el_keymacro.map)
* to convert these extended-key sequences into input strs
- * (XK_STR), editor functions (XK_CMD), or unix commands (XK_EXE).
+ * (XK_STR) or editor functions (XK_CMD).
*
* Warning:
* If key is a substr of some other keys, then the longer
@@ -169,7 +169,7 @@
* Calls the recursive function with entry point el->el_keymacro.map
* Looks up *ch in map and then reads characters until a
* complete match is found or a mismatch occurs. Returns the
- * type of the match found (XK_STR, XK_CMD, or XK_EXE).
+ * type of the match found (XK_STR or XK_CMD).
* Returns NULL in val.str and XK_STR for no match.
* The last character read is returned in *ch.
*/
@@ -341,7 +341,6 @@
case XK_NOD:
break;
case XK_STR:
- case XK_EXE:
if (ptr->val.str)
el_free(ptr->val.str);
break;
@@ -356,7 +355,6 @@
ptr->val = *val;
break;
case XK_STR:
- case XK_EXE:
if ((ptr->val.str = wcsdup(val->str)) == NULL)
return -1;
break;
@@ -441,7 +439,6 @@
case XK_CMD:
case XK_NOD:
break;
- case XK_EXE:
case XK_STR:
if (ptr->val.str != NULL)
el_free(ptr->val.str);
@@ -594,7 +591,6 @@
if (val != NULL)
switch (ntype) {
case XK_STR:
- case XK_EXE:
(void) keymacro__decode_str(val->str, unparsbuf,
sizeof(unparsbuf),
ntype == XK_STR ? "\"\"" : "[]");
diff -r 24d45561e184 -r 780cbcc43446 lib/libedit/keymacro.h
--- a/lib/libedit/keymacro.h Mon Apr 11 23:41:15 2016 +0000
+++ b/lib/libedit/keymacro.h Tue Apr 12 00:16:06 2016 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: keymacro.h,v 1.4 2016/04/11 00:50:13 christos Exp $ */
+/* $NetBSD: keymacro.h,v 1.5 2016/04/12 00:16:06 christos Exp $ */
/*-
* Copyright (c) 1992, 1993
@@ -56,7 +56,6 @@
#define XK_CMD 0
#define XK_STR 1
#define XK_NOD 2
-#define XK_EXE 3
protected int keymacro_init(EditLine *);
protected void keymacro_end(EditLine *);
diff -r 24d45561e184 -r 780cbcc43446 lib/libedit/map.c
--- a/lib/libedit/map.c Mon Apr 11 23:41:15 2016 +0000
+++ b/lib/libedit/map.c Tue Apr 12 00:16:06 2016 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: map.c,v 1.47 2016/04/11 18:56:31 christos Exp $ */
+/* $NetBSD: map.c,v 1.48 2016/04/12 00:16:06 christos Exp $ */
/*-
* Copyright (c) 1992, 1993
@@ -37,7 +37,7 @@
#if 0
static char sccsid[] = "@(#)map.c 8.1 (Berkeley) 6/4/93";
#else
-__RCSID("$NetBSD: map.c,v 1.47 2016/04/11 18:56:31 christos Exp $");
+__RCSID("$NetBSD: map.c,v 1.48 2016/04/12 00:16:06 christos Exp $");
#endif
#endif /* not lint && not SCCSID */
@@ -1275,11 +1275,6 @@
case 's':
ntype = XK_STR;
break;
-#ifdef notyet
- case 'c':
- ntype = XK_EXE;
- break;
-#endif
case 'k':
key = 1;
break;
@@ -1352,7 +1347,6 @@
switch (ntype) {
case XK_STR:
- case XK_EXE:
if ((out = parse__string(outbuf, argv[argc])) == NULL) {
(void) fprintf(el->el_errfile,
"%ls: Invalid \\ or ^ in outstring.\n", argv[0]);
diff -r 24d45561e184 -r 780cbcc43446 lib/libedit/read.c
--- a/lib/libedit/read.c Mon Apr 11 23:41:15 2016 +0000
+++ b/lib/libedit/read.c Tue Apr 12 00:16:06 2016 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: read.c,v 1.91 2016/04/11 18:56:31 christos Exp $ */
+/* $NetBSD: read.c,v 1.92 2016/04/12 00:16:06 christos Exp $ */
/*-
* Copyright (c) 1992, 1993
@@ -37,7 +37,7 @@
#if 0
static char sccsid[] = "@(#)read.c 8.1 (Berkeley) 6/4/93";
#else
-__RCSID("$NetBSD: read.c,v 1.91 2016/04/11 18:56:31 christos Exp $");
+__RCSID("$NetBSD: read.c,v 1.92 2016/04/12 00:16:06 christos Exp $");
#endif
#endif /* not lint && not SCCSID */
@@ -55,8 +55,6 @@
#include "el.h"
-#define OKCMD -1 /* must be -1! */
-
static int read__fixio(int, int);
static int read_char(EditLine *, wchar_t *);
static int read_getcmd(EditLine *, el_action_t *, wchar_t *);
@@ -98,10 +96,6 @@
}
-#ifndef MIN
-#define MIN(A,B) ((A) < (B) ? (A) : (B))
-#endif
-
#ifdef DEBUG_EDIT
static void
read_debug(EditLine *el)
@@ -203,7 +197,8 @@
/* read_getcmd():
- * Get next command from the input stream, return OKCMD on success.
+ * Get next command from the input stream,
+ * return 0 on success or -1 on EOF or error.
* Character values > 255 are not looked up in the map, but inserted.
*/
static int
@@ -217,7 +212,7 @@
do {
if ((num = el_wgetc(el, ch)) != 1) {/* if EOF or error */
el->el_errno = num == 0 ? 0 : errno;
- return 0; /* not OKCMD */
+ return -1;
}
#ifdef KANJI
@@ -245,12 +240,6 @@
case XK_STR:
el_wpush(el, val.str);
break;
-#ifdef notyet
- case XK_EXE:
- /* XXX: In the future to run a user function */
- RunCommand(val.str);
- break;
-#endif
default:
EL_ABORT((el->el_errfile, "Bad XK_ type \n"));
break;
@@ -260,7 +249,7 @@
el->el_map.current = el->el_map.key;
} while (cmd == ED_SEQUENCE_LEAD_IN);
*cmdnum = cmd;
- return OKCMD;
+ return 0;
}
/* read_char():
@@ -449,9 +438,6 @@
wchar_t ch, *cp;
int crlf = 0;
int nrb;
-#ifdef FIONREAD
- c_macro_t *ma = &el->el_chared.c_macro;
-#endif /* FIONREAD */
if (nread == NULL)
nread = &nrb;
@@ -487,7 +473,7 @@
#ifdef FIONREAD
- if (el->el_tty.t_mode == EX_IO && ma->level < 0) {
+ if (el->el_tty.t_mode == EX_IO && el->el_chared.c_macro.level < 0) {
long chrs = 0;
(void) ioctl(el->el_infd, FIONREAD, &chrs);
@@ -540,17 +526,15 @@
goto noedit;
}
- for (num = OKCMD; num == OKCMD;) { /* while still editing this
- * line */
+ for (num = -1; num == -1;) { /* while still editing this line */
#ifdef DEBUG_EDIT
read_debug(el);
#endif /* DEBUG_EDIT */
/* if EOF or error */
- if ((num = read_getcmd(el, &cmdnum, &ch)) != OKCMD) {
- num = -1;
+ if (read_getcmd(el, &cmdnum, &ch) == -1) {
#ifdef DEBUG_READ
(void) fprintf(el->el_errfile,
- "Returning from el_gets %d\n", num);
+ "Returning from el_gets\n");
#endif /* DEBUG_READ */
break;
}
Home |
Main Index |
Thread Index |
Old Index