git: locale - Add two new API functions
Matthew Dillon
dillon at crater.dragonflybsd.org
Sun Aug 16 15:51:44 PDT 2015
commit 8a84c799639d2e842952ce56fad530a085b16712
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Sun Aug 16 15:03:03 2015 -0700
locale - Add two new API functions
* Add wcrtombin() and mbintowcr(), powerful buffer-to-buffer functions
to translate UTF8, which can also perform escaping and de-escaping,
allow legacy parsing, and do checks with varying levels of strictness.
NOTE: If no locale or "C" locale, these functions are 1:1 (do not do
UTF8 processing). A UTF8 locale must be used to access these
functions.
* Add wcrtoutf8() and utf8towcr(). These work exactly the same as
the above functions but are locale-agnostic. They always operate in
UTF8 and locale initialization is not necessary.
* Escaping and de-escaping for 8-bit-clean round-trips with two of the
modes.
* Can construct UTF8B from unescaped 8-bit-clean data, can deconstruct
UTF8B (restore the original clean data), and can also be flagged
generically to take already-escaped UTF8B or wchars as input.
* Can be used to perform strict checks.
* Very powerful incremental buffer validation and processing capabilities.
Far more visibility to the caller rather than hiding state in a tracking
state structure. No tracking state structure.
* Does not do idiotic nul buffer termination. Caller passes explicitly
sized data, can opt to include or not include a terminator (depending
on what is desired), and the byte buffers can contain any 8-bit code
including 0x00.
Summary of changes:
include/locale.h | 1 +
include/wchar.h | 14 ++
include/xlocale/_wchar.h | 8 +
lib/libc/locale/Makefile.inc | 8 +-
lib/libc/locale/Symbol.map | 3 +
lib/libc/locale/locale_isstrict.c | 52 ++++++
lib/libc/locale/mbintowcr.3 | 262 +++++++++++++++++++++++++++++++
lib/libc/locale/mbintowcr.c | 44 ++++++
lib/libc/locale/mblocal.h | 6 +
lib/libc/locale/mbtowc.3 | 2 +
lib/libc/locale/multibyte.3 | 4 +
lib/libc/locale/none.c | 97 ++++++++++++
lib/libc/locale/utf8.c | 321 +++++++++++++++++++++++++++++++++++++-
lib/libc/locale/wcrtomb.3 | 2 +
lib/libc/locale/wcrtombin.c | 44 ++++++
lib/libc/locale/xlocale_private.h | 2 +
test/debug/utf8bin.c | 101 ++++++++++++
17 files changed, 969 insertions(+), 2 deletions(-)
create mode 100644 lib/libc/locale/locale_isstrict.c
create mode 100644 lib/libc/locale/mbintowcr.3
create mode 100644 lib/libc/locale/mbintowcr.c
create mode 100644 lib/libc/locale/wcrtombin.c
create mode 100644 test/debug/utf8bin.c
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/8a84c799639d2e842952ce56fad530a085b16712
--
DragonFly BSD source repository
More information about the Commits
mailing list