Module Name:    src
Committed By:   christos
Date:           Sat Apr  9 18:43:18 UTC 2016

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

Log Message:
More WIDECHAR elimination (Ingo Schwarze)


To generate a diff of this commit:
cvs rdiff -u -r1.49 -r1.50 src/lib/libedit/chared.c
cvs rdiff -u -r1.24 -r1.25 src/lib/libedit/chartype.c
cvs rdiff -u -r1.26 -r1.27 src/lib/libedit/chartype.h
cvs rdiff -u -r1.40 -r1.41 src/lib/libedit/common.c src/lib/libedit/search.c
cvs rdiff -u -r1.84 -r1.85 src/lib/libedit/el.c
cvs rdiff -u -r1.29 -r1.30 src/lib/libedit/eln.c
cvs rdiff -u -r1.32 -r1.33 src/lib/libedit/emacs.c
cvs rdiff -u -r1.25 -r1.26 src/lib/libedit/hist.c src/lib/libedit/terminal.c
cvs rdiff -u -r1.15 -r1.16 src/lib/libedit/keymacro.c
cvs rdiff -u -r1.43 -r1.44 src/lib/libedit/map.c
cvs rdiff -u -r1.87 -r1.88 src/lib/libedit/read.c
cvs rdiff -u -r1.45 -r1.46 src/lib/libedit/refresh.c
cvs rdiff -u -r1.59 -r1.60 src/lib/libedit/tty.c
cvs rdiff -u -r1.55 -r1.56 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.49 src/lib/libedit/chared.c:1.50
--- src/lib/libedit/chared.c:1.49	Wed Feb 24 09:29:21 2016
+++ src/lib/libedit/chared.c	Sat Apr  9 14:43:17 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: chared.c,v 1.49 2016/02/24 14:29:21 christos Exp $	*/
+/*	$NetBSD: chared.c,v 1.50 2016/04/09 18:43:17 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.49 2016/02/24 14:29:21 christos Exp $");
+__RCSID("$NetBSD: chared.c,v 1.50 2016/04/09 18:43:17 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -205,7 +205,7 @@ c_delbefore1(EditLine *el)
 protected int
 ce__isword(wint_t p)
 {
-	return Isalnum(p) || Strchr(STR("*?_-.[]~="), p) != NULL;
+	return iswalnum(p) || Strchr(STR("*?_-.[]~="), p) != NULL;
 }
 
 
@@ -215,9 +215,9 @@ ce__isword(wint_t p)
 protected int
 cv__isword(wint_t p)
 {
-	if (Isalnum(p) || p == '_')
+	if (iswalnum(p) || p == L'_')
 		return 1;
-	if (Isgraph(p))
+	if (iswgraph(p))
 		return 2;
 	return 0;
 }
@@ -229,7 +229,7 @@ cv__isword(wint_t p)
 protected int
 cv__isWord(wint_t p)
 {
-	return !Isspace(p);
+	return !iswspace(p);
 }
 
 
@@ -292,7 +292,7 @@ cv_next_word(EditLine *el, Char *p, Char
 		 * trailing whitespace! This is not what 'w' does..
 		 */
 		if (n || el->el_chared.c_vcmd.action != (DELETE|INSERT))
-			while ((p < high) && Isspace(*p))
+			while ((p < high) && iswspace(*p))
 				p++;
 	}
 
