Commit Graph

2177 Commits

Author SHA1 Message Date
Ken Brown dda82d1a7b Add _PC_CASE_INSENSITIVE to [f]pathconf
Update the getconf utility to support the new flag as well as
_PC_POSIX_PERMISSIONS and _PC_POSIX_SECURITY.  These were previously
unsupported, probably as an oversight.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-10-21 13:39:02 +02:00
Thomas Preud'homme 8394e47d73 Make ctype_.c and ctype_.h agree on _ctype_b type
_ctype_b is defined in ctype_.c as a const char array for non cygwin
targets allowing negative ctype index but as a char array for the same
targets in ctype_.h, giving type conflict at compile time.  This is
because the cygwin targets are not treated specially in the latter file.
This patch adds the necessary logic for cygwin targets in ctype_.h.
2016-10-17 16:37:44 +02:00
Corinna Vinschen 091a0ac120 Fix typo in strerror doc
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-31 13:43:19 +02:00
Yaakov Selkowitz 3d3ab82968 Fix off_t typedef on Cygwin64
While both long and long long are 64-bits on x86_64, they are distinct types,
and long was used prior to commit 477463a201.
Changing this breaks the linking of previously compiled C++ functions with
off_t arguments on 64-bit Cygwin with newly compiled code, as the mangling of
long (l) and long long (x) differ.

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
2016-08-29 15:30:59 -05:00
Corinna Vinschen de8b81950d Change return type from locale_t to struct __locale_t * as well
Complements commit 14228e2.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-25 17:27:37 +02:00
Corinna Vinschen b690df6bbd Drop duplicate _ctype_ declaration from ctype_.h
It's already defined in ctype.h.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-25 16:05:18 +02:00
Corinna Vinschen e97109184a Drop global __ctype_ptr__ entirely in favor of using locale_t::ctype_ptr
Keep __ctype_ptr__ available on Cygwin only, for backward compatibility
with existing apps referencing it via the ctype macros.

Otherwise initialize __global_locale.ctype_ptr and __C_locale.ctype_ptr
and use them throughout.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-25 14:18:31 +02:00
Corinna Vinschen 14228e2d0f Use struct __locale_t * for reentrent locale functions
This fixes a build problem since locale_t is only defined if
__POSIX_VISIBLE >= 200809.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-25 09:53:01 +02:00
Brian Inglis 448b46397d Add strerror_l prototype, change str[n]casecmp_l feature tests
strerror_l prototype was missing.
str[n]casecmp_l feature tests in string.h vs. strings.h were transposed.
2016-08-25 09:44:31 +02:00
Corinna Vinschen a703d64ad7 Avoid crash when calling __localeconv_l with __C_locale
__C_locale is const.  Thus, overwriting the lconv values in __localeconv_l
will try to write to a R/O region.  Given the lconv values in __C_locale
are initialized, there's no reason to write them in __localeconv_l at all.
Just return &__C_locale.lconv.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-24 19:46:55 +02:00
Corinna Vinschen 58ede08b91 Use #if __GNU_VISIBLE, not #ifdef __GNU_VISIBLE
sys/features.h always defines __GNU_VISIBLE, either as 0 or 1.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-24 10:18:54 +02:00
Eric Blake ec0117b6e1 strerror_l: Fix copy-and-paste typo
Signed-off-by: Eric Blake <eblake@redhat.com>
2016-08-23 14:36:06 -05:00
Corinna Vinschen 7501249d5e Mention strerror_l in libc/string/strings.tex
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-23 18:15:55 +02:00
Corinna Vinschen 3f36c6fa62 Add __get_C_locale inline function and fix new locale code for !_MB_CAPABLE targets
Only access "C" locale using the new __get_C_locale inline function.
Enable __global_locale for !_MB_CAPABLE targets.  Accommodate !_MB_CAPABLE
targets in new locale code.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-23 17:57:06 +02:00
Corinna Vinschen 0ecb846d2b Implement GNU extension strptime_l
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-23 17:51:14 +02:00
Corinna Vinschen e636fe3d48 Implement GNU extension wcsftime_l
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-23 17:51:14 +02:00
Corinna Vinschen 463a8afaa5 Implement missing POSIX-1.2008 function strerror_l
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-23 17:51:14 +02:00
Corinna Vinschen 80e0ad1e77 Add missing declarations of str{n}casecmp_l to strings.h.
Per glibc, both funcs are defined as GNU visible in strings.h.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-23 17:40:03 +02:00
Corinna Vinschen fb8e88815e Fix stray closing brace
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-23 13:08:01 +02:00
Corinna Vinschen f4fb06ce17 Add/change a few #ifdef comments in locale code for clearness
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-23 12:43:40 +02:00
Corinna Vinschen 3eace743b2 Remove erroneous POSIX guards for reentrant locale functions
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-23 12:39:42 +02:00
Corinna Vinschen 2fb5e3dfb2 Reference __global_locale only via __get_global_locale.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-23 12:38:28 +02:00
Corinna Vinschen 5085ce2106 Remove extern declaration of __locale_cjk_lang in string/local.h
Now that __locale_cjk_lang is an inline function in setlocale.h and
setlocale.h is included, the declaration doesn't make sense.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-21 12:14:32 +02:00
Corinna Vinschen 216054fa77 Implement missing POSIX function nl_langinfo_l
Change nl_langinfo to nl_langinfo_l using locale given as argument.
Remove outdated TRANSITION_PERIOD_HACK.  The codeset is stored in
the locale for quite some time now.  For !MB_CAPABLE targets, just
return "US_ASCII" as codeset.

