This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [ANNOUNCEMENT] TEST RELEASE: Cygwin 2.6.0-0.11


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]