@@ -314,7 +314,7 @@ cv_prev_word(Char *p, Char *low, int n, 
 
 	p--;
 	while (n--) {
-		while ((p > low) && Isspace(*p))
+		while ((p > low) && iswspace(*p))
 			p--;
 		test = (*wtest)(*p);
 		while ((p >= low) && (*wtest)(*p) == test)
@@ -379,7 +379,7 @@ cv__endword(Char *p, Char *high, int n, 
 	p++;
 
 	while (n--) {
-		while ((p < high) && Isspace(*p))
+		while ((p < high) && iswspace(*p))
 			p++;
 
 		test = (*wtest)(*p);

Index: src/lib/libedit/chartype.c
diff -u src/lib/libedit/chartype.c:1.24 src/lib/libedit/chartype.c:1.25
--- src/lib/libedit/chartype.c:1.24	Wed Mar 23 18:27:48 2016
+++ src/lib/libedit/chartype.c	Sat Apr  9 14:43:17 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: chartype.c,v 1.24 2016/03/23 22:27:48 christos Exp $	*/
+/*	$NetBSD: chartype.c,v 1.25 2016/04/09 18:43:17 christos Exp $	*/
 
 /*-
  * Copyright (c) 2009 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
  */
 #include "config.h"
 #if !defined(lint) && !defined(SCCSID)
-__RCSID("$NetBSD: chartype.c,v 1.24 2016/03/23 22:27:48 christos Exp $");
+__RCSID("$NetBSD: chartype.c,v 1.25 2016/04/09 18:43:17 christos Exp $");
 #endif /* not lint && not SCCSID */
 
 #include <ctype.h>
@@ -123,7 +123,7 @@ ct_decode_string(const char *s, ct_buffe
 	if (!s)
 		return NULL;
 
-	len = ct_mbstowcs(NULL, s, (size_t)0);
+	len = mbstowcs(NULL, s, (size_t)0);
 	if (len == (size_t)-1)
 		return NULL;
 
@@ -131,7 +131,7 @@ ct_decode_string(const char *s, ct_buffe
 		if (ct_conv_wbuff_resize(conv, len + CT_BUFSIZ) == -1)
 			return NULL;
 
-	ct_mbstowcs(conv->wbuff, s, conv->wsize);
+	mbstowcs(conv->wbuff, s, conv->wsize);
 	return conv->wbuff;
 }
 
@@ -198,24 +198,15 @@ ct_encode_char(char *dst, size_t len, Ch
 	ssize_t l = 0;
 	if (len < ct_enc_width(c))
 		return -1;
-	l = ct_wctomb(dst, c);
+	l = wctomb(dst, c);
 
 	if (l < 0) {
-		ct_wctomb_reset;
+		wctomb(NULL, L'\0');
 		l = 0;
 	}
 	return l;
 }
 
-size_t
-ct_mbrtowc(wchar_t *wc, const char *s, size_t n)
-{
-	mbstate_t mbs;
-	/* This only works because UTF-8 is stateless */
-	memset(&mbs, 0, sizeof(mbs));
-	return mbrtowc(wc, s, n, &mbs);
-}
-
 protected const Char *
 ct_visual_string(const Char *s)
 {
@@ -344,9 +335,9 @@ ct_chr_class(Char c)
 		return CHTYPE_TAB;
 	else if (c == '\n')
 		return CHTYPE_NL;
-	else if (IsASCII(c) && Iscntrl(c))
+	else if (c < 0x100 && iswcntrl(c))
 		return CHTYPE_ASCIICTL;
-	else if (Isprint(c))
+	else if (iswprint(c))
 		return CHTYPE_PRINT;
 	else
 		return CHTYPE_NONPRINT;

Index: src/lib/libedit/chartype.h
diff -u src/lib/libedit/chartype.h:1.26 src/lib/libedit/chartype.h:1.27
--- src/lib/libedit/chartype.h:1.26	Wed Mar 23 18:27:48 2016
+++ src/lib/libedit/chartype.h	Sat Apr  9 14:43:17 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: chartype.h,v 1.26 2016/03/23 22:27:48 christos Exp $	*/
+/*	$NetBSD: chartype.h,v 1.27 2016/04/09 18:43:17 christos Exp $	*/
 
 /*-
  * Copyright (c) 2009 The NetBSD Foundation, Inc.
@@ -51,56 +51,19 @@
 #warning Build environment does not support non-BMP characters
 #endif
 
-#define ct_wctob             wctob
-#define ct_wctomb            wctomb
-#define ct_wctomb_reset      wctomb(0,0)
-#define ct_wcstombs          wcstombs
-#define ct_mbstowcs          mbstowcs
-
 #define Char			wchar_t
 #define FUN(prefix,rest)	prefix ## _w ## rest
 #define FUNW(type)		type ## _w
 #define TYPE(type)		type ## W
-#define FSTR			"%ls"
-#define FSTARSTR		"%.*ls"
 #define STR(x)			L ## x
-#define UC(c)			c
-#define Isalpha(x)  iswalpha(x)
-#define Isalnum(x)  iswalnum(x)
-#define Isgraph(x)  iswgraph(x)
-#define Isspace(x)  iswspace(x)
-#define Isdigit(x)  iswdigit(x)
-#define Iscntrl(x)  iswcntrl(x)
-#define Isprint(x)  iswprint(x)
-
-#define Isupper(x)  iswupper(x)
-#define Islower(x)  iswlower(x)
-#define Toupper(x)  towupper(x)
-#define Tolower(x)  towlower(x)
-
-#define IsASCII(x)  (x < 0x100)
 
 #define Strlen(x)       wcslen(x)
 #define Strchr(s,c)     wcschr(s,c)
-#define Strrchr(s,c)    wcsrchr(s,c)
-#define Strstr(s,v)     wcsstr(s,v)
 #define Strdup(x)       wcsdup(x)
-#define Strcpy(d,s)     wcscpy(d,s)
 #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)
-#define Strcspn(s,r)    wcscspn(s,r)
-
-#define Strtol(p,e,b)   wcstol(p,e,b)
-
-static inline int
-Width(wchar_t c)
-{
-	int w = wcwidth(c);
-	return w < 0 ? 0 : w;
-}
 
 #else /* NARROW */
 
@@ -150,8 +113,6 @@ protected int ct_conv_wbuff_resize(ct_bu
 protected ssize_t ct_encode_char(char *, size_t, Char);
 protected size_t ct_enc_width(Char);
 
-#define ct_free_argv(s)	el_free(s)
-
 #else
 #define	ct_encode_string(s, b)	(s)
 #define ct_decode_string(s, b)	(s)
@@ -199,7 +160,4 @@ protected const Char *ct_visual_string(c
 protected int ct_chr_class(Char c);
 #endif
 
-size_t	ct_mbrtowc(wchar_t *, const char *, size_t);
-
-
 #endif /* _chartype_f */

Index: src/lib/libedit/common.c
diff -u src/lib/libedit/common.c:1.40 src/lib/libedit/common.c:1.41
--- src/lib/libedit/common.c:1.40	Wed Mar  2 14:24:20 2016
+++ src/lib/libedit/common.c	Sat Apr  9 14:43:17 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: common.c,v 1.40 2016/03/02 19:24:20 christos Exp $	*/
+/*	$NetBSD: common.c,v 1.41 2016/04/09 18:43:17 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.40 2016/03/02 19:24:20 christos Exp $");
+__RCSID("$NetBSD: common.c,v 1.41 2016/04/09 18:43:17 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -148,8 +148,7 @@ ed_delete_next_char(EditLine *el, wint_t
 #ifdef DEBUG_EDIT
 #define	EL	el->el_line
 	(void) fprintf(el->el_errfile,
-	    "\nD(b: %p(" FSTR ")  c: %p(" FSTR ") last: %p(" FSTR
-	    ") limit: %p(" FSTR ")\n",
+	    "\nD(b: %p(%ls)  c: %p(%ls) last: %p(%ls) limit: %p(%ls)\n",
 	    EL.buffer, EL.buffer, EL.cursor, EL.cursor, EL.lastchar,
 	    EL.lastchar, EL.limit, EL.limit);
 #endif
@@ -242,7 +241,7 @@ ed_move_to_beg(EditLine *el, wint_t c __
 
 	if (el->el_map.type == MAP_VI) {
 			/* We want FIRST non space character */
-		while (Isspace(*el->el_line.cursor))
+		while (iswspace(*el->el_line.cursor))
 			el->el_line.cursor++;
 		if (el->el_chared.c_vcmd.action != NOP) {
 			cv_delfini(el);
@@ -384,7 +383,7 @@ protected el_action_t
 ed_digit(EditLine *el, wint_t c)
 {
 
-	if (!Isdigit(c))
+	if (!iswdigit(c))
 		return CC_ERROR;
 
 	if (el->el_state.doingarg) {
@@ -412,7 +411,7 @@ protected el_action_t
 ed_argument_digit(EditLine *el, wint_t c)
 {
 
-	if (!Isdigit(c))
+	if (!iswdigit(c))
 		return CC_ERROR;
 
 	if (el->el_state.doingarg) {
Index: src/lib/libedit/search.c
diff -u src/lib/libedit/search.c:1.40 src/lib/libedit/search.c:1.41
--- src/lib/libedit/search.c:1.40	Wed Mar 23 18:27:48 2016
+++ src/lib/libedit/search.c	Sat Apr  9 14:43:17 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: search.c,v 1.40 2016/03/23 22:27:48 christos Exp $	*/
+/*	$NetBSD: search.c,v 1.41 2016/04/09 18:43:17 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.40 2016/03/23 22:27:48 christos Exp $");
+__RCSID("$NetBSD: search.c,v 1.41 2016/04/09 18:43:17 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -124,7 +124,7 @@ el_match(const Char *str, const Char *pa
 	extern int	 re_exec(const char *);
 #endif
 
-	if (Strstr(str, pat) != 0)
+	if (wcsstr(str, pat) != 0)
 		return 1;
 
 #if defined(REGEX)

Index: src/lib/libedit/el.c
diff -u src/lib/libedit/el.c:1.84 src/lib/libedit/el.c:1.85
--- src/lib/libedit/el.c:1.84	Wed Mar 23 18:27:48 2016
+++ src/lib/libedit/el.c	Sat Apr  9 14:43:17 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: el.c,v 1.84 2016/03/23 22:27:48 christos Exp $	*/
+/*	$NetBSD: el.c,v 1.85 2016/04/09 18:43:17 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.84 2016/03/23 22:27:48 christos Exp $");
+__RCSID("$NetBSD: el.c,v 1.85 2016/04/09 18:43:17 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -558,7 +558,7 @@ el_source(EditLine *el, const char *fnam
 		if (!dptr)
 			continue;
 		/* loop until first non-space char or EOL */
-		while (*dptr != '\0' && Isspace(*dptr))
+		while (*dptr != '\0' && iswspace(*dptr))
 			dptr++;
 		if (*dptr == '#')
 			continue;   /* ignore, this is a comment line */
@@ -626,7 +626,7 @@ el_editmode(EditLine *el, int argc, cons
 		el->el_flags |= EDIT_DISABLED;
 	}
 	else {
-		(void) fprintf(el->el_errfile, "edit: Bad value `" FSTR "'.\n",
+		(void) fprintf(el->el_errfile, "edit: Bad value `%ls'.\n",
 		    how);
 		return -1;
 	}

Index: src/lib/libedit/eln.c
diff -u src/lib/libedit/eln.c:1.29 src/lib/libedit/eln.c:1.30
--- src/lib/libedit/eln.c:1.29	Wed Mar 23 18:27:48 2016
+++ src/lib/libedit/eln.c	Sat Apr  9 14:43:17 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: eln.c,v 1.29 2016/03/23 22:27:48 christos Exp $	*/
+/*	$NetBSD: eln.c,v 1.30 2016/04/09 18:43:17 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.29 2016/03/23 22:27:48 christos Exp $");
+__RCSID("$NetBSD: eln.c,v 1.30 2016/04/09 18:43:17 christos Exp $");
 #endif /* not lint && not SCCSID */
 
 #include <errno.h>
@@ -47,7 +47,7 @@ el_getc(EditLine *el, char *cp)
 	*cp = '\0';
 	if (num_read <= 0)
 		return num_read;
-	num_read = ct_wctob(wc);
+	num_read = wctob(wc);
 	if (num_read == EOF) {
 		errno = ERANGE;
 		return -1;
@@ -96,7 +96,7 @@ el_parse(EditLine *el, int argc, const c
 	if (!wargv)
 		return -1;
 	ret = el_wparse(el, argc, wargv);
-	ct_free_argv(wargv);
+	el_free(wargv);
 
 	return ret;
 }
@@ -206,7 +206,7 @@ el_set(EditLine *el, int op, ...)
 		default:
 			ret = -1;
 		}
-		ct_free_argv(wargv);
+		el_free(wargv);
 		break;
 	}
 
@@ -228,7 +228,7 @@ el_set(EditLine *el, int op, ...)
 		/* XXX: The two strdup's leak */
 		ret = map_addfunc(el, Strdup(wargv[0]), Strdup(wargv[1]),
 		    func);
-		ct_free_argv(wargv);
+		el_free(wargv);
 		break;
 	}
 	case EL_HIST: {           /* hist_fun_t, const char * */

Index: src/lib/libedit/emacs.c
diff -u src/lib/libedit/emacs.c:1.32 src/lib/libedit/emacs.c:1.33
--- src/lib/libedit/emacs.c:1.32	Tue Feb 16 17:53:14 2016
+++ src/lib/libedit/emacs.c	Sat Apr  9 14:43:17 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: emacs.c,v 1.32 2016/02/16 22:53:14 christos Exp $	*/
+/*	$NetBSD: emacs.c,v 1.33 2016/04/09 18:43:17 christos Exp $	*/
 
 /*-
  * Copyright (c) 1992, 1993
@@ -37,7 +37,7 @@
 #if 0
 static char sccsid[] = "@(#)emacs.c	8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: emacs.c,v 1.32 2016/02/16 22:53:14 christos Exp $");
+__RCSID("$NetBSD: emacs.c,v 1.33 2016/04/09 18:43:17 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -293,8 +293,8 @@ em_upper_case(EditLine *el, wint_t c __a
 	    el->el_state.argument, ce__isword);
 
 	for (cp = el->el_line.cursor; cp < ep; cp++)
-		if (Islower(*cp))
-			*cp = Toupper(*cp);
+		if (iswlower(*cp))
+			*cp = towupper(*cp);
 
 	el->el_line.cursor = ep;
 	if (el->el_line.cursor > el->el_line.lastchar)
@@ -317,16 +317,16 @@ em_capitol_case(EditLine *el, wint_t c _
 	    el->el_state.argument, ce__isword);
 
 	for (cp = el->el_line.cursor; cp < ep; cp++) {
-		if (Isalpha(*cp)) {
-			if (Islower(*cp))
-				*cp = Toupper(*cp);
+		if (iswalpha(*cp)) {
+			if (iswlower(*cp))
+				*cp = towupper(*cp);
 			cp++;
 			break;
 		}
 	}
 	for (; cp < ep; cp++)
-		if (Isupper(*cp))
-			*cp = Tolower(*cp);
+		if (iswupper(*cp))
+			*cp = towlower(*cp);
 
 	el->el_line.cursor = ep;
 	if (el->el_line.cursor > el->el_line.lastchar)
@@ -349,8 +349,8 @@ em_lower_case(EditLine *el, wint_t c __a
 	    el->el_state.argument, ce__isword);
 
 	for (cp = el->el_line.cursor; cp < ep; cp++)
-		if (Isupper(*cp))
-			*cp = Tolower(*cp);
+		if (iswupper(*cp))
+			*cp = towlower(*cp);
 
 	el->el_line.cursor = ep;
 	if (el->el_line.cursor > el->el_line.lastchar)

Index: src/lib/libedit/hist.c
diff -u src/lib/libedit/hist.c:1.25 src/lib/libedit/hist.c:1.26
--- src/lib/libedit/hist.c:1.25	Wed Mar 23 18:27:48 2016
+++ src/lib/libedit/hist.c	Sat Apr  9 14:43:17 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: hist.c,v 1.25 2016/03/23 22:27:48 christos Exp $	*/
+/*	$NetBSD: hist.c,v 1.26 2016/04/09 18:43:17 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.25 2016/03/23 22:27:48 christos Exp $");
+__RCSID("$NetBSD: hist.c,v 1.26 2016/04/09 18:43:17 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -177,7 +177,7 @@ hist_command(EditLine *el, int argc, con
 	if (argc != 3)
 		return -1;
 
-	num = (int)Strtol(argv[2], NULL, 0);
+	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);
Index: src/lib/libedit/terminal.c
diff -u src/lib/libedit/terminal.c:1.25 src/lib/libedit/terminal.c:1.26
--- src/lib/libedit/terminal.c:1.25	Wed Mar 23 18:27:48 2016
+++ src/lib/libedit/terminal.c	Sat Apr  9 14:43:17 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: terminal.c,v 1.25 2016/03/23 22:27:48 christos Exp $	*/
+/*	$NetBSD: terminal.c,v 1.26 2016/04/09 18:43:17 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.25 2016/03/23 22:27:48 christos Exp $");
+__RCSID("$NetBSD: terminal.c,v 1.26 2016/04/09 18:43:17 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -1378,7 +1378,7 @@ terminal_settc(EditLine *el, int argc __
 			el->el_terminal.t_val[tv - tval] = 0;
 		else {
 			(void) fprintf(el->el_errfile,
-			    "" FSTR ": Bad value `%s'.\n", argv[0], how);
+			    "%ls: Bad value `%s'.\n", argv[0], how);
 			return -1;
 		}
 		terminal_setflags(el);
@@ -1392,7 +1392,7 @@ terminal_settc(EditLine *el, int argc __
 		i = strtol(how, &ep, 10);
 		if (*ep != '\0') {
 			(void) fprintf(el->el_errfile,
-			    "" FSTR ": Bad value `%s'.\n", argv[0], how);
+			    "%ls: Bad value `%s'.\n", argv[0], how);
 			return -1;
 		}
 		el->el_terminal.t_val[tv - tval] = (int) i;
@@ -1543,7 +1543,7 @@ terminal_echotc(EditLine *el, int argc _
 	if (!scap || scap[0] == '\0') {
 		if (!silent)
 			(void) fprintf(el->el_errfile,
-			    "echotc: Termcap parameter `" FSTR "' not found.\n",
+			    "echotc: Termcap parameter `%ls' not found.\n",
 			    *argv);
 		return -1;
 	}
@@ -1586,7 +1586,7 @@ terminal_echotc(EditLine *el, int argc _
 		if (*argv && *argv[0]) {
 			if (!silent)
 				(void) fprintf(el->el_errfile,
-				    "echotc: Warning: Extra argument `" FSTR "'.\n",
+				    "echotc: Warning: Extra argument `%ls'.\n",
 				    *argv);
 			return -1;
 		}
@@ -1601,11 +1601,11 @@ terminal_echotc(EditLine *el, int argc _
 			return -1;
 		}
 		arg_cols = 0;
-		i = Strtol(*argv, &ep, 10);
+		i = wcstol(*argv, &ep, 10);
 		if (*ep != '\0' || i < 0) {
 			if (!silent)
 				(void) fprintf(el->el_errfile,
-				    "echotc: Bad value `" FSTR "' for rows.\n",
+				    "echotc: Bad value `%ls' for rows.\n",
 				    *argv);
 			return -1;
 		}
@@ -1614,7 +1614,7 @@ terminal_echotc(EditLine *el, int argc _
 		if (*argv && *argv[0]) {
 			if (!silent)
 				(void) fprintf(el->el_errfile,
-				    "echotc: Warning: Extra argument `" FSTR
+				    "echotc: Warning: Extra argument `%ls"
 				    "'.\n", *argv);
 			return -1;
 		}
@@ -1635,11 +1635,11 @@ terminal_echotc(EditLine *el, int argc _
 				    "echotc: Warning: Missing argument.\n");
 			return -1;
 		}
-		i = Strtol(*argv, &ep, 10);
+		i = wcstol(*argv, &ep, 10);
 		if (*ep != '\0' || i < 0) {
 			if (!silent)
 				(void) fprintf(el->el_errfile,
-				    "echotc: Bad value `" FSTR "' for cols.\n",
+				    "echotc: Bad value `%ls' for cols.\n",
 				    *argv);
 			return -1;
 		}
@@ -1651,11 +1651,11 @@ terminal_echotc(EditLine *el, int argc _
 				    "echotc: Warning: Missing argument.\n");
 			return -1;
 		}
-		i = Strtol(*argv, &ep, 10);
+		i = wcstol(*argv, &ep, 10);
 		if (*ep != '\0' || i < 0) {
 			if (!silent)
 				(void) fprintf(el->el_errfile,
-				    "echotc: Bad value `" FSTR "' for rows.\n",
+				    "echotc: Bad value `%ls' for rows.\n",
 				    *argv);
 			return -1;
 		}
@@ -1663,14 +1663,14 @@ terminal_echotc(EditLine *el, int argc _
 		if (*ep != '\0') {
 			if (!silent)
 				(void) fprintf(el->el_errfile,
-				    "echotc: Bad value `" FSTR "'.\n", *argv);
+				    "echotc: Bad value `%ls'.\n", *argv);
 			return -1;
 		}
 		argv++;
 		if (*argv && *argv[0]) {
 			if (!silent)
 				(void) fprintf(el->el_errfile,
-				    "echotc: Warning: Extra argument `" FSTR
+				    "echotc: Warning: Extra argument `%ls"
 				    "'.\n", *argv);
 			return -1;
 		}

Index: src/lib/libedit/keymacro.c
diff -u src/lib/libedit/keymacro.c:1.15 src/lib/libedit/keymacro.c:1.16
--- src/lib/libedit/keymacro.c:1.15	Wed Mar 23 18:27:48 2016
+++ src/lib/libedit/keymacro.c	Sat Apr  9 14:43:17 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: keymacro.c,v 1.15 2016/03/23 22:27:48 christos Exp $	*/
+/*	$NetBSD: keymacro.c,v 1.16 2016/04/09 18:43:17 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.15 2016/03/23 22:27:48 christos Exp $");
+__RCSID("$NetBSD: keymacro.c,v 1.16 2016/04/09 18:43:17 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -265,7 +265,7 @@ keymacro_print(EditLine *el, const Char 
 	el->el_keymacro.buf[0] = '"';
 	if (node_lookup(el, key, el->el_keymacro.map, (size_t)1) <= -1)
 		/* key is not bound */
-		(void) fprintf(el->el_errfile, "Unbound extended key \"" FSTR
+		(void) fprintf(el->el_errfile, "Unbound extended key \"%ls"
 		    "\"\n", key);
 	return;
 }
@@ -549,7 +549,7 @@ node_enum(EditLine *el, keymacro_node_t 
 		el->el_keymacro.buf[++cnt] = '\0';
 		(void) fprintf(el->el_errfile,
 		    "Some extended keys too long for internal print buffer");
-		(void) fprintf(el->el_errfile, " \"" FSTR "...\"\n",
+		(void) fprintf(el->el_errfile, " \"%ls...\"\n",
 		    el->el_keymacro.buf);
 		return 0;
 	}
@@ -602,7 +602,7 @@ keymacro_kprint(EditLine *el, const Char
 		case XK_CMD:
 			for (fp = el->el_map.help; fp->name; fp++)
 				if (val->cmd == fp->func) {
-                    ct_wcstombs(unparsbuf, fp->name, sizeof(unparsbuf));
+                    wcstombs(unparsbuf, fp->name, sizeof(unparsbuf));
                     unparsbuf[sizeof(unparsbuf) -1] = '\0';
 					(void) fprintf(el->el_outfile, fmt,
                         ct_encode_string(key, &el->el_scratch), unparsbuf);

Index: src/lib/libedit/map.c
diff -u src/lib/libedit/map.c:1.43 src/lib/libedit/map.c:1.44
--- src/lib/libedit/map.c:1.43	Wed Feb 17 14:47:49 2016
+++ src/lib/libedit/map.c	Sat Apr  9 14:43:17 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: map.c,v 1.43 2016/02/17 19:47:49 christos Exp $	*/
+/*	$NetBSD: map.c,v 1.44 2016/04/09 18:43:17 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.43 2016/02/17 19:47:49 christos Exp $");
+__RCSID("$NetBSD: map.c,v 1.44 2016/04/09 18:43:17 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -970,7 +970,7 @@ map_init_nls(EditLine *el)
 	el_action_t *map = el->el_map.key;
 
 	for (i = 0200; i <= 0377; i++)
-		if (Isprint(i))
+		if (iswprint(i))
 			map[i] = ED_INSERT;
 }
 
@@ -1135,7 +1135,7 @@ map_print_key(EditLine *el, el_action_t 
 		for (bp = el->el_map.help; bp < ep; bp++)
 			if (bp->func == map[(unsigned char) *in]) {
 				(void) fprintf(el->el_outfile,
-				    "%s\t->\t" FSTR "\n", outbuf, bp->name);
+				    "%s\t->\t%ls\n", outbuf, bp->name);
 				return;
 			}
 	} else
@@ -1172,7 +1172,7 @@ map_print_some_keys(EditLine *el, el_act
 			if (first == last) {
 				(void) keymacro__decode_str(firstbuf, unparsbuf,
 				    sizeof(unparsbuf), STRQQ);
-				(void) fprintf(el->el_outfile, "%-15s->  " FSTR "\n",
+				(void) fprintf(el->el_outfile, "%-15s->  %ls\n",
 				    unparsbuf, bp->name);
 			} else {
 				(void) keymacro__decode_str(firstbuf, unparsbuf,
@@ -1180,7 +1180,7 @@ map_print_some_keys(EditLine *el, el_act
 				(void) keymacro__decode_str(lastbuf, extrabuf,
 				    sizeof(extrabuf), STRQQ);
 				(void) fprintf(el->el_outfile,
-				    "%-4s to %-7s->  " FSTR "\n",
+				    "%-4s to %-7s->  %ls\n",
 				    unparsbuf, extrabuf, bp->name);
 			}
 			return;
@@ -1300,12 +1300,12 @@ map_bind(EditLine *el, int argc, const C
 				ep = &el->el_map.help[el->el_map.nfunc];
 				for (bp = el->el_map.help; bp < ep; bp++)
 					(void) fprintf(el->el_outfile,
-					    "" FSTR "\n\t" FSTR "\n",
+					    "%ls\n\t%ls\n",
 					    bp->name, bp->description);
 				return 0;
 			default:
 				(void) fprintf(el->el_errfile,
-				    "" FSTR ": Invalid switch `%lc'.\n",
+				    "%ls: Invalid switch `%lc'.\n",
 				    argv[0], (wint_t)p[1]);
 			}
 		else
@@ -1319,7 +1319,7 @@ map_bind(EditLine *el, int argc, const C
 		in = argv[argc++];
 	else if ((in = parse__string(inbuf, argv[argc++])) == NULL) {
 		(void) fprintf(el->el_errfile,
-		    "" FSTR ": Invalid \\ or ^ in instring.\n",
+		    "%ls: Invalid \\ or ^ in instring.\n",
 		    argv[0]);
 		return -1;
 	}
@@ -1355,7 +1355,7 @@ map_bind(EditLine *el, int argc, const C
 	case XK_EXE:
 		if ((out = parse__string(outbuf, argv[argc])) == NULL) {
 			(void) fprintf(el->el_errfile,
-			    "" FSTR ": Invalid \\ or ^ in outstring.\n", argv[0]);
+			    "%ls: Invalid \\ or ^ in outstring.\n", argv[0]);
 			return -1;
 		}
 		if (key)
@@ -1368,7 +1368,7 @@ map_bind(EditLine *el, int argc, const C
 	case XK_CMD:
 		if ((cmd = parse_cmd(el, argv[argc])) == -1) {
 			(void) fprintf(el->el_errfile,
-			    "" FSTR ": Invalid command `" FSTR "'.\n",
+			    "%ls: Invalid command `%ls'.\n",
 			    argv[0], argv[argc]);
 			return -1;
 		}

Index: src/lib/libedit/read.c
diff -u src/lib/libedit/read.c:1.87 src/lib/libedit/read.c:1.88
--- src/lib/libedit/read.c:1.87	Wed Mar 23 18:27:48 2016
+++ src/lib/libedit/read.c	Sat Apr  9 14:43:17 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: read.c,v 1.87 2016/03/23 22:27:48 christos Exp $	*/
+/*	$NetBSD: read.c,v 1.88 2016/04/09 18:43:17 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.87 2016/03/23 22:27:48 christos Exp $");
+__RCSID("$NetBSD: read.c,v 1.88 2016/04/09 18:43:17 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -308,9 +308,12 @@ read_char(EditLine *el, wchar_t *cp)
 	}
 
 	for (;;) {
+		mbstate_t mbs;
 
 		++cbp;
-		switch (ct_mbrtowc(cp, cbuf, cbp)) {
+		/* This only works because UTF8 is stateless. */
+		memset(&mbs, 0, sizeof(mbs));
+		switch (mbrtowc(cp, cbuf, cbp, &mbs)) {
 		case (size_t)-1:
 			if (cbp > 1) {
 				/*
@@ -575,7 +578,7 @@ FUN(el,gets)(EditLine *el, int *nread)
 					break;
 			if (b->name)
 				(void) fprintf(el->el_errfile,
-				    "Executing " FSTR "\n", b->name);
+				    "Executing %ls\n", b->name);
 			else
 				(void) fprintf(el->el_errfile,
 				    "Error command = %d\n", cmdnum);
@@ -589,7 +592,7 @@ FUN(el,gets)(EditLine *el, int *nread)
 		    el->el_chared.c_redo.pos < el->el_chared.c_redo.lim) {
 			if (cmdnum == VI_DELETE_PREV_CHAR &&
 			    el->el_chared.c_redo.pos != el->el_chared.c_redo.buf
-			    && Isprint(el->el_chared.c_redo.pos[-1]))
+			    && iswprint(el->el_chared.c_redo.pos[-1]))
 				el->el_chared.c_redo.pos--;
 			else
 				*el->el_chared.c_redo.pos++ = ch;

Index: src/lib/libedit/refresh.c
diff -u src/lib/libedit/refresh.c:1.45 src/lib/libedit/refresh.c:1.46
--- src/lib/libedit/refresh.c:1.45	Wed Mar  2 14:24:20 2016
+++ src/lib/libedit/refresh.c	Sat Apr  9 14:43:17 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: refresh.c,v 1.45 2016/03/02 19:24:20 christos Exp $	*/
+/*	$NetBSD: refresh.c,v 1.46 2016/04/09 18:43:17 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.45 2016/03/02 19:24:20 christos Exp $");
+__RCSID("$NetBSD: refresh.c,v 1.46 2016/04/09 18:43:17 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -162,8 +162,10 @@ re_addc(EditLine *el, wint_t c)
 protected void
 re_putc(EditLine *el, wint_t c, int shift)
 {
-	int i, w = Width(c);
+	int i, w = wcwidth(c);
 	ELRE_DEBUG(1, (__F, "printing %5x '%lc'\r\n", c, c));
+	if (w == -1)
+		w = 0;
 
 	while (shift && (el->el_refresh.r_cursor.h + w > el->el_terminal.t_size.h))
 	    re_putc(el, ' ', 1);
@@ -205,7 +207,7 @@ re_refresh(EditLine *el)
 	size_t termsz;
 #endif
 
-	ELRE_DEBUG(1, (__F, "el->el_line.buffer = :" FSTR ":\r\n",
+	ELRE_DEBUG(1, (__F, "el->el_line.buffer = :%ls:\r\n",
 	    el->el_line.buffer));
 
 	/* reset the Drawing cursor */
@@ -251,7 +253,7 @@ re_refresh(EditLine *el)
 
 	for (cp = st; cp < el->el_line.lastchar; cp++) {
 		if (cp == el->el_line.cursor) {
-                        int w = Width(*cp);
+                        int w = wcwidth(*cp);
 			/* save for later */
 			cur.h = el->el_refresh.r_cursor.h;
 			cur.v = el->el_refresh.r_cursor.v;
@@ -1021,7 +1023,7 @@ re_refresh_cursor(EditLine *el)
 				continue;
 			break;
 		default:
-			w = Width(*cp);
+			w = wcwidth(*cp);
 			if (w > 1 && h + w > th) { /* won't fit on line */
 				h = 0;
 				v++;
@@ -1037,7 +1039,7 @@ re_refresh_cursor(EditLine *el)
 	}
         /* if we have a next character, and it's a doublewidth one, we need to
          * check whether we need to linebreak for it to fit */
-        if (cp < el->el_line.lastchar && (w = Width(*cp)) > 1)
+        if (cp < el->el_line.lastchar && (w = wcwidth(*cp)) > 1)
                 if (h + w > th) {
                     h = 0;
                     v++;
@@ -1056,7 +1058,7 @@ re_refresh_cursor(EditLine *el)
 private void
 re_fastputc(EditLine *el, wint_t c)
 {
-	int w = Width((Char)c);
+	int w = wcwidth((Char)c);
 	while (w > 1 && el->el_cursor.h + w > el->el_terminal.t_size.h)
 	    re_fastputc(el, ' ');
 

Index: src/lib/libedit/tty.c
diff -u src/lib/libedit/tty.c:1.59 src/lib/libedit/tty.c:1.60
--- src/lib/libedit/tty.c:1.59	Mon Mar 21 21:34:32 2016
+++ src/lib/libedit/tty.c	Sat Apr  9 14:43:17 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: tty.c,v 1.59 2016/03/22 01:34:32 christos Exp $	*/
+/*	$NetBSD: tty.c,v 1.60 2016/04/09 18:43:17 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.59 2016/03/22 01:34:32 christos Exp $");
+__RCSID("$NetBSD: tty.c,v 1.60 2016/04/09 18:43:17 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -919,15 +919,17 @@ tty_bind_char(EditLine *el, int force)
 			continue;
 		/* Put the old default binding back, and set the new binding */
 		keymacro_clear(el, map, old);
-		map[UC(old[0])] = dmap[UC(old[0])];
+		map[(unsigned char)old[0]] = dmap[(unsigned char)old[0]];
 		keymacro_clear(el, map, new);
 		/* MAP_VI == 1, MAP_EMACS == 0... */
-		map[UC(new[0])] = tp->bind[el->el_map.type];
+		map[(unsigned char)new[0]] = tp->bind[el->el_map.type];
 		if (dalt) {
 			keymacro_clear(el, alt, old);
-			alt[UC(old[0])] = dalt[UC(old[0])];
+			alt[(unsigned char)old[0]] =
+			    dalt[(unsigned char)old[0]];
 			keymacro_clear(el, alt, new);
-			alt[UC(new[0])] = tp->bind[el->el_map.type + 1];
+			alt[(unsigned char)new[0]] =
+			    tp->bind[el->el_map.type + 1];
 		}
 	}
 }
@@ -1257,7 +1259,7 @@ tty_stty(EditLine *el, int argc __attrib
 
 		if (!m->m_name) {
 			(void) fprintf(el->el_errfile,
-			    "%s: Invalid argument `" FSTR "'.\n", name, d);
+			    "%s: Invalid argument `%ls'.\n", name, d);
 			return -1;
 		}
 		if (p) {

Index: src/lib/libedit/vi.c
diff -u src/lib/libedit/vi.c:1.55 src/lib/libedit/vi.c:1.56
--- src/lib/libedit/vi.c:1.55	Wed Mar  2 14:24:20 2016
+++ src/lib/libedit/vi.c	Sat Apr  9 14:43:17 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: vi.c,v 1.55 2016/03/02 19:24:20 christos Exp $	*/
+/*	$NetBSD: vi.c,v 1.56 2016/04/09 18:43:17 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.55 2016/03/02 19:24:20 christos Exp $");
+__RCSID("$NetBSD: vi.c,v 1.56 2016/04/09 18:43:17 christos Exp $");
 #endif
 #endif /* not lint && not SCCSID */
 
@@ -103,7 +103,7 @@ cv_paste(EditLine *el, wint_t c)
 	if (k->buf == NULL || len == 0)
 		return CC_ERROR;
 #ifdef DEBUG_PASTE
-	(void) fprintf(el->el_errfile, "Paste: \"" FSTARSTR "\"\n", (int)len,
+	(void) fprintf(el->el_errfile, "Paste: \"%.*ls\"\n", (int)len,
 	    k->buf);
 #endif
 
@@ -261,10 +261,10 @@ vi_change_case(EditLine *el, wint_t c)
 	for (i = 0; i < el->el_state.argument; i++) {
 
 		c = *el->el_line.cursor;
-		if (Isupper(c))
-			*el->el_line.cursor = Tolower(c);
-		else if (Islower(c))
-			*el->el_line.cursor = Toupper(c);
+		if (iswupper(c))
+			*el->el_line.cursor = towlower(c);
+		else if (iswlower(c))
+			*el->el_line.cursor = towupper(c);
 
 		if (++el->el_line.cursor >= el->el_line.lastchar) {
 			el->el_line.cursor--;
@@ -816,7 +816,7 @@ vi_match(EditLine *el, wint_t c __attrib
 
 	*el->el_line.lastchar = '\0';		/* just in case */
 
-	i = Strcspn(el->el_line.cursor, match_chars);
+	i = wcscspn(el->el_line.cursor, match_chars);
 	o_ch = el->el_line.cursor[i];
 	if (o_ch == 0)
 		return CC_ERROR;
@@ -1026,7 +1026,7 @@ vi_histedit(EditLine *el, wint_t c __att
 		goto error;
 	Strncpy(line, el->el_line.buffer, len);
 	line[len] = '\0';
-	ct_wcstombs(cp, line, TMP_BUFSIZ - 1);
+	wcstombs(cp, line, TMP_BUFSIZ - 1);
 	cp[TMP_BUFSIZ - 1] = '\0';
 	len = strlen(cp);
 	write(fd, cp, len);
@@ -1048,7 +1048,7 @@ vi_histedit(EditLine *el, wint_t c __att
 		if (st > 0) {
 			cp[st] = '\0';
 			len = (size_t)(el->el_line.limit - el->el_line.buffer);
-			len = ct_mbstowcs(el->el_line.buffer, cp, len);
+			len = mbstowcs(el->el_line.buffer, cp, len);
 			if (len > 0 && el->el_line.buffer[len - 1] == '\n')
 				--len;
 		}
@@ -1094,12 +1094,12 @@ vi_history_word(EditLine *el, wint_t c _
 
 	wep = wsp = 0;
 	do {
-		while (Isspace(*wp))
+		while (iswspace(*wp))
 			wp++;
 		if (*wp == 0)
 			break;
 		wsp = wp;
-		while (*wp && !Isspace(*wp))
+		while (*wp && !iswspace(*wp))
 			wp++;
 		wep = wp;
 	} while ((!el->el_state.doingarg || --el->el_state.argument > 0)

Reply via email to