musl - an implementation of the standard library for Linux-based systems
Find a file
Rich Felker 16f18d036d byte-based C locale, phase 2: stdio and iconv (multibyte callers)
this patch adjusts libc components which use the multibyte functions
internally, and which depend on them operating in a particular
encoding, to make the appropriate locale changes before calling them
and restore the calling thread's locale afterwards. activating the
byte-based C locale without these changes would cause regressions in
stdio and iconv.

in the case of iconv, the current implementation was simply using the
multibyte functions as UTF-8 conversions. setting a multibyte UTF-8
locale for the duration of the iconv operation allows the code to
continue working.

in the case of stdio, POSIX requires that FILE streams have an
encoding rule bound at the time of setting wide orientation. as long
as all locales, including the C locale, used the same encoding,
treating high bytes as UTF-8, there was no need to store an encoding
rule as part of the stream's state.

a new locale field in the FILE structure points to the locale that
should be made active during fgetwc/fputwc/ungetwc on the stream. it
cannot point to the locale active at the time the stream becomes
oriented, because this locale could be mutable (the global locale) or
could be destroyed (locale_t objects produced by newlocale) before the
stream is closed. instead, a pointer to the static C or C.UTF-8 locale
object added in commit commit aeeac9ca54
is used. this is valid since categories other than LC_CTYPE will not
affect these functions.
2015-06-16 06:10:29 +00:00
arch arm: add vdso support 2015-06-14 04:23:20 +00:00
crt add rcrt1 start file for fully static-linked PIE 2015-05-26 03:37:41 -04:00
dist add another example option to dist/config.mak 2012-04-24 16:49:11 -04:00
include add macro version of ctype.h isascii function 2015-06-06 18:16:22 +00:00
lib new solution for empty lib dir (old one had some problems) 2011-02-17 17:12:52 -05:00
src byte-based C locale, phase 2: stdio and iconv (multibyte callers) 2015-06-16 06:10:29 +00:00
tools fix system breakage window during make install due to permissions 2014-01-15 22:29:13 -05:00
.gitignore add version.h to .gitignore; it is a generated file 2014-01-21 01:06:42 -05:00
configure configure: work around compilers that merely warn for unknown options 2015-05-28 00:08:13 -04:00
COPYRIGHT update authors/contributors list 2015-03-16 18:43:54 -04:00
INSTALL update notice on broken gcc versions in INSTALL file 2014-07-31 19:02:54 -04:00
Makefile add additional Makefile dependency rules for rcrt1.o PIE start file 2015-06-03 02:02:09 -04:00
README update version reference in the README file 2014-06-25 14:16:53 -04:00
VERSION release 1.1.10 2015-06-04 16:08:24 -04:00
WHATSNEW release 1.1.10 2015-06-04 16:08:24 -04:00

    musl libc

musl, pronounced like the word "mussel", is an MIT-licensed
implementation of the standard C library targetting the Linux syscall
API, suitable for use in a wide range of deployment environments. musl
offers efficient static and dynamic linking support, lightweight code
and low runtime overhead, strong fail-safe guarantees under correct
usage, and correctness in the sense of standards conformance and
safety. musl is built on the principle that these goals are best
achieved through simple code that is easy to understand and maintain.

The 1.1 release series for musl features coverage for all interfaces
defined in ISO C99 and POSIX 2008 base, along with a number of
non-standardized interfaces for compatibility with Linux, BSD, and
glibc functionality.

For basic installation instructions, see the included INSTALL file.
Information on full musl-targeted compiler toolchains, system
bootstrapping, and Linux distributions built on musl can be found on
the project website:

    http://www.musl-libc.org/