Module Name:    src
Committed By:   christos
Date:           Wed Feb 24 14:25:38 UTC 2016

Modified Files:
        src/lib/libedit: Makefile chared.c chartype.c common.c eln.c keymacro.c
            read.c search.c

Log Message:
Get split el_getc and el_wgetc completely and call el_wgetc internally.
Change some character constants to they wide versions. (Ingo Schwarze)


To generate a diff of this commit:
cvs rdiff -u -r1.54 -r1.55 src/lib/libedit/Makefile
cvs rdiff -u -r1.47 -r1.48 src/lib/libedit/chared.c
cvs rdiff -u -r1.19 -r1.20 src/lib/libedit/chartype.c
cvs rdiff -u -r1.38 -r1.39 src/lib/libedit/common.c src/lib/libedit/search.c
cvs rdiff -u -r1.25 -r1.26 src/lib/libedit/eln.c
cvs rdiff -u -r1.13 -r1.14 src/lib/libedit/keymacro.c
cvs rdiff -u -r1.82 -r1.83 src/lib/libedit/read.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libedit/Makefile
diff -u src/lib/libedit/Makefile:1.54 src/lib/libedit/Makefile:1.55
--- src/lib/libedit/Makefile:1.54	Wed Feb 17 14:47:49 2016
+++ src/lib/libedit/Makefile	Wed Feb 24 09:25:38 2016
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.54 2016/02/17 19:47:49 christos Exp $
+#	$NetBSD: Makefile,v 1.55 2016/02/24 14:25:38 christos Exp $
 #	@(#)Makefile	8.1 (Berkeley) 6/4/93
 
 USE_SHLIBDIR=	yes
@@ -15,7 +15,7 @@ COPTS+=	-Wunused-parameter
 CWARNFLAGS.gcc+=	-Wconversion
 CWARNFLAGS.clang+=	-Wno-cast-qual
 
-OSRCS=	chared.c common.c el.c emacs.c fcns.c filecomplete.c help.c \
+OSRCS=	chared.c common.c el.c eln.c emacs.c fcns.c filecomplete.c help.c \
 	hist.c keymacro.c map.c chartype.c \
 	parse.c prompt.c read.c refresh.c search.c sig.c terminal.c tty.c vi.c
 
@@ -37,7 +37,6 @@ MLINKS=	editline.3 el_init.3 editline.3 
 SRCS=	editline.c readline.c tokenizer.c history.c
 
 .if ${WIDECHAR} == "yes"
-OSRCS += eln.c
 SRCS += tokenizern.c historyn.c
 CLEANFILES+=tokenizern.c.tmp tokenizern.c historyn.c.tmp historyn.c
 CPPFLAGS+=-DWIDECHAR

