summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* 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.
* Add release message for commit c02ac89Corinna Vinschen2016-08-172-0/+8
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Add -i/--input option to locale(1)Corinna Vinschen2016-08-172-14/+34
| | | | | | | | | | | | | | | | | | | The default UI language returned by GetUserDefaultUILanguage does not necessarily reflect what the user really wants. E. g., the system could be en_US, but the desired language is en_CA, without having a CA langpack installed. Changing the settings under "Languages" and changing the keyboard layout is only affecting the so-called "Input language", while what's returned by GetUserDefaultUILanguage is the "Display language". Changing the latter requires installing MUI langpacks. Thus, we introduce a way to fetch the "Input language" using the -i or --input option. Also clean up documentation of locale(1). Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* 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>
* Rephrase release messageCorinna Vinschen2016-08-161-1/+1
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Fix typo in release messageCorinna Vinschen2016-08-161-1/+0
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Add release text for Cygwin 2.6.0Corinna Vinschen2016-08-153-29/+118
| | | | | | Move release/2.5.3 to release/2.6.0. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Implement strto[dflu]_l/wcsto[dflu]_lCorinna Vinschen2016-08-1527-812/+1035
| | | | | | | | | | 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>
* Make sure alloca is called even when optimizing, fully init _REENTCorinna Vinschen2016-08-151-3/+7
| | | | 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>
* Fix _REENT_INIT initialization of _localeCorinna Vinschen2016-08-151-3/+2
| | | | | | | 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>
* Fix typo in isalnum_l docCorinna Vinschen2016-08-151-1/+1
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Get rid of LCID, reformat type definitions in setlocale.hCorinna Vinschen2016-08-151-90/+94
| | | | | | Definition of LCID results in build problems on 32 bit Cygwin Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* Add sys/_locale.h header and fix up headersCorinna Vinschen2016-08-159-22/+47
| | | | Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* Bump CygwinAPI minor.Corinna Vinschen2016-08-151-3/+5
| | | | Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* Implement strfmon_lCorinna Vinschen2016-08-153-36/+64
| | | | | | Use latest code from FreeBSD Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* Rename __get_locale_XXX to __get_XXX_locale to use unified naming schemeCorinna Vinschen2016-08-153-19/+43
| | | | Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* Move lconv into struct __locale_t and implement __localeconv_lCorinna Vinschen2016-08-153-46/+63
| | | | | | Based on FreeBSD, just don't export symbol yet, unless required. Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* Implement per-locale string functionsCorinna Vinschen2016-08-1527-118/+816
| | | | | | | | | | | | strcasecmp_l, strcoll_l, strncasecmp_l, strxfrm_l, wcscasecmp_l, wcscoll_l, wcstrncasecmp_l, wcstrxfrm_l, strftime_l. Add missing CHEWOUT_FILES from previous patch. TODO: strfmon_l. Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* Implement all per-locale ctype functionsCorinna Vinschen2016-08-1543-70/+2021
| | | | Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* Move localeconv, duplocale, freelocale, newlocale, uselocale into separate filesCorinna Vinschen2016-08-1511-334/+425
| | | | Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* include/locale.h: Fix POSIX guardsCorinna Vinschen2016-08-151-2/+10
| | | | Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* Remove non-working __part_load_locale function and any related codeCorinna Vinschen2016-08-1511-459/+9
| | | | | | Add TODO markers in case somebody wants to pick this up again Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* posix.xml: Note duplocale, freelocale, newlocale, uselocale as implementedCorinna Vinschen2016-08-151-4/+4
| | | | Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* Fix memory handling in functions called from loadlocaleCorinna Vinschen2016-08-157-43/+96
| | | | Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* Implement newlocale, freelocale, duplocale, uselocaleCorinna Vinschen2016-08-154-8/+273
| | | | | | | | Add global const __C_locale for reference purposes. Bump Cygwin API minor number and DLL major version number to 2.6.0. Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* Use __get_global_locale function where appropriateCorinna Vinschen2016-08-151-18/+22
| | | | Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* Rearrange struct __locale_t pointers into an arrayCorinna Vinschen2016-08-158-103/+91
| | | | | | | This allows looping through the structs and buffers. Also rearrange definitions to follow order of LC_xxx values. Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* Change loadlocale to fill a __locale_t given as parameterCorinna Vinschen2016-08-1512-88/+87
| | | | | | | | | | | | Don't use global variables. This allows to call loadlocale from the yet to be created newlocale(). Rename _thr_locale_t to __locale_t (these locales are not restricted to threads so the name is misleading). Along these lines, fix _set_ctype to take a __locale_t as parameter. Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* Consolidate wctomb/mbtowc calls for POSIX-1.2008Corinna Vinschen2016-08-1531-356/+942
| | | | | | | | | | | | | | | | | | | | | - Remove charset parameter from low level __foo_wctomb/__foo_mbtowc calls. - Instead, create array of function for ISO and Windows codepages to point to function which does not require to evaluate the charset string on each call. Create matching helper functions. I.e., __iso_wctomb, __iso_mbtowc, __cp_wctomb and __cp_mbtowc are functions returning the right function pointer now. - Create __WCTOMB/__MBTOWC macros utilizing per-reent locale and replace calls to __wctomb/__mbtowc with calls to __WCTOMB/__MBTOWC. - Drop global __wctomb/__mbtowc vars. - Utilize aforementioned changes in Cygwin to get rid of charset in other, calling functions and simplify the code. - In Cygwin restrict global cygheap locale info to the job performed by internal_setlocale. Use UTF-8 instead of ASCII on the fly in internal conversion functions. - In Cygwin dll_entry, make sure to initialize a TLS area with a NULL _REENT->_locale pointer. Add comment to explain why. Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* POSIX-1.2008 per-thread locales, groundwork part 2Corinna Vinschen2016-08-1520-477/+272
| | | | | | | | | Move all locale category structure definitions into setlocale.h and remove other headers in locale subdir. Create inline accessor functions for current category struct pointers and use throughout. Use pointers to "C" locale category structs by default in __global_locale. Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* POSIX-1.2008 per-thread locales, groundwork part 1Corinna Vinschen2016-08-1531-484/+610
| | | | | | | | | | | | | | | | Introduce first cut of struct _thr_locale_t used for the locale_t definition. Introduce global instance called __global_locale used by default. Introduce internal inline functions __get_global_locale, __get_locale_r, __get_current_locale. Remove usage of global variables in favor of accessor functions pointing to __global_locale for now. Include all local headers in locale subdir from setlocale.h to get single include for internal locale access. Introduce __CTYPE_PTR macro to replace direct access to __ctype_ptr__ and use throughout in isxxx functions. Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* Do not include wctype.h in wchar.h with _GNU_SOURCEYaakov Selkowitz2016-08-121-1/+1
| | | | | | | _GNU_SOURCE generally enables all features, but in this case the POSIX requirement to #include <wctype.h> for these is preferred. Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* Define va_list in stdio.h and wchar.hYaakov Selkowitz2016-08-122-3/+31
| | | | | | | | | This typedef, along with that of FILE in wchar.h, were XSI prior to inclusion in POSIX.1-2008. Fixes: https://sourceware.org/ml/newlib/2016/msg00640.html Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* Remove unused import/rexec.c accidentally imported by commit b6e90a06Corinna Vinschen2016-08-121-391/+0
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Include wctype.h in wchar.h as an XSI extensionYaakov Selkowitz2016-08-111-0/+4
| | | | | | | | | However, note that this inclusion is obsolescent in SUSv4 and therefore may be removed in the next revision. http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/wchar.h.html Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* Feature test macros overhaul: wctype.hYaakov Selkowitz2016-08-111-0/+2
| | | | | | iswblank was first introduced in C99. Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* kill(pid, sig) before waitpid() returns -1 for sig != 0Erik Bray2016-08-111-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a followup to a report back in 2011 about essentially the same issue: https://cygwin.com/ml/cygwin/2011-04/msg00031.html The same test program in that report demonstrates the issue, but with kill sending any non-zero signal. To reiterate, the problem here is POSIX compliance with respect to sending signals to zombie processes. http://pubs.opengroup.org/onlinepubs/9699919799/functions/kill.html claims: Existing implementations vary on the result of a kill() with pid indicating an inactive process (a terminated process that has not been waited for by its parent). Some indicate success on such a call (subject to permission checking), while others give an error of [ESRCH]. Since the definition of process lifetime in this volume of POSIX.1-2008 covers inactive processes, the [ESRCH] error as described is inappropriate in this case. In particular, this means that an application cannot have a parent process check for termination of a particular child with kill(). (Usually this is done with the null signal; this can be done reliably with waitpid().) In response to the originally issue, this was fixed *specifically* for the case of kill(pid, 0). But my reading of the above is that kill() should return 0 in this case regardless of the signal (modulo permissions, etc.). On Linux, for example, when calling kill with pid of a zombie process the kernel will happily deliver the signal to the relevant task_struct; it will just never be acted on since the task will never run again. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>