Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/lib/libedit Tuck in mbstate_t to the wide char version only ...
details: https://anonhg.NetBSD.org/src/rev/c0c7ee76d583
branches: trunk
changeset: 343748:c0c7ee76d583
user: christos <christos%NetBSD.org@localhost>
date: Wed Feb 24 17:20:01 2016 +0000
description:
Tuck in mbstate_t to the wide char version only to avoid exposing the zeroing
hack and doing it in the narrow case.
diffstat:
lib/libedit/chartype.c | 17 ++++++++++++-----
lib/libedit/chartype.h | 7 +++----
lib/libedit/read.c | 9 +++------
3 files changed, 18 insertions(+), 15 deletions(-)
diffs (114 lines):
diff -r 6f1682a1bcb5 -r c0c7ee76d583 lib/libedit/chartype.c
--- a/lib/libedit/chartype.c Wed Feb 24 17:13:48 2016 +0000
+++ b/lib/libedit/chartype.c Wed Feb 24 17:20:01 2016 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: chartype.c,v 1.21 2016/02/24 17:13:22 christos Exp $ */
+/* $NetBSD: chartype.c,v 1.22 2016/02/24 17:20:01 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.21 2016/02/24 17:13:22 christos Exp $");
+__RCSID("$NetBSD: chartype.c,v 1.22 2016/02/24 17:20:01 christos Exp $");
#endif /* not lint && not SCCSID */
#include <ctype.h>
@@ -215,12 +215,19 @@
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);
+}
+
#else
size_t
-/*ARGSUSED*/
-ct_mbrtowc(wchar_t *wc, const char *s, size_t n,
- void *mbs __attribute__((__unused__))) {
+ct_mbrtowc(wchar_t *wc, const char *s, size_t n)
if (s == NULL)
return 0;
if (n == 0)
diff -r 6f1682a1bcb5 -r c0c7ee76d583 lib/libedit/chartype.h
--- a/lib/libedit/chartype.h Wed Feb 24 17:13:48 2016 +0000
+++ b/lib/libedit/chartype.h Wed Feb 24 17:20:01 2016 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: chartype.h,v 1.22 2016/02/24 17:13:22 christos Exp $ */
+/* $NetBSD: chartype.h,v 1.23 2016/02/24 17:20:01 christos Exp $ */
/*-
* Copyright (c) 2009 The NetBSD Foundation, Inc.
@@ -37,7 +37,6 @@
#define _h_chartype_f
-
#ifdef WIDECHAR
/* Ideally we should also test the value of the define to see if it
@@ -60,7 +59,6 @@
#warning Build environment does not support non-BMP characters
#endif
-#define ct_mbrtowc mbrtowc
#define ct_wctob wctob
#define ct_wctomb wctomb
#define ct_wctomb_reset wctomb(0,0)
@@ -113,7 +111,6 @@
#else /* NARROW */
-size_t ct_mbrtowc(wchar_t *, const char *, size_t, void *);
#define ct_wctob(w) ((int)(w))
#define ct_wctomb error
#define ct_wctomb_reset
@@ -246,5 +243,7 @@
protected int ct_chr_class(Char c);
#endif
+size_t ct_mbrtowc(wchar_t *, const char *, size_t);
+
#endif /* _chartype_f */
diff -r 6f1682a1bcb5 -r c0c7ee76d583 lib/libedit/read.c
--- a/lib/libedit/read.c Wed Feb 24 17:13:48 2016 +0000
+++ b/lib/libedit/read.c Wed Feb 24 17:20:01 2016 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: read.c,v 1.84 2016/02/24 17:13:22 christos Exp $ */
+/* $NetBSD: read.c,v 1.85 2016/02/24 17:20:01 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.84 2016/02/24 17:13:22 christos Exp $");
+__RCSID("$NetBSD: read.c,v 1.85 2016/02/24 17:20:01 christos Exp $");
#endif
#endif /* not lint && not SCCSID */
@@ -343,12 +343,9 @@
}
for (;;) {
- mbstate_t mbs;
++cbp;
- /* This only works because UTF8 is stateless */
- memset(&mbs, 0, sizeof(mbs));
- switch (ct_mbrtowc(cp, cbuf, cbp, &mbs)) {
+ switch (ct_mbrtowc(cp, cbuf, cbp)) {
case (size_t)-1:
if (cbp > 1) {
/*
Home |
Main Index |
Thread Index |
Old Index