summaryrefslogtreecommitdiff
path: root/lib/libc/citrus
AgeCommit message (Collapse)Author
2012-06-06Add support for mbsnrtowcs() and wcsnrtombs() to libc.Matthew Dempsky
Bulk build test by naddy.
2011-04-21Don't use 'n' for the length of multibyte chars, because it is the lengthYASUOKA Masahiko
of wide characters. This will fix a problem of uim-fep pre-edit display. OK stsp@
2010-08-05The UTF-8 decoder should not accept byte sequences which decode to unicodeStefan Sperling
code positions U+D800 to U+DFFF (UTF-16 surrogates), U+FFFE, and U+FFFF. http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 http://unicode.org/faq/utf_bom.html#utf8-4 ok phessler, millert, miod, deraadt
2010-08-03When the target pointer 'pwcs' passed to mbsrtowcs() is NULL, mbsrtowcs()Stefan Sperling
is supposed to ignore the 'n' parameter and return the number of wide characters needed to represent the given multi-byte character sequence. However, in the special case where 'pwcs' is NULL and 'n' is zero, our mbsrtowcs() implementation for single-byte locales mistakenly returned zero. Before the UTF-8 locale was added, this bug was invisible to callers of mbstowcs() because mbstowcs() handled this special case itself. But our new mbstowcs() implementation simply forwards to the locale-specific mbsrtowcs() implementation and expects it to do the right thing. The "awesome" window manager's "Run:" command prompt uses mbstowcs() to measure how many (possibly multi-byte) characters a user has typed, and due to this bug would always be tricked into thinking the user had entered zero characters when a single-byte locale was used. Found after prodding by dcoppa. ok deraadt sthen espie
2010-08-01add missing header needed by strcmp()Charles Longeau
add missing prototype ok stsp@
2010-07-29Remove stray newline, fix $OpenBSD$; ok deraadtStefan Sperling
2010-07-27Replace the single-byte placeholders for the multi-byte/wide-characterStefan Sperling
conversion interfaces of libc (mbrtowc(3) and friends) with new implementations that internally call an API based on NetBSD's citrus. This allows us to support locales with multi-byte character encodings. Provide two implementations of the citrus-based API: one based on the old single-byte placeholders for use with our existing single-byte character locales (C, ISO8859-*, KOI8, CP1251, etc.), and one that provides support for UTF-8 encoded characters (code based on FreeBSD's implementation). Install the en_US.UTF-8 ctype locale support file, and allow the UTF-8 ctype locale to be enabled via setlocale(3) (export LC_CTYPE='en_US.UTF-8'). A lot of programs, especially from ports, will now start using UTF-8 if the UTF-8 locale is enabled. Use at your own risk, and please report any breakage. Note that ncurses-based programs cannot display UTF-8 right now, this is being worked on. To prevent install media growth, add vfprintf(3) and mbrtowc(3) to libstubs. The mbrtowc stub was copied unchanged from its old single-byte placeholder. vfprintf.c doesn't need to be copied, just put in .PATH (hint by fgsch@). Testing by myself, naddy, sthen, nicm, espie, armani, Dmitrij D. Czarkoff. ok matthieu espie millert sthen nicm deraadt
2005-08-07commit LC_CTYPE files from NetBSD/citrus, not yet linked in.Marc Espie
okay deraadt@