Module Name:    src
Committed By:   christos
Date:           Mon Apr 11 00:22:48 UTC 2016

Modified Files:
        src/lib/libedit: chared.c chartype.h common.c el.c eln.c filecomplete.c
            hist.c hist.h history.c keymacro.c makelist map.c parse.c read.c
            refresh.c search.c terminal.c tokenizer.c tty.c vi.c

Log Message:
more macro WIDECHAR undoing from Ingo Schwarze.


To generate a diff of this commit:
cvs rdiff -u -r1.50 -r1.51 src/lib/libedit/chared.c
cvs rdiff -u -r1.27 -r1.28 src/lib/libedit/chartype.h
cvs rdiff -u -r1.41 -r1.42 src/lib/libedit/common.c \
    src/lib/libedit/filecomplete.c src/lib/libedit/search.c
cvs rdiff -u -r1.85 -r1.86 src/lib/libedit/el.c
cvs rdiff -u -r1.30 -r1.31 src/lib/libedit/eln.c
cvs rdiff -u -r1.26 -r1.27 src/lib/libedit/hist.c src/lib/libedit/terminal.c
cvs rdiff -u -r1.19 -r1.20 src/lib/libedit/hist.h
cvs rdiff -u -r1.53 -r1.54 src/lib/libedit/history.c
cvs rdiff -u -r1.16 -r1.17 src/lib/libedit/keymacro.c
cvs rdiff -u -r1.25 -r1.26 src/lib/libedit/makelist
cvs rdiff -u -r1.44 -r1.45 src/lib/libedit/map.c
cvs rdiff -u -r1.35 -r1.36 src/lib/libedit/parse.c
cvs rdiff -u -r1.88 -r1.89 src/lib/libedit/read.c
cvs rdiff -u -r1.46 -r1.47 src/lib/libedit/refresh.c
cvs rdiff -u -r1.24 -r1.25 src/lib/libedit/tokenizer.c
cvs rdiff -u -r1.60 -r1.61 src/lib/libedit/tty.c
cvs rdiff -u -r1.57 -r1.58 src/lib/libedit/vi.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/chared.c
diff -u src/lib/libedit/chared.c:1.50 src/lib/libedit/chared.c:1.51
--- src/lib/libedit/chared.c:1.50	Sat Apr  9 14:43:17 2016
+++ src/lib/libedit/chared.c	Sun Apr 10 20:22:48 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: chared.c,v 1.50 2016/04/09 18:43:17 christos Exp $	*/
+/*	$NetBSD: chared.c,v 1.51 2016/04/11 00:22:48 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.50 2016/04/09 18:43:17 christos Exp $");
+__RCSID("$NetBSD: chared.c,v 1.51 2016/04/11 00:22:48 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -205,7 +205,7 @@ c_delbefore1(EditLine *el)
 protected int
 ce__isword(wint_t p)
 {
-	return iswalnum(p) || Strchr(STR("*?_-.[]~="), p) != NULL;
+	return iswalnum(p) || wcschr(L"*?_-.[]~=", p) != NULL;
 }
 
 
@@ -614,11 +614,11 @@ ch_end(EditLine *el)
  *	Insert string at cursorI
  */
 public int