Index: src/lib/libedit/chared.c
diff -u src/lib/libedit/chared.c:1.47 src/lib/libedit/chared.c:1.48
--- src/lib/libedit/chared.c:1.47	Wed Feb 17 14:47:49 2016
+++ src/lib/libedit/chared.c	Wed Feb 24 09:25:38 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: chared.c,v 1.47 2016/02/17 19:47:49 christos Exp $	*/
+/*	$NetBSD: chared.c,v 1.48 2016/02/24 14:25:38 christos Exp $	*/
 
 /*-
  * Copyright (c) 1992, 1993
@@ -37,7 +37,7 @@
 #if 0
 static char sccsid[] = "@(#)chared.c	8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: chared.c,v 1.47 2016/02/17 19:47:49 christos Exp $");
+__RCSID("$NetBSD: chared.c,v 1.48 2016/02/24 14:25:38 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -675,9 +675,9 @@ out:
 protected int
 c_gets(EditLine *el, Char *buf, const Char *prompt)
 {
-	Char ch;
+	wchar_t wch;
 	ssize_t len;
-	Char *cp = el->el_line.buffer;
+	Char *cp = el->el_line.buffer, ch;
 
 	if (prompt) {
 		len = (ssize_t)Strlen(prompt);
@@ -692,15 +692,16 @@ c_gets(EditLine *el, Char *buf, const Ch
 		el->el_line.lastchar = cp + 1;
 		re_refresh(el);
 
-		if (FUN(el,getc)(el, &ch) != 1) {
+		if (el_wgetc(el, &wch) != 1) {
 			ed_end_of_file(el, 0);
 			len = -1;
 			break;
 		}
+		ch = (Char)wch;
 
 		switch (ch) {
 
-		case 0010:	/* Delete and backspace */
+		case L'\b':	/* Delete and backspace */
 		case 0177:
 			if (len == 0) {
 				len = -1;
@@ -710,8 +711,8 @@ c_gets(EditLine *el, Char *buf, const Ch
 			continue;
 
 		case 0033:	/* ESC */
-		case '\r':	/* Newline */
-		case '\n':
+		case L'\r':	/* Newline */
+		case L'\n':
 			buf[len] = ch;
 			break;
 

Index: src/lib/libedit/chartype.c
diff -u src/lib/libedit/chartype.c:1.19 src/lib/libedit/chartype.c:1.20
--- src/lib/libedit/chartype.c:1.19	Wed Feb 17 14:47:49 2016
+++ src/lib/libedit/chartype.c	Wed Feb 24 09:25:38 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: chartype.c,v 1.19 2016/02/17 19:47:49 christos Exp $	*/
+/*	$NetBSD: chartype.c,v 1.20 2016/02/24 14:25:38 christos Exp $	*/
 
 /*-
  * Copyright (c) 2009 The NetBSD Foundation, Inc.
@@ -38,7 +38,7 @@
  */
 #include "config.h"
 #if !defined(lint) && !defined(SCCSID)
-__RCSID("$NetBSD: chartype.c,v 1.19 2016/02/17 19:47:49 christos Exp $");
+__RCSID("$NetBSD: chartype.c,v 1.20 2016/02/24 14:25:38 christos Exp $");
 #endif /* not lint && not SCCSID */
 
 #include <ctype.h>
@@ -218,8 +218,9 @@ ct_encode_char(char *dst, size_t len, Ch
 #else
 
 size_t
+/*ARGSUSED*/
 ct_mbrtowc(char *wc, const char *s, size_t n,
-    void *mbs __attribute((__unused__))) {
+    void *mbs __attribute__((__unused__))) {
 	if (s == NULL)
 		return 0;
 	if (n == 0)

Index: src/lib/libedit/common.c
diff -u src/lib/libedit/common.c:1.38 src/lib/libedit/common.c:1.39
--- src/lib/libedit/common.c:1.38	Wed Feb 17 14:47:49 2016
+++ src/lib/libedit/common.c	Wed Feb 24 09:25:38 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: common.c,v 1.38 2016/02/17 19:47:49 christos Exp $	*/
+/*	$NetBSD: common.c,v 1.39 2016/02/24 14:25:38 christos Exp $	*/
 
 /*-
  * Copyright (c) 1992, 1993
@@ -37,7 +37,7 @@
 #if 0
 static char sccsid[] = "@(#)common.c	8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: common.c,v 1.38 2016/02/17 19:47:49 christos Exp $");
+__RCSID("$NetBSD: common.c,v 1.39 2016/02/24 14:25:38 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -365,11 +365,9 @@ protected el_action_t
 ed_quoted_insert(EditLine *el, wint_t c)
 {
 	int num;
-	Char tc;
 
 	tty_quotemode(el);
-	num = FUN(el,getc)(el, &tc);
-	c = tc;
+	num = el_wgetc(el, &c);
 	tty_noquotemode(el);
 	if (num == 1)
 		return ed_insert(el, c);
Index: src/lib/libedit/search.c
diff -u src/lib/libedit/search.c:1.38 src/lib/libedit/search.c:1.39
--- src/lib/libedit/search.c:1.38	Tue Feb 16 17:53:14 2016
+++ src/lib/libedit/search.c	Wed Feb 24 09:25:38 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: search.c,v 1.38 2016/02/16 22:53:14 christos Exp $	*/
+/*	$NetBSD: search.c,v 1.39 2016/02/24 14:25:38 christos Exp $	*/
 
 /*-
  * Copyright (c) 1992, 1993
@@ -37,7 +37,7 @@
 #if 0
 static char sccsid[] = "@(#)search.c	8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: search.c,v 1.38 2016/02/16 22:53:14 christos Exp $");
+__RCSID("$NetBSD: search.c,v 1.39 2016/02/24 14:25:38 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -212,8 +212,9 @@ ce_inc_search(EditLine *el, int dir)
 	     STRbck[] = {'b', 'c', 'k', '\0'};
 	static Char pchar = ':';/* ':' = normal, '?' = failed */
 	static Char endcmd[2] = {'\0', '\0'};
-	Char ch, *ocursor = el->el_line.cursor, oldpchar = pchar;
+	Char *ocursor = el->el_line.cursor, oldpchar = pchar, ch;
 	const Char *cp;
+	wchar_t wch;
 
 	el_action_t ret = CC_NORM;
 
@@ -252,9 +253,11 @@ ce_inc_search(EditLine *el, int dir)
 		*el->el_line.lastchar = '\0';
 		re_refresh(el);
 
-		if (FUN(el,getc)(el, &ch) != 1)
+		if (el_wgetc(el, &wch) != 1)
 			return ed_end_of_file(el, 0);
 
+		ch = (Char)wch;
+
 		switch (el->el_map.current[(unsigned char) ch]) {
 		case ED_INSERT:
 		case ED_DIGIT:
@@ -348,14 +351,14 @@ ce_inc_search(EditLine *el, int dir)
 
 			/* Can't search if unmatched '[' */
 			for (cp = &el->el_search.patbuf[el->el_search.patlen-1],
-			    ch = ']';
+			    ch = L']';
 			    cp >= &el->el_search.patbuf[LEN];
 			    cp--)
 				if (*cp == '[' || *cp == ']') {
 					ch = *cp;
 					break;
 				}
-			if (el->el_search.patlen > LEN && ch != '[') {
+			if (el->el_search.patlen > LEN && ch != L'[') {
 				if (redo && newdir == dir) {
 					if (pchar == '?') { /* wrap around */
 						el->el_history.eventno =
@@ -604,10 +607,8 @@ cv_csearch(EditLine *el, int direction, 
 		return CC_ERROR;
 
 	if (ch == (wint_t)-1) {
-		Char c;
-		if (FUN(el,getc)(el, &c) != 1)
+		if (el_wgetc(el, &ch) != 1)
 			return ed_end_of_file(el, 0);
-		ch = c;
 	}
 
 	/* Save for ';' and ',' commands */

Index: src/lib/libedit/eln.c
diff -u src/lib/libedit/eln.c:1.25 src/lib/libedit/eln.c:1.26
--- src/lib/libedit/eln.c:1.25	Tue Feb 16 10:53:48 2016
+++ src/lib/libedit/eln.c	Wed Feb 24 09:25:38 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: eln.c,v 1.25 2016/02/16 15:53:48 christos Exp $	*/
+/*	$NetBSD: eln.c,v 1.26 2016/02/24 14:25:38 christos Exp $	*/
 
 /*-
  * Copyright (c) 2009 The NetBSD Foundation, Inc.
@@ -34,7 +34,7 @@
  */
 #include "config.h"
 #if !defined(lint) && !defined(SCCSID)
-__RCSID("$NetBSD: eln.c,v 1.25 2016/02/16 15:53:48 christos Exp $");
+__RCSID("$NetBSD: eln.c,v 1.26 2016/02/24 14:25:38 christos Exp $");
 #endif /* not lint && not SCCSID */
 
 #include <errno.h>
@@ -65,6 +65,7 @@ el_getc(EditLine *el, char *cp)
 }
 
 
+#ifdef WIDECHAR
 public void
 el_push(EditLine *el, const char *str)
 {
@@ -398,3 +399,4 @@ el_insertstr(EditLine *el, const char *s
 {
 	return el_winsertstr(el, ct_decode_string(str, &el->el_lgcyconv));
 }
+#endif /* WIDECHAR */

Index: src/lib/libedit/keymacro.c
diff -u src/lib/libedit/keymacro.c:1.13 src/lib/libedit/keymacro.c:1.14
--- src/lib/libedit/keymacro.c:1.13	Wed Feb 17 14:47:49 2016
+++ src/lib/libedit/keymacro.c	Wed Feb 24 09:25:38 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: keymacro.c,v 1.13 2016/02/17 19:47:49 christos Exp $	*/
+/*	$NetBSD: keymacro.c,v 1.14 2016/02/24 14:25:38 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.13 2016/02/17 19:47:49 christos Exp $");
+__RCSID("$NetBSD: keymacro.c,v 1.14 2016/02/24 14:25:38 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -280,16 +280,18 @@ keymacro_print(EditLine *el, const Char 
 private int
 node_trav(EditLine *el, keymacro_node_t *ptr, Char *ch, keymacro_value_t *val)
 {
+	wchar_t wc;
 
 	if (ptr->ch == *ch) {
 		/* match found */
 		if (ptr->next) {
 			/* key not complete so get next char */
-			if (FUN(el,getc)(el, ch) != 1) {/* if EOF or error */
+			if (el_wgetc(el, &wc) != 1) {/* if EOF or error */
 				val->cmd = ED_END_OF_FILE;
 				return XK_CMD;
 				/* PWP: Pretend we just read an end-of-file */
 			}
+			*ch = (Char)wc;
 			return node_trav(el, ptr->next, ch, val);
 		} else {
 			*val = ptr->val;

Index: src/lib/libedit/read.c
diff -u src/lib/libedit/read.c:1.82 src/lib/libedit/read.c:1.83
--- src/lib/libedit/read.c:1.82	Wed Feb 17 14:47:49 2016
+++ src/lib/libedit/read.c	Wed Feb 24 09:25:38 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: read.c,v 1.82 2016/02/17 19:47:49 christos Exp $	*/
+/*	$NetBSD: read.c,v 1.83 2016/02/24 14:25:38 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.82 2016/02/17 19:47:49 christos Exp $");
+__RCSID("$NetBSD: read.c,v 1.83 2016/02/24 14:25:38 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -244,14 +244,16 @@ read_getcmd(EditLine *el, el_action_t *c
 {
 	static const Char meta = (Char)0x80;
 	el_action_t cmd;
+	wchar_t wc;
 	int num;
 
 	el->el_errno = 0;
 	do {
-		if ((num = FUN(el,getc)(el, ch)) != 1) {/* if EOF or error */
+		if ((num = el_wgetc(el, &wc)) != 1) {/* if EOF or error */
 			el->el_errno = num == 0 ? 0 : errno;
 			return 0;	/* not OKCMD */
 		}
+		*ch = (Char)wc;
 
 #ifdef	KANJI
 		if ((*ch & meta)) {
@@ -397,14 +399,15 @@ read_pop(c_macro_t *ma)
 	ma->offset = 0;
 }
 
-/* el_getc():
- *	Read a character
+/* el_wgetc():
+ *	Read a wide character
  */
 public int
-FUN(el,getc)(EditLine *el, Char *cp)
+el_wgetc(EditLine *el, wchar_t *cp)
 {
 	int num_read;
 	c_macro_t *ma = &el->el_chared.c_macro;
+	Char cp_temp;
 
 	terminal__flush(el);
 	for (;;) {
@@ -440,15 +443,16 @@ FUN(el,getc)(EditLine *el, Char *cp)
 #ifdef DEBUG_READ
 	(void) fprintf(el->el_errfile, "Reading a character\n");
 #endif /* DEBUG_READ */
-	num_read = (*el->el_read.read_char)(el, cp);
+	num_read = (*el->el_read.read_char)(el, &cp_temp);
 	if (num_read < 0)
 		el->el_errno = errno;
+	*cp = cp_temp;
 #ifdef WIDECHAR
 	if (el->el_flags & NARROW_READ)
 		*cp = *(char *)(void *)cp;
 #endif
 #ifdef DEBUG_READ
-	(void) fprintf(el->el_errfile, "Got it %c\n", *cp);
+	(void) fprintf(el->el_errfile, "Got it %lc\n", *cp);
 #endif /* DEBUG_READ */
 	return num_read;
 }

Reply via email to