Mail Archives: cygwin/2016/08/24/13:30:55
On 2016-08-24 02:22, Corinna Vinschen wrote:
> On Aug 23 23:36, Brian Inglis wrote:
>> On 2016-08-23 22:15, Brian Inglis wrote:
>>> On 2016-08-23 10:11, Corinna Vinschen wrote:
>>>> On Aug 23 07:27, Brian Inglis wrote:
>>>>> Compared lists of locale_t headers and functions for POSIX, Cygwin,
>>>>> and glibc, attached below for comparison, and found:
>>>>> * missed string.h(strerror_l) on my first check;
>>>>> not sure if you can implement that easily on Windows?
>>>>> * GNU also supports wchar.h(wcsftime_l) and time.h(strptime_l);
>>>>> * GNU also defines string.h(str[n]casecmp_l) functions as an extension,
>>>>> as well as in POSIX specified strings.h.
>>>> I just applied a couple of patches to add the missing strerror_l,
>>>> strptime_l and wcsftime_l. I also added the missing str[n]casecmp_l
>>>> prototypes to strings.h. I'll create a new test release in a bit.
>>> GNU duplicates the POSIX strings.h(str[n]casecmp_l) in string.h also.
>> i.e. str[n]casecmp_l should be defined under #if __POSIX_VISIBLE >= 200809
>> but not defined under #ifdef __GNU_VISIBLE in string*s*.h,
>> and defined under #ifdef __GNU_VISIBLE but not defined under
>> #if __POSIX_VISIBLE >= 200809 in *string*.h;
>> strerror_l should be under #if __POSIX_VISIBLE >= 200809 in *string*.h,
>> or its #includes.
> They were already declared in string,h.
Sorry for the poor explanation, but what I was failing to say clearly
was that:
* there does not appear to be any strerror_l declaration in string.h
or any header searching using grep or pickaxe on:
https://sourceware.org/git/?p=newlib-cygwin.git&a=search&h=HEAD&st=grep&s=strerror_l
and that str[n]casecmp_l conditionals __GNU_VISIBLE and __POSIX_VISIBLE >= 200809
appear to be flipped around between string.h and strings.h declarations in:
https://sourceware.org/git/?p=newlib-cygwin.git;a=blob;f=newlib/libc/include/string.h
#if __POSIX_VISIBLE >= 200809
extern int strcasecmp_l (const char *, const char *, locale_t);
extern int strncasecmp_l (const char *, const char *, size_t, locale_t);
extern int strcoll_l (const char *, const char *, locale_t);
extern size_t strxfrm_l (char *__restrict, const char *__restrict, size_t,
locale_t);
#endif
should probably be:
#if __POSIX_VISIBLE >= 200809
extern int strcoll_l (const char *, const char *, locale_t);
extern size_t strxfrm_l (char *__restrict, const char *__restrict, size_t,
locale_t);
#endif
#if __GNU_VISIBLE
extern int strcasecmp_l (const char *, const char *, locale_t);
extern int strncasecmp_l (const char *, const char *, size_t, locale_t);
#endif
and in:
https://sourceware.org/git/?p=newlib-cygwin.git;a=blob;f=newlib/libc/include/strings.h
#if __GNU_VISIBLE
extern int strcasecmp_l (const char *, const char *, locale_t);
extern int strncasecmp_l (const char *, const char *, size_t, locale_t);
#endif /* _GNU_VISIBLE */
should probably be:
#if __POSIX_VISIBLE >= 200809
extern int strcasecmp_l (const char *, const char *, locale_t);
extern int strncasecmp_l (const char *, const char *, size_t, locale_t);
#endif /* __POSIX_VISIBLE >= 200809 */
if I am reading the code and docs correctly.
--
Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
- Raw text -