-FUN(el,insertstr)(EditLine *el, const Char *s)
+el_winsertstr(EditLine *el, const Char *s)
 {
 	size_t len;
 
-	if (s == NULL || (len = Strlen(s)) == 0)
+	if (s == NULL || (len = wcslen(s)) == 0)
 		return -1;
 	if (el->el_line.lastchar + len >= el->el_line.limit) {
 		if (!ch_enlargebufs(el, len))
@@ -680,7 +680,7 @@ c_gets(EditLine *el, Char *buf, const Ch
 	Char *cp = el->el_line.buffer, ch;
 
 	if (prompt) {
-		len = (ssize_t)Strlen(prompt);
+		len = (ssize_t)wcslen(prompt);
 		(void)memcpy(cp, prompt, (size_t)len * sizeof(*cp));
 		cp += len;
 	}

Index: src/lib/libedit/chartype.h
diff -u src/lib/libedit/chartype.h:1.27 src/lib/libedit/chartype.h:1.28
--- src/lib/libedit/chartype.h:1.27	Sat Apr  9 14:43:17 2016
+++ src/lib/libedit/chartype.h	Sun Apr 10 20:22:48 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: chartype.h,v 1.27 2016/04/09 18:43:17 christos Exp $	*/
+/*	$NetBSD: chartype.h,v 1.28 2016/04/11 00:22:48 christos Exp $	*/
 
 /*-
  * Copyright (c) 2009 The NetBSD Foundation, Inc.
@@ -52,35 +52,8 @@
 #endif
 
 #define Char			wchar_t
-#define FUN(prefix,rest)	prefix ## _w ## rest
-#define FUNW(type)		type ## _w
-#define TYPE(type)		type ## W
-#define STR(x)			L ## x
-
-#define Strlen(x)       wcslen(x)
-#define Strchr(s,c)     wcschr(s,c)
-#define Strdup(x)       wcsdup(x)
-#define Strncpy(d,s,n)  wcsncpy(d,s,n)
-#define Strncat(d,s,n)  wcsncat(d,s,n)
-#define Strcmp(s,v)     wcscmp(s,v)
-#define Strncmp(s,v,n)  wcsncmp(s,v,n)
-
 #else /* NARROW */
-
 #define Char			char
-#define FUN(prefix,rest)	prefix ## _ ## rest
-#define FUNW(type)		type
-#define TYPE(type)		type
-#define STR(x)			x
-
-#define Strlen(x)       strlen(x)
-#define Strchr(s,c)     strchr(s,c)
-#define Strdup(x)       strdup(x)
-#define Strncpy(d,s,n)  strncpy(d,s,n)
-#define Strncat(d,s,n)  strncat(d,s,n)
-
-#define Strcmp(s,v)     strcmp(s,v)
-#define Strncmp(s,v,n)  strncmp(s,v,n)
 #endif
 
 

Index: src/lib/libedit/common.c
diff -u src/lib/libedit/common.c:1.41 src/lib/libedit/common.c:1.42
--- src/lib/libedit/common.c:1.41	Sat Apr  9 14:43:17 2016
+++ src/lib/libedit/common.c	Sun Apr 10 20:22:48 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: common.c,v 1.41 2016/04/09 18:43:17 christos Exp $	*/
+/*	$NetBSD: common.c,v 1.42 2016/04/11 00:22:48 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.41 2016/04/09 18:43:17 christos Exp $");
+__RCSID("$NetBSD: common.c,v 1.42 2016/04/11 00:22:48 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -652,7 +652,7 @@ ed_prev_history(EditLine *el, wint_t c _
 
 	if (el->el_history.eventno == 0) {	/* save the current buffer
 						 * away */
-		(void) Strncpy(el->el_history.buf, el->el_line.buffer,
+		(void) wcsncpy(el->el_history.buf, el->el_line.buffer,
 		    EL_BUFSIZ);
 		el->el_history.last = el->el_history.buf +
 		    (el->el_line.lastchar - el->el_line.buffer);
@@ -724,7 +724,7 @@ ed_search_prev_history(EditLine *el, win
 		return CC_ERROR;
 	}
 	if (el->el_history.eventno == 0) {
-		(void) Strncpy(el->el_history.buf, el->el_line.buffer,
+		(void) wcsncpy(el->el_history.buf, el->el_line.buffer,
 		    EL_BUFSIZ);
 		el->el_history.last = el->el_history.buf +
 		    (el->el_line.lastchar - el->el_line.buffer);
@@ -745,7 +745,7 @@ ed_search_prev_history(EditLine *el, win
 #ifdef SDEBUG
 		(void) fprintf(el->el_errfile, "Comparing with \"%s\"\n", hp);
 #endif
-		if ((Strncmp(hp, el->el_line.buffer, (size_t)
+		if ((wcsncmp(hp, el->el_line.buffer, (size_t)
 			    (el->el_line.lastchar - el->el_line.buffer)) ||
 			hp[el->el_line.lastchar - el->el_line.buffer]) &&
 		    c_hmatch(el, hp)) {
@@ -800,7 +800,7 @@ ed_search_next_history(EditLine *el, win
 #ifdef SDEBUG
 		(void) fprintf(el->el_errfile, "Comparing with \"%s\"\n", hp);
 #endif
-		if ((Strncmp(hp, el->el_line.buffer, (size_t)
+		if ((wcsncmp(hp, el->el_line.buffer, (size_t)
 			    (el->el_line.lastchar - el->el_line.buffer)) ||
 			hp[el->el_line.lastchar - el->el_line.buffer]) &&
 		    c_hmatch(el, hp))
@@ -910,7 +910,7 @@ ed_command(EditLine *el, wint_t c __attr
 	Char tmpbuf[EL_BUFSIZ];
 	int tmplen;
 
-	tmplen = c_gets(el, tmpbuf, STR("\n: "));
+	tmplen = c_gets(el, tmpbuf, L"\n: ");
 	terminal__putc(el, '\n');
 
 	if (tmplen < 0 || (tmpbuf[tmplen] = 0, parse_line(el, tmpbuf)) == -1)
Index: src/lib/libedit/filecomplete.c
diff -u src/lib/libedit/filecomplete.c:1.41 src/lib/libedit/filecomplete.c:1.42
--- src/lib/libedit/filecomplete.c:1.41	Sat Apr  9 14:47:05 2016
+++ src/lib/libedit/filecomplete.c	Sun Apr 10 20:22:48 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: filecomplete.c,v 1.41 2016/04/09 18:47:05 christos Exp $	*/
+/*	$NetBSD: filecomplete.c,v 1.42 2016/04/11 00:22:48 christos Exp $	*/
 
 /*-
  * Copyright (c) 1997 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include "config.h"
 #if !defined(lint) && !defined(SCCSID)
-__RCSID("$NetBSD: filecomplete.c,v 1.41 2016/04/09 18:47:05 christos Exp $");
+__RCSID("$NetBSD: filecomplete.c,v 1.42 2016/04/11 00:22:48 christos Exp $");
 #endif /* not lint && not SCCSID */
 
 #include <sys/types.h>
@@ -414,7 +414,7 @@ fn_complete(EditLine *el,
 	const char *(*app_func)(const char *), size_t query_items,
 	int *completion_type, int *over, int *point, int *end)
 {
-	const TYPE(LineInfo) *li;
+	const LineInfoW *li;
 	Char *temp;
         char **matches;
 	const Char *ctemp;
@@ -435,16 +435,16 @@ fn_complete(EditLine *el,
 		app_func = append_char_function;
 
 	/* We now look backwards for the start of a filename/variable word */
-	li = FUN(el,line)(el);
+	li = el_wline(el);
 	ctemp = li->cursor;
 	while (ctemp > li->buffer
-	    && !Strchr(word_break, ctemp[-1])
-	    && (!special_prefixes || !Strchr(special_prefixes, ctemp[-1]) ) )
+	    && !wcschr(word_break, ctemp[-1])
+	    && (!special_prefixes || !wcschr(special_prefixes, ctemp[-1]) ) )
 		ctemp--;
 
 	len = (size_t)(li->cursor - ctemp);
 	temp = el_malloc((len + 1) * sizeof(*temp));
-	(void)Strncpy(temp, ctemp, len);
+	(void)wcsncpy(temp, ctemp, len);
 	temp[len] = '\0';
 
 	/* these can be used by function called in completion_matches() */
@@ -480,7 +480,7 @@ fn_complete(EditLine *el,
 		 */
 		if (matches[0][0] != '\0') {
 			el_deletestr(el, (int) len);
-			FUN(el,insertstr)(el,
+			el_winsertstr(el,
 			    ct_decode_string(matches[0], &el->el_scratch));
 		}
 
@@ -494,7 +494,7 @@ fn_complete(EditLine *el,
 			 * it, unless we do filename completion and the
 			 * object is a directory.
 			 */
-			FUN(el,insertstr)(el,
+			el_winsertstr(el,
 			    ct_decode_string((*app_func)(matches[0]),
 			    &el->el_scratch));
 		} else if (what_to_do == '!') {
Index: src/lib/libedit/search.c
diff -u src/lib/libedit/search.c:1.41 src/lib/libedit/search.c:1.42
--- src/lib/libedit/search.c:1.41	Sat Apr  9 14:43:17 2016
+++ src/lib/libedit/search.c	Sun Apr 10 20:22:48 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: search.c,v 1.41 2016/04/09 18:43:17 christos Exp $	*/
+/*	$NetBSD: search.c,v 1.42 2016/04/11 00:22:48 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.41 2016/04/09 18:43:17 christos Exp $");
+__RCSID("$NetBSD: search.c,v 1.42 2016/04/11 00:22:48 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -181,11 +181,11 @@ c_setpat(EditLine *el)
 		if (el->el_search.patlen >= EL_BUFSIZ)
 			el->el_search.patlen = EL_BUFSIZ - 1;
 		if (el->el_search.patlen != 0) {
-			(void) Strncpy(el->el_search.patbuf, el->el_line.buffer,
+			(void) wcsncpy(el->el_search.patbuf, el->el_line.buffer,
 			    el->el_search.patlen);
 			el->el_search.patbuf[el->el_search.patlen] = '\0';
 		} else
-			el->el_search.patlen = Strlen(el->el_search.patbuf);
+			el->el_search.patlen = wcslen(el->el_search.patbuf);
 	}
 #ifdef SDEBUG
 	(void) fprintf(el->el_errfile, "\neventno = %d\n",
@@ -329,7 +329,7 @@ ce_inc_search(EditLine *el, int dir)
 
 			default:	/* Terminate and execute cmd */
 				endcmd[0] = ch;
-				FUN(el,push)(el, endcmd);
+				el_wpush(el, endcmd);
 				/* FALLTHROUGH */
 
 			case 0033:	/* ESC: Terminate */
@@ -470,7 +470,7 @@ cv_search(EditLine *el, int dir)
 	el->el_search.patdir = dir;
 
 	tmplen = c_gets(el, &tmpbuf[LEN],
-		dir == ED_SEARCH_PREV_HISTORY ? STR("\n/") : STR("\n?") );
+		dir == ED_SEARCH_PREV_HISTORY ? L"\n/" : L"\n?" );
 	if (tmplen == -1)
 		return CC_REFRESH;
 
@@ -489,11 +489,11 @@ cv_search(EditLine *el, int dir)
 #ifdef ANCHOR
 		if (el->el_search.patbuf[0] != '.' &&
 		    el->el_search.patbuf[0] != '*') {
-			(void) Strncpy(tmpbuf, el->el_search.patbuf,
+			(void) wcsncpy(tmpbuf, el->el_search.patbuf,
 			    sizeof(tmpbuf) / sizeof(*tmpbuf) - 1);
 			el->el_search.patbuf[0] = '.';
 			el->el_search.patbuf[1] = '*';
-			(void) Strncpy(&el->el_search.patbuf[2], tmpbuf,
+			(void) wcsncpy(&el->el_search.patbuf[2], tmpbuf,
 			    EL_BUFSIZ - 3);
 			el->el_search.patlen++;
 			el->el_search.patbuf[el->el_search.patlen++] = '.';
@@ -507,7 +507,7 @@ cv_search(EditLine *el, int dir)
 		tmpbuf[tmplen++] = '*';
 #endif
 		tmpbuf[tmplen] = '\0';
-		(void) Strncpy(el->el_search.patbuf, tmpbuf, EL_BUFSIZ - 1);
+		(void) wcsncpy(el->el_search.patbuf, tmpbuf, EL_BUFSIZ - 1);
 		el->el_search.patlen = (size_t)tmplen;
 	}
 	el->el_state.lastcmd = (el_action_t) dir;	/* avoid c_setpat */

Index: src/lib/libedit/el.c
diff -u src/lib/libedit/el.c:1.85 src/lib/libedit/el.c:1.86
--- src/lib/libedit/el.c:1.85	Sat Apr  9 14:43:17 2016
+++ src/lib/libedit/el.c	Sun Apr 10 20:22:48 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: el.c,v 1.85 2016/04/09 18:43:17 christos Exp $	*/
+/*	$NetBSD: el.c,v 1.86 2016/04/11 00:22:48 christos Exp $	*/
 
 /*-
  * Copyright (c) 1992, 1993
@@ -37,7 +37,7 @@
 #if 0
 static char sccsid[] = "@(#)el.c	8.2 (Berkeley) 1/3/94";
 #else
-__RCSID("$NetBSD: el.c,v 1.85 2016/04/09 18:43:17 christos Exp $");
+__RCSID("$NetBSD: el.c,v 1.86 2016/04/11 00:22:48 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -85,7 +85,7 @@ el_init_fd(const char *prog, FILE *fin, 
 	el->el_outfd = fdout;
 	el->el_errfd = fderr;
 
-	el->el_prog = Strdup(ct_decode_string(prog, &el->el_scratch));
+	el->el_prog = wcsdup(ct_decode_string(prog, &el->el_scratch));
 	if (el->el_prog == NULL) {
 		el_free(el);
 		return NULL;
@@ -168,7 +168,7 @@ el_reset(EditLine *el)
  *	set the editline parameters
  */
 public int
-FUN(el,set)(EditLine *el, int op, ...)
+el_wset(EditLine *el, int op, ...)
 {
 	va_list ap;
 	int rv = 0;
@@ -239,27 +239,27 @@ FUN(el,set)(EditLine *el, int op, ...)
 
 		switch (op) {
 		case EL_BIND:
-			argv[0] = STR("bind");
+			argv[0] = L"bind";
 			rv = map_bind(el, i, argv);
 			break;
 
 		case EL_TELLTC:
-			argv[0] = STR("telltc");
+			argv[0] = L"telltc";
 			rv = terminal_telltc(el, i, argv);
 			break;
 
 		case EL_SETTC:
-			argv[0] = STR("settc");
+			argv[0] = L"settc";
 			rv = terminal_settc(el, i, argv);
 			break;
 
 		case EL_ECHOTC:
-			argv[0] = STR("echotc");
+			argv[0] = L"echotc";
 			rv = terminal_echotc(el, i, argv);
 			break;
 
 		case EL_SETTY:
-			argv[0] = STR("setty");
+			argv[0] = L"setty";
 			rv = tty_stty(el, i, argv);
 			break;
 
@@ -381,7 +381,7 @@ FUN(el,set)(EditLine *el, int op, ...)
  *	retrieve the editline parameters
  */
 public int
-FUN(el,get)(EditLine *el, int op, ...)
+el_wget(EditLine *el, int op, ...)
 {
 	va_list ap;
 	int rv;
@@ -493,11 +493,11 @@ FUN(el,get)(EditLine *el, int op, ...)
 /* el_line():
  *	Return editing info
  */
-public const TYPE(LineInfo) *
-FUN(el,line)(EditLine *el)
+public const LineInfoW *
+el_wline(EditLine *el)
 {
 
-	return (const TYPE(LineInfo) *)(void *)&el->el_line;
+	return (const LineInfoW *)(void *)&el->el_line;
 }
 
 
@@ -618,10 +618,10 @@ el_editmode(EditLine *el, int argc, cons
 		return -1;
 
 	how = argv[1];
-	if (Strcmp(how, STR("on")) == 0) {
+	if (wcscmp(how, L"on") == 0) {
 		el->el_flags &= ~EDIT_DISABLED;
 		tty_rawmode(el);
-	} else if (Strcmp(how, STR("off")) == 0) {
+	} else if (wcscmp(how, L"off") == 0) {
 		tty_cookedmode(el);
 		el->el_flags |= EDIT_DISABLED;
 	}

Index: src/lib/libedit/eln.c
diff -u src/lib/libedit/eln.c:1.30 src/lib/libedit/eln.c:1.31
--- src/lib/libedit/eln.c:1.30	Sat Apr  9 14:43:17 2016
+++ src/lib/libedit/eln.c	Sun Apr 10 20:22:48 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: eln.c,v 1.30 2016/04/09 18:43:17 christos Exp $	*/
+/*	$NetBSD: eln.c,v 1.31 2016/04/11 00:22:48 christos Exp $	*/
 
 /*-
  * Copyright (c) 2009 The NetBSD Foundation, Inc.
@@ -27,7 +27,7 @@
  */
 #include "config.h"
 #if !defined(lint) && !defined(SCCSID)
-__RCSID("$NetBSD: eln.c,v 1.30 2016/04/09 18:43:17 christos Exp $");
+__RCSID("$NetBSD: eln.c,v 1.31 2016/04/11 00:22:48 christos Exp $");
 #endif /* not lint && not SCCSID */
 
 #include <errno.h>
@@ -184,23 +184,23 @@ el_set(EditLine *el, int op, ...)
 		 */
 		switch (op) {
 		case EL_BIND:
-			wargv[0] = STR("bind");
+			wargv[0] = L"bind";
 			ret = map_bind(el, i, wargv);
 			break;
 		case EL_TELLTC:
-			wargv[0] = STR("telltc");
+			wargv[0] = L"telltc";
 			ret = terminal_telltc(el, i, wargv);
 			break;
 		case EL_SETTC:
-			wargv[0] = STR("settc");
+			wargv[0] = L"settc";
 			ret = terminal_settc(el, i, wargv);
 			break;
 		case EL_ECHOTC:
-			wargv[0] = STR("echotc");
+			wargv[0] = L"echotc";
 			ret = terminal_echotc(el, i, wargv);
 			break;
 		case EL_SETTY:
-			wargv[0] = STR("setty");
+			wargv[0] = L"setty";
 			ret = tty_stty(el, i, wargv);
 			break;
 		default:
@@ -226,7 +226,7 @@ el_set(EditLine *el, int op, ...)
 		    goto out;
 		}
 		/* XXX: The two strdup's leak */
-		ret = map_addfunc(el, Strdup(wargv[0]), Strdup(wargv[1]),
+		ret = map_addfunc(el, wcsdup(wargv[0]), wcsdup(wargv[1]),
 		    func);
 		el_free(wargv);
 		break;

Index: src/lib/libedit/hist.c
diff -u src/lib/libedit/hist.c:1.26 src/lib/libedit/hist.c:1.27
--- src/lib/libedit/hist.c:1.26	Sat Apr  9 14:43:17 2016
+++ src/lib/libedit/hist.c	Sun Apr 10 20:22:48 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: hist.c,v 1.26 2016/04/09 18:43:17 christos Exp $	*/
+/*	$NetBSD: hist.c,v 1.27 2016/04/11 00:22:48 christos Exp $	*/
 
 /*-
  * Copyright (c) 1992, 1993
@@ -37,7 +37,7 @@
 #if 0
 static char sccsid[] = "@(#)hist.c	8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: hist.c,v 1.26 2016/04/09 18:43:17 christos Exp $");
+__RCSID("$NetBSD: hist.c,v 1.27 2016/04/11 00:22:48 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -103,7 +103,7 @@ hist_get(EditLine *el)
 	int h;
 
 	if (el->el_history.eventno == 0) {	/* if really the current line */
-		(void) Strncpy(el->el_line.buffer, el->el_history.buf,
+		(void) wcsncpy(el->el_line.buffer, el->el_history.buf,
 		    el->el_history.sz);
 		el->el_line.lastchar = el->el_line.buffer +
 		    (el->el_history.last - el->el_history.buf);
@@ -130,10 +130,10 @@ hist_get(EditLine *el)
 			el->el_history.eventno = h;
 			return CC_ERROR;
 		}
-	(void) Strncpy(el->el_line.buffer, hp,
+	(void) wcsncpy(el->el_line.buffer, hp,
 			(size_t)(el->el_line.limit - el->el_line.buffer));
 	el->el_line.buffer[el->el_line.limit - el->el_line.buffer - 1] = '\0';
-	el->el_line.lastchar = el->el_line.buffer + Strlen(el->el_line.buffer);
+	el->el_line.lastchar = el->el_line.buffer + wcslen(el->el_line.buffer);
 
 	if (el->el_line.lastchar > el->el_line.buffer
 	    && el->el_line.lastchar[-1] == '\n')
@@ -160,12 +160,12 @@ hist_command(EditLine *el, int argc, con
 {
 	const Char *str;
 	int num;
-	TYPE(HistEvent) ev;
+	HistEventW ev;
 
 	if (el->el_history.ref == NULL)
 		return -1;
 
-	if (argc == 1 || Strcmp(argv[1], STR("list")) == 0) {
+	if (argc == 1 || wcscmp(argv[1], L"list") == 0) {
 		 /* List history entries */
 
 		for (str = HIST_LAST(el); str != NULL; str = HIST_PREV(el))
@@ -179,11 +179,11 @@ hist_command(EditLine *el, int argc, con
 
 	num = (int)wcstol(argv[2], NULL, 0);
 
-	if (Strcmp(argv[1], STR("size")) == 0)
-		return FUNW(history)(el->el_history.ref, &ev, H_SETSIZE, num);
+	if (wcscmp(argv[1], L"size") == 0)
+		return history_w(el->el_history.ref, &ev, H_SETSIZE, num);
 
-	if (Strcmp(argv[1], STR("unique")) == 0)
-		return FUNW(history)(el->el_history.ref, &ev, H_SETUNIQUE, num);
+	if (wcscmp(argv[1], L"unique") == 0)
+		return history_w(el->el_history.ref, &ev, H_SETUNIQUE, num);
 
 	return -1;
 }
Index: src/lib/libedit/terminal.c
diff -u src/lib/libedit/terminal.c:1.26 src/lib/libedit/terminal.c:1.27
--- src/lib/libedit/terminal.c:1.26	Sat Apr  9 14:43:17 2016
+++ src/lib/libedit/terminal.c	Sun Apr 10 20:22:48 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: terminal.c,v 1.26 2016/04/09 18:43:17 christos Exp $	*/
+/*	$NetBSD: terminal.c,v 1.27 2016/04/11 00:22:48 christos Exp $	*/
 
 /*-
  * Copyright (c) 1992, 1993
@@ -37,7 +37,7 @@
 #if 0
 static char sccsid[] = "@(#)term.c	8.2 (Berkeley) 4/30/95";
 #else
-__RCSID("$NetBSD: terminal.c,v 1.26 2016/04/09 18:43:17 christos Exp $");
+__RCSID("$NetBSD: terminal.c,v 1.27 2016/04/11 00:22:48 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -1012,37 +1012,37 @@ terminal_init_arrow(EditLine *el)
 {
 	funckey_t *arrow = el->el_terminal.t_fkey;
 
-	arrow[A_K_DN].name = STR("down");
+	arrow[A_K_DN].name = L"down";
 	arrow[A_K_DN].key = T_kd;
 	arrow[A_K_DN].fun.cmd = ED_NEXT_HISTORY;
 	arrow[A_K_DN].type = XK_CMD;
 
-	arrow[A_K_UP].name = STR("up");
+	arrow[A_K_UP].name = L"up";
 	arrow[A_K_UP].key = T_ku;
 	arrow[A_K_UP].fun.cmd = ED_PREV_HISTORY;
 	arrow[A_K_UP].type = XK_CMD;
 
-	arrow[A_K_LT].name = STR("left");
+	arrow[A_K_LT].name = L"left";
 	arrow[A_K_LT].key = T_kl;
 	arrow[A_K_LT].fun.cmd = ED_PREV_CHAR;
 	arrow[A_K_LT].type = XK_CMD;
 
-	arrow[A_K_RT].name = STR("right");
+	arrow[A_K_RT].name = L"right";
 	arrow[A_K_RT].key = T_kr;
 	arrow[A_K_RT].fun.cmd = ED_NEXT_CHAR;
 	arrow[A_K_RT].type = XK_CMD;
 
-	arrow[A_K_HO].name = STR("home");
+	arrow[A_K_HO].name = L"home";
 	arrow[A_K_HO].key = T_kh;
 	arrow[A_K_HO].fun.cmd = ED_MOVE_TO_BEG;
 	arrow[A_K_HO].type = XK_CMD;
 
-	arrow[A_K_EN].name = STR("end");
+	arrow[A_K_EN].name = L"end";
 	arrow[A_K_EN].key = T_at7;
 	arrow[A_K_EN].fun.cmd = ED_MOVE_TO_END;
 	arrow[A_K_EN].type = XK_CMD;
 
-	arrow[A_K_DE].name = STR("delete");
+	arrow[A_K_DE].name = L"delete";
 	arrow[A_K_DE].key = T_kD;
 	arrow[A_K_DE].fun.cmd = ED_DELETE_NEXT_CHAR;
 	arrow[A_K_DE].type = XK_CMD;
@@ -1110,7 +1110,7 @@ terminal_set_arrow(EditLine *el, const C
 	int i;
 
 	for (i = 0; i < A_K_NKEYS; i++)
-		if (Strcmp(name, arrow[i].name) == 0) {
+		if (wcscmp(name, arrow[i].name) == 0) {
 			arrow[i].fun = *fun;
 			arrow[i].type = type;
 			return 0;
@@ -1129,7 +1129,7 @@ terminal_clear_arrow(EditLine *el, const
 	int i;
 
 	for (i = 0; i < A_K_NKEYS; i++)
-		if (Strcmp(name, arrow[i].name) == 0) {
+		if (wcscmp(name, arrow[i].name) == 0) {
 			arrow[i].type = XK_NOD;
 			return 0;
 		}
@@ -1147,7 +1147,7 @@ terminal_print_arrow(EditLine *el, const
 	funckey_t *arrow = el->el_terminal.t_fkey;
 
 	for (i = 0; i < A_K_NKEYS; i++)
-		if (*name == '\0' || Strcmp(name, arrow[i].name) == 0)
+		if (*name == '\0' || wcscmp(name, arrow[i].name) == 0)
 			if (arrow[i].type != XK_NOD)
 				keymacro_kprint(el, arrow[i].name,
 				    &arrow[i].fun, arrow[i].type);
@@ -1501,28 +1501,28 @@ terminal_echotc(EditLine *el, int argc _
 	}
 	if (!*argv || *argv[0] == '\0')
 		return 0;
-	if (Strcmp(*argv, STR("tabs")) == 0) {
+	if (wcscmp(*argv, L"tabs") == 0) {
 		(void) fprintf(el->el_outfile, fmts, EL_CAN_TAB ? "yes" : "no");
 		return 0;
-	} else if (Strcmp(*argv, STR("meta")) == 0) {
+	} else if (wcscmp(*argv, L"meta") == 0) {
 		(void) fprintf(el->el_outfile, fmts, Val(T_km) ? "yes" : "no");
 		return 0;
-	} else if (Strcmp(*argv, STR("xn")) == 0) {
+	} else if (wcscmp(*argv, L"xn") == 0) {
 		(void) fprintf(el->el_outfile, fmts, EL_HAS_MAGIC_MARGINS ?
 		    "yes" : "no");
 		return 0;
-	} else if (Strcmp(*argv, STR("am")) == 0) {
+	} else if (wcscmp(*argv, L"am") == 0) {
 		(void) fprintf(el->el_outfile, fmts, EL_HAS_AUTO_MARGINS ?
 		    "yes" : "no");
 		return 0;
-	} else if (Strcmp(*argv, STR("baud")) == 0) {
+	} else if (wcscmp(*argv, L"baud") == 0) {
 		(void) fprintf(el->el_outfile, fmtd, (int)el->el_tty.t_speed);
 		return 0;
-	} else if (Strcmp(*argv, STR("rows")) == 0 ||
-                   Strcmp(*argv, STR("lines")) == 0) {
+	} else if (wcscmp(*argv, L"rows") == 0 ||
+                   wcscmp(*argv, L"lines") == 0) {
 		(void) fprintf(el->el_outfile, fmtd, Val(T_li));
 		return 0;
-	} else if (Strcmp(*argv, STR("cols")) == 0) {
+	} else if (wcscmp(*argv, L"cols") == 0) {
 		(void) fprintf(el->el_outfile, fmtd, Val(T_co));
 		return 0;
 	}

Index: src/lib/libedit/hist.h
diff -u src/lib/libedit/hist.h:1.19 src/lib/libedit/hist.h:1.20
--- src/lib/libedit/hist.h:1.19	Wed Mar 23 18:27:48 2016
+++ src/lib/libedit/hist.h	Sun Apr 10 20:22:48 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: hist.h,v 1.19 2016/03/23 22:27:48 christos Exp $	*/
+/*	$NetBSD: hist.h,v 1.20 2016/04/11 00:22:48 christos Exp $	*/
 
 /*-
  * Copyright (c) 1992, 1993
@@ -40,7 +40,7 @@
 #ifndef _h_el_hist
 #define	_h_el_hist
 
-typedef int (*hist_fun_t)(void *, TYPE(HistEvent) *, int, ...);
+typedef int (*hist_fun_t)(void *, HistEventW *, int, ...);
 
 typedef struct el_history_t {
 	Char		*buf;		/* The history buffer		*/
@@ -49,7 +49,7 @@ typedef struct el_history_t {
 	int		 eventno;	/* Event we are looking for	*/
 	void		*ref;		/* Argument for history fcns	*/
 	hist_fun_t	 fun;		/* Event access			*/
-	TYPE(HistEvent)	 ev;		/* Event cookie			*/
+	HistEventW	 ev;		/* Event cookie			*/
 } el_history_t;
 
 #define	HIST_FUN_INTERNAL(el, fn, arg)	\

Index: src/lib/libedit/history.c
diff -u src/lib/libedit/history.c:1.53 src/lib/libedit/history.c:1.54
--- src/lib/libedit/history.c:1.53	Wed Mar 23 18:27:48 2016
+++ src/lib/libedit/history.c	Sun Apr 10 20:22:48 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: history.c,v 1.53 2016/03/23 22:27:48 christos Exp $	*/
+/*	$NetBSD: history.c,v 1.54 2016/04/11 00:22:48 christos Exp $	*/
 
 /*-
  * Copyright (c) 1992, 1993
@@ -37,7 +37,7 @@
 #if 0
 static char sccsid[] = "@(#)history.c	8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: history.c,v 1.53 2016/03/23 22:27:48 christos Exp $");
+__RCSID("$NetBSD: history.c,v 1.54 2016/04/11 00:22:48 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -55,6 +55,38 @@ static const char hist_cookie[] = "_HiSt
 #include "histedit.h"
 #include "chartype.h"
 
+
+#ifdef NARROWCHAR
+
+#define	FUN(prefix, rest)	prefix ## _ ## rest
+#define	FUNW(type)		type
+#define	TYPE(type)		type
+#define	STR(x)			x
+
+#define	Strlen(s)		strlen(s)
+#define	Strdup(s)		strdup(s)
+#define	Strcmp(d, s)		strcmp(d, s)
+#define	Strncmp(d, s, n)	strncmp(d, s, n)
+#define	Strncpy(d, s, n)	strncpy(d, s, n)
+#define	Strncat(d, s, n)	strncat(d, s, n)
+
+#else
+
+#define	FUN(prefix, rest)	prefix ## _w ## rest
+#define	FUNW(type)		type ## _w
+#define	TYPE(type)		type ## W
+#define	STR(x)			L ## x
+
+#define	Strlen(s)		wcslen(s)
+#define	Strdup(s)		wcsdup(s)
+#define	Strcmp(d, s)		wcscmp(d, s)
+#define	Strncmp(d, s, n)	wcsncmp(d, s, n)
+#define	Strncpy(d, s, n)	wcsncpy(d, s, n)
+#define	Strncat(d, s, n)	wcsncat(d, s, n)
+
+#endif
+
+
 typedef int (*history_gfun_t)(void *, TYPE(HistEvent) *);
 typedef int (*history_efun_t)(void *, TYPE(HistEvent) *, const Char *);
 typedef void (*history_vfun_t)(void *, TYPE(HistEvent) *);

Index: src/lib/libedit/keymacro.c
diff -u src/lib/libedit/keymacro.c:1.16 src/lib/libedit/keymacro.c:1.17
--- src/lib/libedit/keymacro.c:1.16	Sat Apr  9 14:43:17 2016
+++ src/lib/libedit/keymacro.c	Sun Apr 10 20:22:48 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: keymacro.c,v 1.16 2016/04/09 18:43:17 christos Exp $	*/
+/*	$NetBSD: keymacro.c,v 1.17 2016/04/11 00:22:48 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.16 2016/04/09 18:43:17 christos Exp $");
+__RCSID("$NetBSD: keymacro.c,v 1.17 2016/04/11 00:22:48 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -357,7 +357,7 @@ node__try(EditLine *el, keymacro_node_t 
 			break;
 		case XK_STR:
 		case XK_EXE:
-			if ((ptr->val.str = Strdup(val->str)) == NULL)
+			if ((ptr->val.str = wcsdup(val->str)) == NULL)
 				return -1;
 			break;
 		default:

Index: src/lib/libedit/makelist
diff -u src/lib/libedit/makelist:1.25 src/lib/libedit/makelist:1.26
--- src/lib/libedit/makelist:1.25	Wed Mar 23 18:27:48 2016
+++ src/lib/libedit/makelist	Sun Apr 10 20:22:48 2016
@@ -1,5 +1,5 @@
 #!/bin/sh -
-#	$NetBSD: makelist,v 1.25 2016/03/23 22:27:48 christos Exp $
+#	$NetBSD: makelist,v 1.26 2016/04/11 00:22:48 christos Exp $
 #
 # Copyright (c) 1992, 1993
 #	The Regents of the University of California.  All rights reserved.
@@ -114,16 +114,16 @@ _EOF
 		    fname = fname s;
 		}
 
-		printf("    { %-30.30s %-30.30s\n","STR(\"" fname "\"),", uname ",");
+		printf("    { %-30.30s %-30.30s\n","L\"" fname "\",", uname ",");
 		ok = 1;
 	    }
 	}
 	/^ \*/ {
 	    if (ok) {
-		printf("      STR(\"");
+		printf("      L\"");
 		for (i = 2; i < NF; i++)
 		    printf("%s ", $i);
-		printf("%s\") },\n", $i);
+		printf("%s\" },\n", $i);
 		ok = 0;
 	    }
 	}

Index: src/lib/libedit/map.c
diff -u src/lib/libedit/map.c:1.44 src/lib/libedit/map.c:1.45
--- src/lib/libedit/map.c:1.44	Sat Apr  9 14:43:17 2016
+++ src/lib/libedit/map.c	Sun Apr 10 20:22:48 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: map.c,v 1.44 2016/04/09 18:43:17 christos Exp $	*/
+/*	$NetBSD: map.c,v 1.45 2016/04/11 00:22:48 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.44 2016/04/09 18:43:17 christos Exp $");
+__RCSID("$NetBSD: map.c,v 1.45 2016/04/11 00:22:48 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -1087,11 +1087,11 @@ protected int
 map_set_editor(EditLine *el, Char *editor)
 {
 
-	if (Strcmp(editor, STR("emacs")) == 0) {
+	if (wcscmp(editor, L"emacs") == 0) {
 		map_init_emacs(el);
 		return 0;
 	}
-	if (Strcmp(editor, STR("vi")) == 0) {
+	if (wcscmp(editor, L"vi") == 0) {
 		map_init_vi(el);
 		return 0;
 	}
@@ -1110,10 +1110,10 @@ map_get_editor(EditLine *el, const Char 
 		return -1;
 	switch (el->el_map.type) {
 	case MAP_EMACS:
-		*editor = STR("emacs");
+		*editor = L"emacs";
 		return 0;
 	case MAP_VI:
-		*editor = STR("vi");
+		*editor = L"vi";
 		return 0;
 	}
 	return -1;
@@ -1236,9 +1236,9 @@ map_print_all_keys(EditLine *el)
 	map_print_some_keys(el, el->el_map.alt, prev, i - 1);
 
 	(void) fprintf(el->el_outfile, "Multi-character bindings\n");
-	keymacro_print(el, STR(""));
+	keymacro_print(el, L"");
 	(void) fprintf(el->el_outfile, "Arrow key bindings\n");
-	terminal_print_arrow(el, STR(""));
+	terminal_print_arrow(el, L"");
 }
 
 

Index: src/lib/libedit/parse.c
diff -u src/lib/libedit/parse.c:1.35 src/lib/libedit/parse.c:1.36
--- src/lib/libedit/parse.c:1.35	Wed Feb 17 14:47:49 2016
+++ src/lib/libedit/parse.c	Sun Apr 10 20:22:48 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: parse.c,v 1.35 2016/02/17 19:47:49 christos Exp $	*/
+/*	$NetBSD: parse.c,v 1.36 2016/04/11 00:22:48 christos Exp $	*/
 
 /*-
  * Copyright (c) 1992, 1993
@@ -37,7 +37,7 @@
 #if 0
 static char sccsid[] = "@(#)parse.c	8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: parse.c,v 1.35 2016/02/17 19:47:49 christos Exp $");
+__RCSID("$NetBSD: parse.c,v 1.36 2016/04/11 00:22:48 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -64,13 +64,13 @@ private const struct {
 	const Char *name;
 	int (*func)(EditLine *, int, const Char **);
 } cmds[] = {
-	{ STR("bind"),		map_bind	},
-	{ STR("echotc"),	terminal_echotc	},
-	{ STR("edit"),		el_editmode	},
-	{ STR("history"),	hist_command	},
-	{ STR("telltc"),	terminal_telltc	},
-	{ STR("settc"),	        terminal_settc	},
-	{ STR("setty"),	        tty_stty	},
+	{ L"bind",		map_bind	},
+	{ L"echotc",		terminal_echotc	},
+	{ L"edit",		el_editmode	},
+	{ L"history",		hist_command	},
+	{ L"telltc",		terminal_telltc	},
+	{ L"settc",	        terminal_settc	},
+	{ L"setty",	        tty_stty	},
 	{ NULL,		        NULL		}
 };
 
@@ -83,12 +83,12 @@ parse_line(EditLine *el, const Char *lin
 {
 	const Char **argv;
 	int argc;
-	TYPE(Tokenizer) *tok;
+	TokenizerW *tok;
 
-	tok = FUN(tok,init)(NULL);
-	FUN(tok,str)(tok, line, &argc, &argv);
-	argc = FUN(el,parse)(el, argc, argv);
-	FUN(tok,end)(tok);
+	tok = tok_winit(NULL);
+	tok_wstr(tok, line, &argc, &argv);
+	argc = el_wparse(el, argc, argv);
+	tok_wend(tok);
 	return argc;
 }
 
@@ -97,14 +97,14 @@ parse_line(EditLine *el, const Char *lin
  *	Command dispatcher
  */
 public int
-FUN(el,parse)(EditLine *el, int argc, const Char *argv[])
+el_wparse(EditLine *el, int argc, const Char *argv[])
 {
 	const Char *ptr;
 	int i;
 
 	if (argc < 1)
 		return -1;
-	ptr = Strchr(argv[0], ':');
+	ptr = wcschr(argv[0], L':');
 	if (ptr != NULL) {
 		Char *tprog;
 		size_t l;
@@ -115,7 +115,7 @@ FUN(el,parse)(EditLine *el, int argc, co
 		tprog = el_malloc((l + 1) * sizeof(*tprog));
 		if (tprog == NULL)
 			return 0;
-		(void) Strncpy(tprog, argv[0], l);
+		(void) wcsncpy(tprog, argv[0], l);
 		tprog[l] = '\0';
 		ptr++;
 		l = (size_t)el_match(el->el_prog, tprog);
@@ -126,7 +126,7 @@ FUN(el,parse)(EditLine *el, int argc, co
 		ptr = argv[0];
 
 	for (i = 0; cmds[i].name != NULL; i++)
-		if (Strcmp(cmds[i].name, ptr) == 0) {
+		if (wcscmp(cmds[i].name, ptr) == 0) {
 			i = (*cmds[i].func) (el, argc, argv);
 			return -i;
 		}
@@ -179,14 +179,14 @@ parse__escape(const Char **ptr)
                 case 'U':               /* Unicode \U+xxxx or \U+xxxxx format */
                 {
                         int i;
-                        const Char hex[] = STR("0123456789ABCDEF");
+                        const Char hex[] = L"0123456789ABCDEF";
                         const Char *h;
                         ++p;
                         if (*p++ != '+')
                                 return -1;
 			c = 0;
                         for (i = 0; i < 5; ++i) {
-                                h = Strchr(hex, *p++);
+                                h = wcschr(hex, *p++);
                                 if (!h && i < 4)
                                         return -1;
                                 else if (h)
@@ -283,7 +283,7 @@ parse_cmd(EditLine *el, const Char *cmd)
 	size_t i;
 
 	for (i = 0; i < el->el_map.nfunc; i++)
-		if (Strcmp(b[i].name, cmd) == 0)
+		if (wcscmp(b[i].name, cmd) == 0)
 			return b[i].func;
 	return -1;
 }

Index: src/lib/libedit/read.c
diff -u src/lib/libedit/read.c:1.88 src/lib/libedit/read.c:1.89
--- src/lib/libedit/read.c:1.88	Sat Apr  9 14:43:17 2016
+++ src/lib/libedit/read.c	Sun Apr 10 20:22:48 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: read.c,v 1.88 2016/04/09 18:43:17 christos Exp $	*/
+/*	$NetBSD: read.c,v 1.89 2016/04/11 00:22:48 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.88 2016/04/09 18:43:17 christos Exp $");
+__RCSID("$NetBSD: read.c,v 1.89 2016/04/11 00:22:48 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -187,13 +187,13 @@ read__fixio(int fd __attribute__((__unus
  *	Push a macro
  */
 public void
-FUN(el,push)(EditLine *el, const Char *str)
+el_wpush(EditLine *el, const Char *str)
 {
 	c_macro_t *ma = &el->el_chared.c_macro;
 
 	if (str != NULL && ma->level + 1 < EL_MAXMACRO) {
 		ma->level++;
-		if ((ma->macro[ma->level] = Strdup(str)) != NULL)
+		if ((ma->macro[ma->level] = wcsdup(str)) != NULL)
 			return;
 		ma->level--;
 	}
@@ -245,7 +245,7 @@ read_getcmd(EditLine *el, el_action_t *c
 				cmd = val.cmd;
 				break;
 			case XK_STR:
-				FUN(el,push)(el, val.str);
+				el_wpush(el, val.str);
 				break;
 #ifdef notyet
 			case XK_EXE:
@@ -283,7 +283,7 @@ read_char(EditLine *el, wchar_t *cp)
 		int e = errno;
 		switch (el->el_signal->sig_no) {
 		case SIGCONT:
-			FUN(el,set)(el, EL_REFRESH);
+			el_wset(el, EL_REFRESH);
 			/*FALLTHROUGH*/
 		case SIGWINCH:
 			sig_set(el);
@@ -442,7 +442,7 @@ read_finish(EditLine *el)
 }
 
 public const Char *
-FUN(el,gets)(EditLine *el, int *nread)
+el_wgets(EditLine *el, int *nread)
 {
 	int retval;
 	el_action_t cmdnum = 0;

Index: src/lib/libedit/refresh.c
diff -u src/lib/libedit/refresh.c:1.46 src/lib/libedit/refresh.c:1.47
--- src/lib/libedit/refresh.c:1.46	Sat Apr  9 14:43:17 2016
+++ src/lib/libedit/refresh.c	Sun Apr 10 20:22:48 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: refresh.c,v 1.46 2016/04/09 18:43:17 christos Exp $	*/
+/*	$NetBSD: refresh.c,v 1.47 2016/04/11 00:22:48 christos Exp $	*/
 
 /*-
  * Copyright (c) 1992, 1993
@@ -37,7 +37,7 @@
 #if 0
 static char sccsid[] = "@(#)refresh.c	8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: refresh.c,v 1.46 2016/04/09 18:43:17 christos Exp $");
+__RCSID("$NetBSD: refresh.c,v 1.47 2016/04/11 00:22:48 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -321,10 +321,10 @@ re_refresh(EditLine *el)
 		for (; i <= el->el_refresh.r_oldcv; i++) {
 			terminal_move_to_line(el, i);
 			terminal_move_to_char(el, 0);
-                        /* This Strlen should be safe even with MB_FILL_CHARs */
-			terminal_clear_EOL(el, (int) Strlen(el->el_display[i]));
+                        /* This wcslen should be safe even with MB_FILL_CHARs */
+			terminal_clear_EOL(el, (int) wcslen(el->el_display[i]));
 #ifdef DEBUG_REFRESH
-			terminal_overwrite(el, STR("C\b"), 2);
+			terminal_overwrite(el, L"C\b", 2);
 #endif /* DEBUG_REFRESH */
 			el->el_display[i][0] = '\0';
 		}
@@ -1085,7 +1085,7 @@ re_fastputc(EditLine *el, wint_t c)
 			for(i = 1; i < lins; i++)
 				el->el_display[i - 1] = el->el_display[i];
 
-			re__copy_and_pad(firstline, STR(""), (size_t)0);
+			re__copy_and_pad(firstline, L"", (size_t)0);
 			el->el_display[i - 1] = firstline;
 		} else {
 			el->el_cursor.v++;

Index: src/lib/libedit/tokenizer.c
diff -u src/lib/libedit/tokenizer.c:1.24 src/lib/libedit/tokenizer.c:1.25
--- src/lib/libedit/tokenizer.c:1.24	Wed Feb 17 14:47:49 2016
+++ src/lib/libedit/tokenizer.c	Sun Apr 10 20:22:48 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: tokenizer.c,v 1.24 2016/02/17 19:47:49 christos Exp $	*/
+/*	$NetBSD: tokenizer.c,v 1.25 2016/04/11 00:22:48 christos Exp $	*/
 
 /*-
  * Copyright (c) 1992, 1993
@@ -37,7 +37,7 @@
 #if 0
 static char sccsid[] = "@(#)tokenizer.c	8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: tokenizer.c,v 1.24 2016/02/17 19:47:49 christos Exp $");
+__RCSID("$NetBSD: tokenizer.c,v 1.25 2016/04/11 00:22:48 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -66,8 +66,20 @@ typedef enum {
 #define	tok_malloc(a)		malloc(a)
 #define	tok_free(a)		free(a)
 #define	tok_realloc(a, b)	realloc(a, b)
-#define	tok_strdup(a)		Strdup(a)
 
+#ifdef NARROWCHAR
+#define	FUN(prefix, rest)	prefix ## _ ## rest
+#define	TYPE(type)		type
+#define	STR(x)			x
+#define	Strchr(s, c)		strchr(s, c)
+#define	tok_strdup(s)		strdup(s)
+#else
+#define	FUN(prefix, rest)	prefix ## _w ## rest
+#define	TYPE(type)		type ## W
+#define	STR(x)			L ## x
+#define	Strchr(s, c)		wcschr(s, c)
+#define	tok_strdup(s)		wcsdup(s)
+#endif
 
 struct TYPE(tokenizer) {
 	Char	*ifs;		/* In field separator			 */

Index: src/lib/libedit/tty.c
diff -u src/lib/libedit/tty.c:1.60 src/lib/libedit/tty.c:1.61
--- src/lib/libedit/tty.c:1.60	Sat Apr  9 14:43:17 2016
+++ src/lib/libedit/tty.c	Sun Apr 10 20:22:48 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: tty.c,v 1.60 2016/04/09 18:43:17 christos Exp $	*/
+/*	$NetBSD: tty.c,v 1.61 2016/04/11 00:22:48 christos Exp $	*/
 
 /*-
  * Copyright (c) 1992, 1993
@@ -37,7 +37,7 @@
 #if 0
 static char sccsid[] = "@(#)tty.c	8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: tty.c,v 1.60 2016/04/09 18:43:17 christos Exp $");
+__RCSID("$NetBSD: tty.c,v 1.61 2016/04/11 00:22:48 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -1248,7 +1248,7 @@ tty_stty(EditLine *el, int argc __attrib
 			break;
 		}
 		d = s;
-		p = Strchr(s, '=');
+		p = wcschr(s, L'=');
 		for (m = ttymodes; m->m_name; m++)
 			if ((p ? strncmp(m->m_name, ct_encode_string(d,
 			    &el->el_scratch), (size_t)(p - d)) :

Index: src/lib/libedit/vi.c
diff -u src/lib/libedit/vi.c:1.57 src/lib/libedit/vi.c:1.58
--- src/lib/libedit/vi.c:1.57	Sat Apr  9 14:47:05 2016
+++ src/lib/libedit/vi.c	Sun Apr 10 20:22:48 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: vi.c,v 1.57 2016/04/09 18:47:05 christos Exp $	*/
+/*	$NetBSD: vi.c,v 1.58 2016/04/11 00:22:48 christos Exp $	*/
 
 /*-
  * Copyright (c) 1992, 1993
@@ -37,7 +37,7 @@
 #if 0
 static char sccsid[] = "@(#)vi.c	8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: vi.c,v 1.57 2016/04/09 18:47:05 christos Exp $");
+__RCSID("$NetBSD: vi.c,v 1.58 2016/04/11 00:22:48 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -809,7 +809,7 @@ protected el_action_t
 /*ARGSUSED*/
 vi_match(EditLine *el, wint_t c __attribute__((__unused__)))
 {
-	const Char match_chars[] = STR("()[]{}");
+	const Char match_chars[] = L"()[]{}";
 	Char *cp;
 	size_t delta, i, count;
 	Char o_ch, c_ch;
@@ -820,7 +820,7 @@ vi_match(EditLine *el, wint_t c __attrib
 	o_ch = el->el_line.cursor[i];
 	if (o_ch == 0)
 		return CC_ERROR;
-	delta = (size_t)(Strchr(match_chars, o_ch) - match_chars);
+	delta = (size_t)(wcschr(match_chars, o_ch) - match_chars);
 	c_ch = match_chars[delta ^ 1];
 	count = 1;
 	delta = 1 - (delta & 1) * 2;
@@ -942,7 +942,7 @@ vi_alias(EditLine *el, wint_t c __attrib
 	alias_text = (*el->el_chared.c_aliasfun)(el->el_chared.c_aliasarg,
 	    alias_name);
 	if (alias_text != NULL)
-		FUN(el,push)(el, ct_decode_string(alias_text, &el->el_scratch));
+		el_wpush(el, ct_decode_string(alias_text, &el->el_scratch));
 	return CC_NORM;
 }
 
@@ -959,7 +959,7 @@ vi_to_history_line(EditLine *el, wint_t 
 
 
 	if (el->el_history.eventno == 0) {
-		 (void) Strncpy(el->el_history.buf, el->el_line.buffer,
+		 (void) wcsncpy(el->el_history.buf, el->el_line.buffer,
 		     EL_BUFSIZ);
 		 el->el_history.last = el->el_history.buf +
 			 (el->el_line.lastchar - el->el_line.buffer);
@@ -1024,7 +1024,7 @@ vi_histedit(EditLine *el, wint_t c __att
 	line = el_malloc(len * sizeof(*line) + 1);
 	if (line == NULL)
 		goto error;
-	Strncpy(line, el->el_line.buffer, len);
+	wcsncpy(line, el->el_line.buffer, len);
 	line[len] = '\0';
 	wcstombs(cp, line, TMP_BUFSIZ - 1);
 	cp[TMP_BUFSIZ - 1] = '\0';
@@ -1147,7 +1147,7 @@ vi_redo(EditLine *el, wint_t c __attribu
 			/* sanity */
 			r->pos = r->lim - 1;
 		r->pos[0] = 0;
-		FUN(el,push)(el, r->buf);
+		el_wpush(el, r->buf);
 	}
 
 	el->el_state.thiscmd = r->cmd;

Reply via email to