public inbox for cygwin-cvs@sourceware.org help / color / mirror / Atom feed
From: Corinna Vinschen <corinna@sourceware.org> To: cygwin-cvs@sourceware.org, newlib-cvs@sourceware.org Subject: [newlib-cygwin/main] Cygwin: fully support KOI8-T codeset Date: Sat, 25 Feb 2023 15:24:49 +0000 (GMT) [thread overview] Message-ID: <20230225152449.4C0B7385B519@sourceware.org> (raw) https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=2b052b3c5080c1b601129fcceda5f6537a442c87 commit 2b052b3c5080c1b601129fcceda5f6537a442c87 Author: Corinna Vinschen <corinna@vinschen.de> AuthorDate: Sat Feb 25 13:19:27 2023 +0100 Commit: Corinna Vinschen <corinna@vinschen.de> CommitDate: Sat Feb 25 16:12:51 2023 +0100 Cygwin: fully support KOI8-T codeset Commit 89eb4bce152f was pretty half-hearted, missing the codepage character type tables and wctomb/mbtowc mappings. Fixes: 89eb4bce152f ("Cygwin: support KOI8-T codeset") Signed-off-by: Corinna Vinschen <corinna@vinschen.de> Diff: --- newlib/libc/ctype/ctype_cp.h | 33 +++++++++++++++++++++++++++++++-- newlib/libc/stdlib/mbtowc_r.c | 12 ++++++++++-- newlib/libc/stdlib/wctomb_r.c | 11 +++++++++-- winsup/cygwin/ctype.cc | 2 +- 4 files changed, 51 insertions(+), 7 deletions(-) diff --git a/newlib/libc/ctype/ctype_cp.h b/newlib/libc/ctype/ctype_cp.h index 9370778a2891..192cfa43decb 100644 --- a/newlib/libc/ctype/ctype_cp.h +++ b/newlib/libc/ctype/ctype_cp.h @@ -469,13 +469,31 @@ _L, _L, _L, _L, _L, _L, _L, _L, \ _L, _L, _L, _L, _L, _L, _L #define _CTYPE_PT154_255 _L +#define _CTYPE_CP103_128_254 \ + _L, _L, _P, _U, _P, _P, _P, _P, \ + 0, _P, _L, _P, _U, _L, _U, 0, \ + _U, _P, _P, _P, _P, _P, _P, _P, \ + 0, _P, 0, _P, 0, 0, 0, 0, \ + 0, _L, _U, _L, _P, _L, _P, _P, \ + 0, 0, 0, _P, _P, _P, _P, 0, \ + _P, _P, _P, _U, 0, _U, _P, _P, \ + 0, _P, 0, _P, 0, 0, 0, _P, \ + _L, _L, _L, _L, _L, _L, _L, _L, \ + _L, _L, _L, _L, _L, _L, _L, _L, \ + _L, _L, _L, _L, _L, _L, _L, _L, \ + _L, _L, _L, _L, _L, _L, _L, _L, \ + _U, _U, _U, _U, _U, _U, _U, _U, \ + _U, _U, _U, _U, _U, _U, _U, _U, \ + _U, _U, _U, _U, _U, _U, _U, _U, \ + _U, _U, _U, _U, _U, _U, _U +#define _CTYPE_CP103_255 _U #if defined(ALLOW_NEGATIVE_CTYPE_INDEX) #ifndef __CYGWIN__ static const #endif -char __ctype_cp[26][128 + 256] = { +char __ctype_cp[27][128 + 256] = { { _CTYPE_CP437_128_254, 0, _CTYPE_DATA_0_127, @@ -632,11 +650,17 @@ char __ctype_cp[26][128 + 256] = { _CTYPE_PT154_128_254, _CTYPE_PT154_255 }, + { _CTYPE_CP103_128_254, + 0, + _CTYPE_DATA_0_127, + _CTYPE_CP103_128_254, + _CTYPE_CP103_255 + }, }; #else /* !defined(ALLOW_NEGATIVE_CTYPE_INDEX) */ -static const char __ctype_cp[26][1 + 256] = { +static const char __ctype_cp[27][1 + 256] = { { 0, _CTYPE_DATA_0_127, _CTYPE_CP437_128_254, @@ -767,6 +791,11 @@ static const char __ctype_cp[26][1 + 256] = { _CTYPE_PT154_128_254, _CTYPE_PT154_255 }, + { 0, + _CTYPE_DATA_0_127, + _CTYPE_CP103_128_254, + _CTYPE_CP103_255 + }, }; #endif /* ALLOW_NEGATIVE_CTYPE_INDEX */ diff --git a/newlib/libc/stdlib/mbtowc_r.c b/newlib/libc/stdlib/mbtowc_r.c index ca876f9a0218..01e596db8bde 100644 --- a/newlib/libc/stdlib/mbtowc_r.c +++ b/newlib/libc/stdlib/mbtowc_r.c @@ -487,7 +487,14 @@ __cp_102_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, return ___cp_mbtowc (r, pwc, s, n, 25, state); } -static mbtowc_p __cp_xxx_mbtowc[26] = { +static int +__cp_103_mbtowc (struct _reent *r, wchar_t *pwc, const char *s, size_t n, + mbstate_t *state) +{ + return ___cp_mbtowc (r, pwc, s, n, 26, state); +} + +static mbtowc_p __cp_xxx_mbtowc[27] = { __cp_437_mbtowc, __cp_720_mbtowc, __cp_737_mbtowc, @@ -513,7 +520,8 @@ static mbtowc_p __cp_xxx_mbtowc[26] = { __cp_20866_mbtowc, __cp_21866_mbtowc, __cp_101_mbtowc, - __cp_102_mbtowc + __cp_102_mbtowc, + __cp_103_mbtowc, }; /* val *MUST* be valid! All checks for validity are supposed to be diff --git a/newlib/libc/stdlib/wctomb_r.c b/newlib/libc/stdlib/wctomb_r.c index a7f87cd9e22e..3081e9370271 100644 --- a/newlib/libc/stdlib/wctomb_r.c +++ b/newlib/libc/stdlib/wctomb_r.c @@ -611,7 +611,13 @@ __cp_102_wctomb (struct _reent *r, char *s, wchar_t _wchar, mbstate_t *state) return ___cp_wctomb (r, s, _wchar, 25, state); } -static wctomb_p __cp_xxx_wctomb[26] = { +static int +__cp_103_wctomb (struct _reent *r, char *s, wchar_t _wchar, mbstate_t *state) +{ + return ___cp_wctomb (r, s, _wchar, 26, state); +} + +static wctomb_p __cp_xxx_wctomb[27] = { __cp_437_wctomb, __cp_720_wctomb, __cp_737_wctomb, @@ -637,7 +643,8 @@ static wctomb_p __cp_xxx_wctomb[26] = { __cp_20866_wctomb, __cp_21866_wctomb, __cp_101_wctomb, - __cp_102_wctomb + __cp_102_wctomb, + __cp_103_wctomb, }; /* val *MUST* be valid! All checks for validity are supposed to be diff --git a/winsup/cygwin/ctype.cc b/winsup/cygwin/ctype.cc index 7bdc78edf0e0..d99e331baa57 100644 --- a/winsup/cygwin/ctype.cc +++ b/winsup/cygwin/ctype.cc @@ -16,7 +16,7 @@ extern char _ctype_b[128 + 256]; time-critical anyway. */ extern int __iso_8859_index (const char *charset_ext); /* Newlib */ extern int __cp_index (const char *charset_ext); /* Newlib */ -extern const char __ctype_cp[22][128 + 256]; /* Newlib */ +extern const char __ctype_cp[27][128 + 256]; /* Newlib */ extern const char __ctype_iso[15][128 + 256]; /* Newlib */ void
reply other threads:[~2023-02-25 15:24 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20230225152449.4C0B7385B519@sourceware.org \ --to=corinna@sourceware.org \ --cc=cygwin-cvs@sourceware.org \ --cc=newlib-cvs@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).