Skip to content

Commit

Permalink
Remove utf-8 requirement (Yuichiro NAITO)
Browse files Browse the repository at this point in the history
  • Loading branch information
zoulasc committed Nov 18, 2018
1 parent f4632eb commit 8a1d432
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 39 deletions.
20 changes: 7 additions & 13 deletions lib/libedit/chartype.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* $NetBSD: chartype.c,v 1.31 2017/01/09 02:54:18 christos Exp $ */
/* $NetBSD: chartype.c,v 1.32 2018/11/18 17:09:39 christos Exp $ */

/*-
* Copyright (c) 2009 The NetBSD Foundation, Inc.
Expand Down Expand Up @@ -31,7 +31,7 @@
*/
#include "config.h"
#if !defined(lint) && !defined(SCCSID)
__RCSID("$NetBSD: chartype.c,v 1.31 2017/01/09 02:54:18 christos Exp $");
__RCSID("$NetBSD: chartype.c,v 1.32 2018/11/18 17:09:39 christos Exp $");
#endif /* not lint && not SCCSID */

#include <ctype.h>
Expand Down Expand Up @@ -183,17 +183,11 @@ ct_decode_argv(int argc, const char *argv[], ct_buffer_t *conv)
libedit_private size_t
ct_enc_width(wchar_t c)
{
/* UTF-8 encoding specific values */
if (c < 0x80)
return 1;
else if (c < 0x0800)
return 2;
else if (c < 0x10000)
return 3;
else if (c < 0x110000)
return 4;
else
return 0; /* not a valid codepoint */
char buf[MB_LEN_MAX];
int size;
if ((size = ct_wctomb(buf, c)) < 0)
return 0;
return size;
}

libedit_private ssize_t
Expand Down
6 changes: 2 additions & 4 deletions lib/libedit/editline.3
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
.\" $NetBSD: editline.3,v 1.98 2017/09/02 06:48:10 wiz Exp $
.\" $NetBSD: editline.3,v 1.99 2018/11/18 17:09:39 christos Exp $
.\"
.\" Copyright (c) 1997-2014 The NetBSD Foundation, Inc.
.\" All rights reserved.
Expand Down Expand Up @@ -26,7 +26,7 @@
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
.Dd September 1, 2017
.Dd November 9, 2018
.Dt EDITLINE 3
.Os
.Sh NAME
Expand Down Expand Up @@ -181,8 +181,6 @@ library respects the
locale set by the application program and never uses
.Xr setlocale 3
to change the locale.
The only locales supported are UTF-8 and the default C or POSIX locale.
If any other locale is set, behaviour is undefined.
.Sh LINE EDITING FUNCTIONS
The line editing functions use a common data structure,
.Fa EditLine ,
Expand Down
10 changes: 3 additions & 7 deletions lib/libedit/el.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* $NetBSD: el.c,v 1.96 2018/01/01 22:32:46 christos Exp $ */
/* $NetBSD: el.c,v 1.97 2018/11/18 17:09:39 christos Exp $ */

/*-
* Copyright (c) 1992, 1993
Expand Down Expand Up @@ -37,7 +37,7 @@
#if 0
static char sccsid[] = "@(#)el.c 8.2 (Berkeley) 1/3/94";
#else
__RCSID("$NetBSD: el.c,v 1.96 2018/01/01 22:32:46 christos Exp $");
__RCSID("$NetBSD: el.c,v 1.97 2018/11/18 17:09:39 christos Exp $");
#endif
#endif /* not lint && not SCCSID */

Expand Down Expand Up @@ -96,10 +96,6 @@ el_init_internal(const char *prog, FILE *fin, FILE *fout, FILE *ferr,
* Initialize all the modules. Order is important!!!
*/
el->el_flags = flags;
if (setlocale(LC_CTYPE, NULL) != NULL){
if (strcmp(nl_langinfo(CODESET), "UTF-8") == 0)
el->el_flags |= CHARSET_IS_UTF8;
}

if (terminal_init(el) == -1) {
el_free(el->el_prog);
Expand Down Expand Up @@ -301,7 +297,7 @@ el_wset(EditLine *el, int op, ...)
void *ptr = va_arg(ap, void *);

rv = hist_set(el, func, ptr);
if (!(el->el_flags & CHARSET_IS_UTF8))
if (MB_CUR_MAX == 1)
el->el_flags &= ~NARROW_HISTORY;
break;
}
Expand Down
3 changes: 1 addition & 2 deletions lib/libedit/el.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* $NetBSD: el.h,v 1.43 2017/09/05 18:07:59 christos Exp $ */
/* $NetBSD: el.h,v 1.44 2018/11/18 17:09:39 christos Exp $ */

/*-
* Copyright (c) 1992, 1993
Expand Down Expand Up @@ -55,7 +55,6 @@
#define NO_TTY 0x02
#define EDIT_DISABLED 0x04
#define UNBUFFERED 0x08
#define CHARSET_IS_UTF8 0x10
#define NARROW_HISTORY 0x40
#define NO_RESET 0x80

Expand Down
15 changes: 2 additions & 13 deletions lib/libedit/read.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* $NetBSD: read.c,v 1.103 2017/06/27 23:24:19 christos Exp $ */
/* $NetBSD: read.c,v 1.104 2018/11/18 17:09:39 christos Exp $ */

/*-
* Copyright (c) 1992, 1993
Expand Down Expand Up @@ -37,7 +37,7 @@
#if 0
static char sccsid[] = "@(#)read.c 8.1 (Berkeley) 6/4/93";
#else
__RCSID("$NetBSD: read.c,v 1.103 2017/06/27 23:24:19 christos Exp $");
__RCSID("$NetBSD: read.c,v 1.104 2018/11/18 17:09:39 christos Exp $");
#endif
#endif /* not lint && not SCCSID */

Expand Down Expand Up @@ -335,17 +335,6 @@ read_char(EditLine *el, wchar_t *cp)
goto again;
}
case (size_t)-2:
/*
* We don't support other multibyte charsets.
* The second condition shouldn't happen
* and is here merely for additional safety.
*/
if ((el->el_flags & CHARSET_IS_UTF8) == 0 ||
cbp >= MB_LEN_MAX) {
errno = EILSEQ;
*cp = L'\0';
return -1;
}
/* Incomplete sequence, read another byte. */
goto again;
default:
Expand Down

0 comments on commit 8a1d432

Please sign in to comment.