Implement nl_langinfo by calling nl_langinfo_l.  Export nl_langinfo_l
from Cygwin DLL and bump minor API version number.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-20 17:22:41 +02:00
Corinna Vinschen 7630e38462 Introduce __current_locale_charset/__locale_charset
The former __locale_charset always fetched the current locale's charset.
We need the per-locale charset, too, in future. Rename __locale_charset
to __current_locale_charset and change __locale_charset to take a
locale_t as parameter.  Accommodate througout.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-20 17:14:56 +02:00
Thomas Preud'homme 65277df72d Fix html build 2016-08-19 11:59:37 +02:00
Corinna Vinschen 3bbc40af2a Revert "Fix __getreent function for Cygwin"
This reverts commit 4de8596.  It worked around a problem which was
actually introduced by patch 10a30e7 a few weeks ago.  Rather than
adding special code to the newlib version of __getreent, the followup
patch reinstantiates the original, Cygwin-only implementation of
__getreent.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
Signed-off-by: Stefan Assmann <sassmann@redhat.com>
2016-08-18 15:24:18 +02:00
Corinna Vinschen 4de8596b8e Fix __getreent function for Cygwin
So far the lib function __getreent always returned _impure_ptr.  On Cygwin
this is only correct after _impure_ptr got initialized.  The inline
function in include/cygwin/config.h always returns the right _reent ptr,
though.

After introducing per-thread locales, the __getreent function is called
prior to initialization of _impure_ptr (from dll_crt0_0) to access the
locale pointer, which leads to a crash.

Fix the __getreent lib function for Cygwin to return the correct _reent
pointer all the time.  Rename inline function to __inline_getreent
and introduce a macro __getreent calling the inline function.  Change
the lib function __getreent to call __inline_getreent on Cygwin.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-18 10:27:14 +02:00
Thomas Preudhomme 0e2e3c958c Fix pdf build failure wrt documentation of is*_l functions
make pdf on arm-none-eabi targets fails to build after the reorganization in
baf0c9fcb5 to fold is*_l documentation in their
is* counterpart. This is due two issues:

1) newlib/libc/ctype/ctype.tex still including the def file for the long versions
2) missing angle brackets in .c files for some of is*_l functions

