summaryrefslogtreecommitdiffstats
path: root/newlib/libc
Commit message (Collapse)AuthorAgeFilesLines
...
* towupper: Eliminate dead codeCorinna Vinschen2016-10-221-3/+0
| | | | | | Fixes Coverity CID 59865 Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Fix a potential buffer overflow in wscanf familyCorinna Vinschen2016-10-221-6/+8
| | | | | | Fixes Coverity CID 60046 Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* get_alt_digits: Fix typo in allocationCorinna Vinschen2016-10-221-1/+1
| | | | | | | | adi->digit is an array of CHAR *, not of CHAR **. Fixes Coverity CID 60043 Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Actually return value from __cp_indexCorinna Vinschen2016-10-222-4/+1
| | | | | | | | Fixes Coverty CID 153470 Also drop redundant declaration of __cp_index. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Drop redundant checks for NULL input string in wctomb helper funcsCorinna Vinschen2016-10-221-6/+0
| | | | | | Fixes Coverity CIDs 153465 and 153466 Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Fix check for empty locale string in newlocaleCorinna Vinschen2016-10-221-2/+5
| | | | | | | | | | | | | | | The original test is broken. It tests for a NULL locale which isn't just wrong, it simply can't occur at this point due to an earlier check for a NULL locale string. Thus, the locale info for a category is never taken from the environment. Fixes Coverty CID 153467. Also, add comment. Also, add some parens for readability. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Add _PC_CASE_INSENSITIVE to [f]pathconfKen Brown2016-10-211-0/+1
| | | | | | | | 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>
* Make ctype_.c and ctype_.h agree on _ctype_b typeThomas Preud'homme2016-10-171-0/+4
| | | | | | | | _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.
* Fix typo in strerror doccygwin-2_6_0-releaseCorinna Vinschen2016-08-311-1/+1
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Fix off_t typedef on Cygwin64Yaakov Selkowitz2016-08-291-1/+1
| | | | | | | | | | While both long and long long are 64-bits on x86_64, they are distinct types, and long was used prior to commit 477463a2011ba81907a753df9ce7a71b6563db54. 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>
* Change return type from locale_t to struct __locale_t * as wellCorinna Vinschen2016-08-251-3/+4
| | | | | | Complements commit 14228e2. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Drop duplicate _ctype_ declaration from ctype_.hCorinna Vinschen2016-08-252-2/+2
| | | | | | It's already defined in ctype.h. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Drop global __ctype_ptr__ entirely in favor of using locale_t::ctype_ptrCorinna Vinschen2016-08-253-37/+33
| | | | | | | | | | 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>
* Use struct __locale_t * for reentrent locale functionsCorinna Vinschen2016-08-251-4/+4
| | | | | | | This fixes a build problem since locale_t is only defined if __POSIX_VISIBLE >= 200809. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Add strerror_l prototype, change str[n]casecmp_l feature testsBrian Inglis2016-08-252-10/+15
| | | | | strerror_l prototype was missing. str[n]casecmp_l feature tests in string.h vs. strings.h were transposed.
* Avoid crash when calling __localeconv_l with __C_localeCorinna Vinschen2016-08-241-0/+3
| | | | | | | | | __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>
* Use #if __GNU_VISIBLE, not #ifdef __GNU_VISIBLECorinna Vinschen2016-08-241-2/+2
| | | | | | sys/features.h always defines __GNU_VISIBLE, either as 0 or 1. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* strerror_l: Fix copy-and-paste typoEric Blake2016-08-231-1/+1
| | | | Signed-off-by: Eric Blake <eblake@redhat.com>
* Mention strerror_l in libc/string/strings.texCorinna Vinschen2016-08-231-1/+1
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Add __get_C_locale inline function and fix new locale code for !_MB_CAPABLE ↵Corinna Vinschen2016-08-235-6/+36
| | | | | | | | | | 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>
* Implement GNU extension strptime_lCorinna Vinschen2016-08-232-39/+46
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Implement GNU extension wcsftime_lCorinna Vinschen2016-08-232-3/+6
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Implement missing POSIX-1.2008 function strerror_lCorinna Vinschen2016-08-231-1/+18
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Add missing declarations of str{n}casecmp_l to strings.h.Corinna Vinschen2016-08-231-0/+5
| | | | | | Per glibc, both funcs are defined as GNU visible in strings.h. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Fix stray closing braceCorinna Vinschen2016-08-231-1/+0
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Add/change a few #ifdef comments in locale code for clearnessCorinna Vinschen2016-08-234-13/+13
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Remove erroneous POSIX guards for reentrant locale functionsCorinna Vinschen2016-08-231-2/+0
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Reference __global_locale only via __get_global_locale.Corinna Vinschen2016-08-231-3/+3
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Remove extern declaration of __locale_cjk_lang in string/local.hCorinna Vinschen2016-08-211-4/+0
| | | | | | | 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>
* Implement missing POSIX function nl_langinfo_lCorinna Vinschen2016-08-202-93/+58
| | | | | | | | | | | | 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>
* Introduce __current_locale_charset/__locale_charsetCorinna Vinschen2016-08-203-5/+15
| | | | | | | | | 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>
* Fix html buildThomas Preud'homme2016-08-191-67/+34
|
* Revert "Fix __getreent function for Cygwin"Corinna Vinschen2016-08-181-6/+1
| | | | | | | | | | | 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>
* Fix __getreent function for CygwinCorinna Vinschen2016-08-181-1/+6
| | | | | | | | | | | | | | | | | | 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>
* Fix pdf build failure wrt documentation of is*_l functionsThomas Preudhomme2016-08-174-104/+5
| | | | | | | | | | | make pdf on arm-none-eabi targets fails to build after the reorganization in baf0c9fcb56e5cf8f54357bf8d8646b51b236886 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.
* Constify __locale_ctype_ptr and __locale_ctype_ptr_lCorinna Vinschen2016-08-172-8/+5
| | | | | | Remove _MB_CAPABLE-only _CONST in ctype.h Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Actually return pointers in locale categroy accessor functionsCorinna Vinschen2016-08-161-8/+8
| | | | | | Commit 6e7ce50 was broken. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Always fall back to __ctype_ptr__ in isXXX_l functions.Corinna Vinschen2016-08-161-1/+2
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Avoid "implicit declaration of function ‘strtold_l’" in wcstold.cCorinna Vinschen2016-08-161-0/+1
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Use era_info_t and alt_digits_t on _WANT_C99_TIME_FORMATS targets onlyCorinna Vinschen2016-08-161-2/+12
| | | | | | | 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>
* Expose locale category accessor functions to non-__HAVE_LOCALE_INFO__ targets.Corinna Vinschen2016-08-161-1/+49
| | | | | | | | 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>
* __localeconv_l: Always define locale variable lconvCorinna Vinschen2016-08-161-1/+1
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Don't use locale_t in internal headerCorinna Vinschen2016-08-162-2/+2
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Implement strto[dflu]_l/wcsto[dflu]_lCorinna Vinschen2016-08-1524-807/+999
| | | | | | | | | | 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>
* Add documentation for duplocale, freelocale, newlocale, and uselocale.Corinna Vinschen2016-08-156-2/+209
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Fold documentation of is*_l funcs into documentation of non-l is* funcsCorinna Vinschen2016-08-1568-1209/+514
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* setlocale/localeconv are *not* POSIX-1.2008Corinna Vinschen2016-08-151-3/+3
| | | | Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* setlocale.h: Fix current locale handling for !__HAVE_LOCALE_INFO__ targetsCorinna Vinschen2016-08-153-21/+14
| | | | Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* __loadlocale: Set missing val when evaluating CP874Corinna Vinschen2016-08-151-0/+1
| | | | Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* Fix multiple thinkos in newlocaleCorinna Vinschen2016-08-151-54/+59
| | | | | | | | | | | | | - 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>