This patch fixes the issues and allows make pdf to succeeds.
2016-08-17 20:58:21 +02:00
Corinna Vinschen b0d341442c Constify __locale_ctype_ptr and __locale_ctype_ptr_l
Remove _MB_CAPABLE-only _CONST in ctype.h

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-17 09:40:28 +02:00
Corinna Vinschen 1c25a777b3 Actually return pointers in locale categroy accessor functions
Commit 6e7ce50 was broken.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-16 16:23:51 +02:00
Corinna Vinschen 625a8a3f62 Always fall back to __ctype_ptr__ in isXXX_l functions.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-16 16:22:12 +02:00
Corinna Vinschen 042263cd83 Avoid "implicit declaration of function ‘strtold_l’" in wcstold.c
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-16 16:21:19 +02:00
Corinna Vinschen 1ec81984d8 Use era_info_t and alt_digits_t on _WANT_C99_TIME_FORMATS targets only
Using era_info_t and alt_digits_t indiscriminately in strftime and
strftime_l breaks targets not wanting C99 time formats.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-16 15:26:01 +02:00
Corinna Vinschen 6e7ce50e04 Expose locale category accessor functions to non-__HAVE_LOCALE_INFO__ targets.
These functions are used from, e.g., nl_langinfo or strftime, so
we need them for all targets.  Just return "C" locale category for
non-__HAVE_LOCALE_INFO__ targets.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-16 15:24:26 +02:00
Corinna Vinschen 7ef90f7f9d __localeconv_l: Always define locale variable lconv
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-16 13:54:32 +02:00
Corinna Vinschen 7964ad15c1 Don't use locale_t in internal header
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-16 13:51:46 +02:00
Corinna Vinschen 238455adfa Implement strto[dflu]_l/wcsto[dflu]_l
Implement GNU extensions strtod_l, strtof_l, strtol_l, strtold_l, strtoll_l,
strtoul_l, strtoull_l, wcstod_l, wcstof_l, wcstol_l, wcstold_l, wcstoll_l,
wcstoul_l, wcstoull_l.

Export from Cygwin, fix posix.xml.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-15 17:35:21 +02:00
Corinna Vinschen 5ef60b7e6a Add documentation for duplocale, freelocale, newlocale, and uselocale.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-15 17:34:40 +02:00
Corinna Vinschen baf0c9fcb5 Fold documentation of is*_l funcs into documentation of non-l is* funcs
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-15 14:21:52 +02:00
Corinna Vinschen 5bdf8cfa49 setlocale/localeconv are *not* POSIX-1.2008
Signed-off by: Corinna Vinschen <corinna@vinschen.de>
2016-08-15 10:56:59 +02:00
Corinna Vinschen 1a5d08014b setlocale.h: Fix current locale handling for !__HAVE_LOCALE_INFO__ targets
Signed-off by: Corinna Vinschen <corinna@vinschen.de>
2016-08-15 10:56:59 +02:00
Corinna Vinschen beb721cf37 __loadlocale: Set missing val when evaluating CP874
Signed-off by: Corinna Vinschen <corinna@vinschen.de>
2016-08-15 10:56:59 +02:00
Corinna Vinschen d7281b92ab Fix multiple thinkos in newlocale
- Setting the categories strings in tmp_locale short-circuits
  __loadlocale.  Use a new_categories array instead, just as in
  _setlocale_r.

- If we have a base, copy over the *not* defined categories in
  category_mask in the first place.  Rearrange loop accordingly.

- Free base right in newlocale.

Signed-off by: Corinna Vinschen <corinna@vinschen.de>
2016-08-15 10:56:58 +02:00
Corinna Vinschen 659f4ca916 Fix _REENT_INIT initialization of _locale
Initializing a pointer to struct __locale_t to point to a string "C"
is not such a bright idea in the long run...

Signed-off by: Corinna Vinschen <corinna@vinschen.de>
2016-08-15 10:56:58 +02:00
Corinna Vinschen 18f6750b95 Fix typo in isalnum_l doc
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-15 10:56:58 +02:00
Corinna Vinschen ac7f1d5e93 Get rid of LCID, reformat type definitions in setlocale.h
Definition of LCID results in build problems on 32 bit Cygwin

Signed-off by: Corinna Vinschen <corinna@vinschen.de>
2016-08-15 10:56:58 +02:00
Corinna Vinschen 7156bf842e Add sys/_locale.h header and fix up headers
Signed-off by: Corinna Vinschen <corinna@vinschen.de>
2016-08-15 10:56:58 +02:00
Corinna Vinschen 542b970d4e Rename __get_locale_XXX to __get_XXX_locale to use unified naming scheme
Signed-off by: Corinna Vinschen <corinna@vinschen.de>
2016-08-15 10:56:58 +02:00
Corinna Vinschen fb4fb921c6 Move lconv into struct __locale_t and implement __localeconv_l
Based on FreeBSD, just don't export symbol yet, unless required.

Signed-off by: Corinna Vinschen <corinna@vinschen.de>
2016-08-15 10:56:58 +02:00