Implement per-locale string functions
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>
This commit is contained in:
parent
8493c16316
commit
c1b7d9d93d
@ -98,38 +98,71 @@ include $(srcdir)/../../Makefile.shared
|
|||||||
|
|
||||||
CHEWOUT_FILES= \
|
CHEWOUT_FILES= \
|
||||||
isalnum.def \
|
isalnum.def \
|
||||||
|
isalnum_l.def \
|
||||||
isalpha.def \
|
isalpha.def \
|
||||||
|
isalpha_l.def \
|
||||||
isascii.def \
|
isascii.def \
|
||||||
|
isascii_l.def \
|
||||||
isblank.def \
|
isblank.def \
|
||||||
|
isblank_l.def \
|
||||||
iscntrl.def \
|
iscntrl.def \
|
||||||
|
iscntrl_l.def \
|
||||||
isdigit.def \
|
isdigit.def \
|
||||||
|
isdigit_l.def \
|
||||||
islower.def \
|
islower.def \
|
||||||
|
islower_l.def \
|
||||||
isprint.def \
|
isprint.def \
|
||||||
|
isprint_l.def \
|
||||||
ispunct.def \
|
ispunct.def \
|
||||||
|
ispunct_l.def \
|
||||||
isspace.def \
|
isspace.def \
|
||||||
|
isspace_l.def \
|
||||||
isupper.def \
|
isupper.def \
|
||||||
|
isupper_l.def \
|
||||||
iswalnum.def \
|
iswalnum.def \
|
||||||
|
iswalnum_l.def \
|
||||||
iswalpha.def \
|
iswalpha.def \
|
||||||
|
iswalpha_l.def \
|
||||||
iswblank.def \
|
iswblank.def \
|
||||||
|
iswblank_l.def \
|
||||||
iswcntrl.def \
|
iswcntrl.def \
|
||||||
|
iswcntrl_l.def \
|
||||||
iswctype.def \
|
iswctype.def \
|
||||||
|
iswctype_l.def \
|
||||||
iswdigit.def \
|
iswdigit.def \
|
||||||
|
iswdigit_l.def \
|
||||||
iswgraph.def \
|
iswgraph.def \
|
||||||
|
iswgraph_l.def \
|
||||||
iswlower.def \
|
iswlower.def \
|
||||||
|
iswlower_l.def \
|
||||||
iswprint.def \
|
iswprint.def \
|
||||||
|
iswprint_l.def \
|
||||||
iswpunct.def \
|
iswpunct.def \
|
||||||
|
iswpunct_l.def \
|
||||||
iswspace.def \
|
iswspace.def \
|
||||||
|
iswspace_l.def \
|
||||||
iswupper.def \
|
iswupper.def \
|
||||||
|
iswupper_l.def \
|
||||||
iswxdigit.def \
|
iswxdigit.def \
|
||||||
|
iswxdigit_l.def \
|
||||||
isxdigit.def \
|
isxdigit.def \
|
||||||
|
isxdigit_l.def \
|
||||||
toascii.def \
|
toascii.def \
|
||||||
|
toascii_l.def \
|
||||||
tolower.def \
|
tolower.def \
|
||||||
|
tolower_l.def \
|
||||||
toupper.def \
|
toupper.def \
|
||||||
|
toupper_l.def \
|
||||||
towctrans.def \
|
towctrans.def \
|
||||||
|
towctrans_l.def \
|
||||||
towlower.def \
|
towlower.def \
|
||||||
|
towlower_l.def \
|
||||||
towupper.def \
|
towupper.def \
|
||||||
|
towupper_l.def \
|
||||||
wctrans.def \
|
wctrans.def \
|
||||||
wctype.def
|
wctrans_l.def \
|
||||||
|
wctype.def \
|
||||||
|
wctype_l.def
|
||||||
|
|
||||||
CHAPTERS = ctype.tex
|
CHAPTERS = ctype.tex
|
||||||
|
|
||||||
|
@ -426,38 +426,71 @@ DOCBOOK_CHAPTERS = $(CHAPTERS:.tex=.xml)
|
|||||||
CLEANFILES = $(CHEWOUT_FILES) $(CHEWOUT_FILES:.def=.ref) $(DOCBOOK_OUT_FILES)
|
CLEANFILES = $(CHEWOUT_FILES) $(CHEWOUT_FILES:.def=.ref) $(DOCBOOK_OUT_FILES)
|
||||||
CHEWOUT_FILES = \
|
CHEWOUT_FILES = \
|
||||||
isalnum.def \
|
isalnum.def \
|
||||||
|
isalnum_l.def \
|
||||||
isalpha.def \
|
isalpha.def \
|
||||||
|
isalpha_l.def \
|
||||||
isascii.def \
|
isascii.def \
|
||||||
|
isascii_l.def \
|
||||||
isblank.def \
|
isblank.def \
|
||||||
|
isblank_l.def \
|
||||||
iscntrl.def \
|
iscntrl.def \
|
||||||
|
iscntrl_l.def \
|
||||||
isdigit.def \
|
isdigit.def \
|
||||||
|
isdigit_l.def \
|
||||||
islower.def \
|
islower.def \
|
||||||
|
islower_l.def \
|
||||||
isprint.def \
|
isprint.def \
|
||||||
|
isprint_l.def \
|
||||||
ispunct.def \
|
ispunct.def \
|
||||||
|
ispunct_l.def \
|
||||||
isspace.def \
|
isspace.def \
|
||||||
|
isspace_l.def \
|
||||||
isupper.def \
|
isupper.def \
|
||||||
|
isupper_l.def \
|
||||||
iswalnum.def \
|
iswalnum.def \
|
||||||
|
iswalnum_l.def \
|
||||||
iswalpha.def \
|
iswalpha.def \
|
||||||
|
iswalpha_l.def \
|
||||||
iswblank.def \
|
iswblank.def \
|
||||||
|
iswblank_l.def \
|
||||||
iswcntrl.def \
|
iswcntrl.def \
|
||||||
|
iswcntrl_l.def \
|
||||||
iswctype.def \
|
iswctype.def \
|
||||||
|
iswctype_l.def \
|
||||||
iswdigit.def \
|
iswdigit.def \
|
||||||
|
iswdigit_l.def \
|
||||||
iswgraph.def \
|
iswgraph.def \
|
||||||
|
iswgraph_l.def \
|
||||||
iswlower.def \
|
iswlower.def \
|
||||||
|
iswlower_l.def \
|
||||||
iswprint.def \
|
iswprint.def \
|
||||||
|
iswprint_l.def \
|
||||||
iswpunct.def \
|
iswpunct.def \
|
||||||
|
iswpunct_l.def \
|
||||||
iswspace.def \
|
iswspace.def \
|
||||||
|
iswspace_l.def \
|
||||||
iswupper.def \
|
iswupper.def \
|
||||||
|
iswupper_l.def \
|
||||||
iswxdigit.def \
|
iswxdigit.def \
|
||||||
|
iswxdigit_l.def \
|
||||||
isxdigit.def \
|
isxdigit.def \
|
||||||
|
isxdigit_l.def \
|
||||||
toascii.def \
|
toascii.def \
|
||||||
|
toascii_l.def \
|
||||||
tolower.def \
|
tolower.def \
|
||||||
|
tolower_l.def \
|
||||||
toupper.def \
|
toupper.def \
|
||||||
|
toupper_l.def \
|
||||||
towctrans.def \
|
towctrans.def \
|
||||||
|
towctrans_l.def \
|
||||||
towlower.def \
|
towlower.def \
|
||||||
|
towlower_l.def \
|
||||||
towupper.def \
|
towupper.def \
|
||||||
|
towupper_l.def \
|
||||||
wctrans.def \
|
wctrans.def \
|
||||||
wctype.def
|
wctrans_l.def \
|
||||||
|
wctype.def \
|
||||||
|
wctype_l.def
|
||||||
|
|
||||||
CHAPTERS = ctype.tex
|
CHAPTERS = ctype.tex
|
||||||
all: all-am
|
all: all-am
|
||||||
|
@ -16,6 +16,11 @@
|
|||||||
#define __need_NULL
|
#define __need_NULL
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
|
||||||
|
#if __POSIX_VISIBLE >= 200809 || defined (_COMPILING_NEWLIB)
|
||||||
|
struct __locale_t;
|
||||||
|
typedef struct __locale_t *locale_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
_BEGIN_STD_C
|
_BEGIN_STD_C
|
||||||
|
|
||||||
_PTR _EXFUN(memchr,(const _PTR, int, size_t));
|
_PTR _EXFUN(memchr,(const _PTR, int, size_t));
|
||||||
@ -43,6 +48,14 @@ char *_EXFUN(strtok,(char *__restrict, const char *__restrict));
|
|||||||
#endif
|
#endif
|
||||||
size_t _EXFUN(strxfrm,(char *__restrict, const char *__restrict, size_t));
|
size_t _EXFUN(strxfrm,(char *__restrict, const char *__restrict, size_t));
|
||||||
|
|
||||||
|
#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
|
||||||
|
|
||||||
#if __MISC_VISIBLE || __POSIX_VISIBLE
|
#if __MISC_VISIBLE || __POSIX_VISIBLE
|
||||||
char *_EXFUN(strtok_r,(char *__restrict, const char *__restrict, char **__restrict));
|
char *_EXFUN(strtok_r,(char *__restrict, const char *__restrict, char **__restrict));
|
||||||
#endif
|
#endif
|
||||||
|
@ -63,6 +63,11 @@ typedef __gnuc_va_list va_list;
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if __POSIX_VISIBLE >= 200809 || defined (_COMPILING_NEWLIB)
|
||||||
|
struct __locale_t;
|
||||||
|
typedef struct __locale_t *locale_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
_BEGIN_STD_C
|
_BEGIN_STD_C
|
||||||
|
|
||||||
#if __POSIX_VISIBLE >= 200809 || _XSI_VISIBLE
|
#if __POSIX_VISIBLE >= 200809 || _XSI_VISIBLE
|
||||||
@ -162,6 +167,14 @@ int _EXFUN(wcswidth, (const wchar_t *, size_t));
|
|||||||
#endif
|
#endif
|
||||||
size_t _EXFUN(wcsxfrm, (wchar_t *__restrict, const wchar_t *__restrict,
|
size_t _EXFUN(wcsxfrm, (wchar_t *__restrict, const wchar_t *__restrict,
|
||||||
size_t));
|
size_t));
|
||||||
|
#if __POSIX_VISIBLE >= 200809
|
||||||
|
extern int wcscasecmp_l (const wchar_t *, const wchar_t *, locale_t);
|
||||||
|
extern int wcsncasecmp_l (const wchar_t *, const wchar_t *, size_t, locale_t);
|
||||||
|
extern int wcscoll_l (const wchar_t *, const wchar_t *, locale_t);
|
||||||
|
extern size_t wcsxfrm_l (wchar_t *__restrict, const wchar_t *__restrict, size_t,
|
||||||
|
locale_t);
|
||||||
|
#endif
|
||||||
|
|
||||||
#if __XSI_VISIBLE
|
#if __XSI_VISIBLE
|
||||||
int _EXFUN(wcwidth, (const wchar_t));
|
int _EXFUN(wcwidth, (const wchar_t));
|
||||||
#endif
|
#endif
|
||||||
|
@ -220,15 +220,13 @@ __get_current_locale ()
|
|||||||
return _REENT->_locale ?: &__global_locale;
|
return _REENT->_locale ?: &__global_locale;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define __get_locale_ctype(__l) \
|
|
||||||
((const struct lc_ctype_T *) (__l)->lc_cat[LC_CTYPE].ptr)
|
|
||||||
#ifdef __HAVE_LOCALE_INFO__
|
|
||||||
#define __locale_mb_cur_max_l(__l) (__get_locale_ctype (__l)->mb_cur_max)
|
|
||||||
#else
|
|
||||||
#define __locale_mb_cur_max_l(__l) ((__l)->mb_cur_max)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __CYGWIN__
|
#ifdef __CYGWIN__
|
||||||
|
_ELIDABLE_INLINE const struct lc_collate_T *
|
||||||
|
__get_locale_collate (struct __locale_t *locale)
|
||||||
|
{
|
||||||
|
return (const struct lc_collate_T *) locale->lc_cat[LC_COLLATE].ptr;
|
||||||
|
}
|
||||||
|
|
||||||
_ELIDABLE_INLINE const struct lc_collate_T *
|
_ELIDABLE_INLINE const struct lc_collate_T *
|
||||||
__get_current_collate_locale (void)
|
__get_current_collate_locale (void)
|
||||||
{
|
{
|
||||||
@ -236,6 +234,22 @@ __get_current_collate_locale (void)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
_ELIDABLE_INLINE const struct lc_ctype_T *
|
||||||
|
__get_locale_ctype (struct __locale_t *locale)
|
||||||
|
{
|
||||||
|
return (const struct lc_ctype_T *) (locale)->lc_cat[LC_CTYPE].ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
_ELIDABLE_INLINE int
|
||||||
|
__locale_mb_cur_max_l (struct __locale_t *locale)
|
||||||
|
{
|
||||||
|
#ifdef __HAVE_LOCALE_INFO__
|
||||||
|
return __get_locale_ctype (locale)->mb_cur_max[0];
|
||||||
|
#else
|
||||||
|
return locale->mb_cur_max[0];
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
_ELIDABLE_INLINE const struct lc_ctype_T *
|
_ELIDABLE_INLINE const struct lc_ctype_T *
|
||||||
__get_current_ctype_locale (void)
|
__get_current_ctype_locale (void)
|
||||||
{
|
{
|
||||||
@ -260,6 +274,12 @@ __get_current_time_locale (void)
|
|||||||
return (const struct lc_time_T *) __get_current_locale ()->lc_cat[LC_TIME].ptr;
|
return (const struct lc_time_T *) __get_current_locale ()->lc_cat[LC_TIME].ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_ELIDABLE_INLINE const struct lc_ctype_T *
|
||||||
|
__get_locale_time (struct __locale_t *locale)
|
||||||
|
{
|
||||||
|
return (const struct lc_time_T *) (locale)->lc_cat[LC_TIME].ptr;
|
||||||
|
}
|
||||||
|
|
||||||
_ELIDABLE_INLINE const struct lc_messages_T *
|
_ELIDABLE_INLINE const struct lc_messages_T *
|
||||||
__get_current_messages_locale (void)
|
__get_current_messages_locale (void)
|
||||||
{
|
{
|
||||||
|
@ -109,8 +109,16 @@ ELIX_4_SOURCES = \
|
|||||||
memmem.c \
|
memmem.c \
|
||||||
memrchr.c \
|
memrchr.c \
|
||||||
rawmemchr.c \
|
rawmemchr.c \
|
||||||
|
strcasecmp_l.c \
|
||||||
|
strcoll_l.c \
|
||||||
|
strncasecmp_l.c \
|
||||||
|
strxfrm_l.c \
|
||||||
wcscasecmp.c \
|
wcscasecmp.c \
|
||||||
wcsncasecmp.c
|
wcscasecmp_l.c \
|
||||||
|
wcscoll_l.c \
|
||||||
|
wcsncasecmp.c \
|
||||||
|
wcsncasecmp_l.c \
|
||||||
|
wcsxfrm_l.c
|
||||||
endif !ELIX_LEVEL_3
|
endif !ELIX_LEVEL_3
|
||||||
endif !ELIX_LEVEL_2
|
endif !ELIX_LEVEL_2
|
||||||
endif !ELIX_LEVEL_1
|
endif !ELIX_LEVEL_1
|
||||||
@ -146,6 +154,8 @@ wcsncmp.def wcsncpy.def wcsnlen.def wcspbrk.def \
|
|||||||
wcsrchr.def wcsspn.def wcsstr.def wcstok.def \
|
wcsrchr.def wcsspn.def wcsstr.def wcstok.def \
|
||||||
wcswidth.def wcsxfrm.def wcwidth.def wmemchr.def \
|
wcswidth.def wcsxfrm.def wcwidth.def wmemchr.def \
|
||||||
wmemcmp.def wmemcpy.def wmemmove.def wmemset.def \
|
wmemcmp.def wmemcpy.def wmemmove.def wmemset.def \
|
||||||
memmem.def memrchr.def rawmemchr.def strchrnul.def
|
memmem.def memrchr.def rawmemchr.def strchrnul.def \
|
||||||
|
strcasecmp_l.def strcoll_l.def strncasecmp_l.def strxfrm_l.def \
|
||||||
|
wcscasecmp_l.def wcscoll_l.def wcsncasecmp_l.def wcsxfrm_l.def
|
||||||
|
|
||||||
CHAPTERS = strings.tex wcstrings.tex
|
CHAPTERS = strings.tex wcstrings.tex
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
# Makefile.in generated by automake 1.11.6 from Makefile.am.
|
# Makefile.in generated by automake 1.12.2 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
# Copyright (C) 1994-2012 Free Software Foundation, Inc.
|
||||||
# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
|
|
||||||
# Foundation, Inc.
|
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
@ -54,15 +53,11 @@ POST_UNINSTALL = :
|
|||||||
build_triplet = @build@
|
build_triplet = @build@
|
||||||
host_triplet = @host@
|
host_triplet = @host@
|
||||||
DIST_COMMON = $(srcdir)/../../Makefile.shared $(srcdir)/Makefile.in \
|
DIST_COMMON = $(srcdir)/../../Makefile.shared $(srcdir)/Makefile.in \
|
||||||
$(srcdir)/Makefile.am
|
$(srcdir)/Makefile.am $(top_srcdir)/../../mkinstalldirs
|
||||||
subdir = string
|
subdir = string
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
am__aclocal_m4_deps = $(top_srcdir)/../../libtool.m4 \
|
am__aclocal_m4_deps = $(top_srcdir)/../acinclude.m4 \
|
||||||
$(top_srcdir)/../../ltoptions.m4 \
|
$(top_srcdir)/configure.in
|
||||||
$(top_srcdir)/../../ltsugar.m4 \
|
|
||||||
$(top_srcdir)/../../ltversion.m4 \
|
|
||||||
$(top_srcdir)/../../lt~obsolete.m4 \
|
|
||||||
$(top_srcdir)/../acinclude.m4 $(top_srcdir)/configure.in
|
|
||||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
$(ACLOCAL_M4)
|
$(ACLOCAL_M4)
|
||||||
mkinstalldirs = $(SHELL) $(top_srcdir)/../../mkinstalldirs
|
mkinstalldirs = $(SHELL) $(top_srcdir)/../../mkinstalldirs
|
||||||
@ -124,8 +119,16 @@ am__objects_1 = lib_a-bcopy.$(OBJEXT) lib_a-bzero.$(OBJEXT) \
|
|||||||
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ lib_a-memmem.$(OBJEXT) \
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ lib_a-memmem.$(OBJEXT) \
|
||||||
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ lib_a-memrchr.$(OBJEXT) \
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ lib_a-memrchr.$(OBJEXT) \
|
||||||
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ lib_a-rawmemchr.$(OBJEXT) \
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ lib_a-rawmemchr.$(OBJEXT) \
|
||||||
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ lib_a-strcasecmp_l.$(OBJEXT) \
|
||||||
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ lib_a-strcoll_l.$(OBJEXT) \
|
||||||
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ lib_a-strncasecmp_l.$(OBJEXT) \
|
||||||
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ lib_a-strxfrm_l.$(OBJEXT) \
|
||||||
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ lib_a-wcscasecmp.$(OBJEXT) \
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ lib_a-wcscasecmp.$(OBJEXT) \
|
||||||
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ lib_a-wcsncasecmp.$(OBJEXT)
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ lib_a-wcscasecmp_l.$(OBJEXT) \
|
||||||
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ lib_a-wcscoll_l.$(OBJEXT) \
|
||||||
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ lib_a-wcsncasecmp.$(OBJEXT) \
|
||||||
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ lib_a-wcsncasecmp_l.$(OBJEXT) \
|
||||||
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ lib_a-wcsxfrm_l.$(OBJEXT)
|
||||||
@USE_LIBTOOL_FALSE@am_lib_a_OBJECTS = $(am__objects_1) \
|
@USE_LIBTOOL_FALSE@am_lib_a_OBJECTS = $(am__objects_1) \
|
||||||
@USE_LIBTOOL_FALSE@ $(am__objects_2) $(am__objects_3)
|
@USE_LIBTOOL_FALSE@ $(am__objects_2) $(am__objects_3)
|
||||||
lib_a_OBJECTS = $(am_lib_a_OBJECTS)
|
lib_a_OBJECTS = $(am_lib_a_OBJECTS)
|
||||||
@ -153,8 +156,16 @@ am__objects_4 = bcopy.lo bzero.lo explicit_bzero.lo index.lo memchr.lo \
|
|||||||
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ memmem.lo \
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ memmem.lo \
|
||||||
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ memrchr.lo \
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ memrchr.lo \
|
||||||
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ rawmemchr.lo \
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ rawmemchr.lo \
|
||||||
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ strcasecmp_l.lo \
|
||||||
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ strcoll_l.lo \
|
||||||
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ strncasecmp_l.lo \
|
||||||
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ strxfrm_l.lo \
|
||||||
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ wcscasecmp.lo \
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ wcscasecmp.lo \
|
||||||
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ wcsncasecmp.lo
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ wcscasecmp_l.lo \
|
||||||
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ wcscoll_l.lo \
|
||||||
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ wcsncasecmp.lo \
|
||||||
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ wcsncasecmp_l.lo \
|
||||||
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ wcsxfrm_l.lo
|
||||||
@USE_LIBTOOL_TRUE@am_libstring_la_OBJECTS = $(am__objects_4) \
|
@USE_LIBTOOL_TRUE@am_libstring_la_OBJECTS = $(am__objects_4) \
|
||||||
@USE_LIBTOOL_TRUE@ $(am__objects_5) $(am__objects_6)
|
@USE_LIBTOOL_TRUE@ $(am__objects_5) $(am__objects_6)
|
||||||
libstring_la_OBJECTS = $(am_libstring_la_OBJECTS)
|
libstring_la_OBJECTS = $(am_libstring_la_OBJECTS)
|
||||||
@ -241,8 +252,10 @@ LIBTOOL = @LIBTOOL@
|
|||||||
LIPO = @LIPO@
|
LIPO = @LIPO@
|
||||||
LN_S = @LN_S@
|
LN_S = @LN_S@
|
||||||
LTLIBOBJS = @LTLIBOBJS@
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
|
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
|
||||||
MAINT = @MAINT@
|
MAINT = @MAINT@
|
||||||
MAKEINFO = @MAKEINFO@
|
MAKEINFO = @MAKEINFO@
|
||||||
|
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||||
MKDIR_P = @MKDIR_P@
|
MKDIR_P = @MKDIR_P@
|
||||||
NEWLIB_CFLAGS = @NEWLIB_CFLAGS@
|
NEWLIB_CFLAGS = @NEWLIB_CFLAGS@
|
||||||
NM = @NM@
|
NM = @NM@
|
||||||
@ -271,6 +284,7 @@ abs_builddir = @abs_builddir@
|
|||||||
abs_srcdir = @abs_srcdir@
|
abs_srcdir = @abs_srcdir@
|
||||||
abs_top_builddir = @abs_top_builddir@
|
abs_top_builddir = @abs_top_builddir@
|
||||||
abs_top_srcdir = @abs_top_srcdir@
|
abs_top_srcdir = @abs_top_srcdir@
|
||||||
|
ac_ct_AR = @ac_ct_AR@
|
||||||
ac_ct_CC = @ac_ct_CC@
|
ac_ct_CC = @ac_ct_CC@
|
||||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||||
aext = @aext@
|
aext = @aext@
|
||||||
@ -422,8 +436,16 @@ GENERAL_SOURCES = \
|
|||||||
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ memmem.c \
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ memmem.c \
|
||||||
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ memrchr.c \
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ memrchr.c \
|
||||||
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ rawmemchr.c \
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ rawmemchr.c \
|
||||||
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ strcasecmp_l.c \
|
||||||
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ strcoll_l.c \
|
||||||
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ strncasecmp_l.c \
|
||||||
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ strxfrm_l.c \
|
||||||
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ wcscasecmp.c \
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ wcscasecmp.c \
|
||||||
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ wcsncasecmp.c
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ wcscasecmp_l.c \
|
||||||
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ wcscoll_l.c \
|
||||||
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ wcsncasecmp.c \
|
||||||
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ wcsncasecmp_l.c \
|
||||||
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_FALSE@ wcsxfrm_l.c
|
||||||
|
|
||||||
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_TRUE@ELIX_4_SOURCES =
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_FALSE@@ELIX_LEVEL_3_TRUE@ELIX_4_SOURCES =
|
||||||
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_TRUE@ELIX_4_SOURCES =
|
@ELIX_LEVEL_1_FALSE@@ELIX_LEVEL_2_TRUE@ELIX_4_SOURCES =
|
||||||
@ -462,7 +484,9 @@ wcsncmp.def wcsncpy.def wcsnlen.def wcspbrk.def \
|
|||||||
wcsrchr.def wcsspn.def wcsstr.def wcstok.def \
|
wcsrchr.def wcsspn.def wcsstr.def wcstok.def \
|
||||||
wcswidth.def wcsxfrm.def wcwidth.def wmemchr.def \
|
wcswidth.def wcsxfrm.def wcwidth.def wmemchr.def \
|
||||||
wmemcmp.def wmemcpy.def wmemmove.def wmemset.def \
|
wmemcmp.def wmemcpy.def wmemmove.def wmemset.def \
|
||||||
memmem.def memrchr.def rawmemchr.def strchrnul.def
|
memmem.def memrchr.def rawmemchr.def strchrnul.def \
|
||||||
|
strcasecmp_l.def strcoll_l.def strncasecmp_l.def strxfrm_l.def \
|
||||||
|
wcscasecmp_l.def wcscoll_l.def wcsncasecmp_l.def wcsxfrm_l.def
|
||||||
|
|
||||||
CHAPTERS = strings.tex wcstrings.tex
|
CHAPTERS = strings.tex wcstrings.tex
|
||||||
all: all-am
|
all: all-am
|
||||||
@ -510,12 +534,14 @@ lib.a: $(lib_a_OBJECTS) $(lib_a_DEPENDENCIES) $(EXTRA_lib_a_DEPENDENCIES)
|
|||||||
|
|
||||||
clean-noinstLTLIBRARIES:
|
clean-noinstLTLIBRARIES:
|
||||||
-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
|
-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
|
||||||
@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
|
@list='$(noinst_LTLIBRARIES)'; \
|
||||||
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
|
locs=`for p in $$list; do echo $$p; done | \
|
||||||
test "$$dir" != "$$p" || dir=.; \
|
sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
|
||||||
echo "rm -f \"$${dir}/so_locations\""; \
|
sort -u`; \
|
||||||
rm -f "$${dir}/so_locations"; \
|
test -z "$$locs" || { \
|
||||||
done
|
echo rm -f $${locs}; \
|
||||||
|
rm -f $${locs}; \
|
||||||
|
}
|
||||||
libstring.la: $(libstring_la_OBJECTS) $(libstring_la_DEPENDENCIES) $(EXTRA_libstring_la_DEPENDENCIES)
|
libstring.la: $(libstring_la_OBJECTS) $(libstring_la_DEPENDENCIES) $(EXTRA_libstring_la_DEPENDENCIES)
|
||||||
$(libstring_la_LINK) $(am_libstring_la_rpath) $(libstring_la_OBJECTS) $(libstring_la_LIBADD) $(LIBS)
|
$(libstring_la_LINK) $(am_libstring_la_rpath) $(libstring_la_OBJECTS) $(libstring_la_LIBADD) $(LIBS)
|
||||||
|
|
||||||
@ -1056,18 +1082,66 @@ lib_a-rawmemchr.o: rawmemchr.c
|
|||||||
lib_a-rawmemchr.obj: rawmemchr.c
|
lib_a-rawmemchr.obj: rawmemchr.c
|
||||||
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-rawmemchr.obj `if test -f 'rawmemchr.c'; then $(CYGPATH_W) 'rawmemchr.c'; else $(CYGPATH_W) '$(srcdir)/rawmemchr.c'; fi`
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-rawmemchr.obj `if test -f 'rawmemchr.c'; then $(CYGPATH_W) 'rawmemchr.c'; else $(CYGPATH_W) '$(srcdir)/rawmemchr.c'; fi`
|
||||||
|
|
||||||
|
lib_a-strcasecmp_l.o: strcasecmp_l.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-strcasecmp_l.o `test -f 'strcasecmp_l.c' || echo '$(srcdir)/'`strcasecmp_l.c
|
||||||
|
|
||||||
|
lib_a-strcasecmp_l.obj: strcasecmp_l.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-strcasecmp_l.obj `if test -f 'strcasecmp_l.c'; then $(CYGPATH_W) 'strcasecmp_l.c'; else $(CYGPATH_W) '$(srcdir)/strcasecmp_l.c'; fi`
|
||||||
|
|
||||||
|
lib_a-strcoll_l.o: strcoll_l.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-strcoll_l.o `test -f 'strcoll_l.c' || echo '$(srcdir)/'`strcoll_l.c
|
||||||
|
|
||||||
|
lib_a-strcoll_l.obj: strcoll_l.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-strcoll_l.obj `if test -f 'strcoll_l.c'; then $(CYGPATH_W) 'strcoll_l.c'; else $(CYGPATH_W) '$(srcdir)/strcoll_l.c'; fi`
|
||||||
|
|
||||||
|
lib_a-strncasecmp_l.o: strncasecmp_l.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-strncasecmp_l.o `test -f 'strncasecmp_l.c' || echo '$(srcdir)/'`strncasecmp_l.c
|
||||||
|
|
||||||
|
lib_a-strncasecmp_l.obj: strncasecmp_l.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-strncasecmp_l.obj `if test -f 'strncasecmp_l.c'; then $(CYGPATH_W) 'strncasecmp_l.c'; else $(CYGPATH_W) '$(srcdir)/strncasecmp_l.c'; fi`
|
||||||
|
|
||||||
|
lib_a-strxfrm_l.o: strxfrm_l.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-strxfrm_l.o `test -f 'strxfrm_l.c' || echo '$(srcdir)/'`strxfrm_l.c
|
||||||
|
|
||||||
|
lib_a-strxfrm_l.obj: strxfrm_l.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-strxfrm_l.obj `if test -f 'strxfrm_l.c'; then $(CYGPATH_W) 'strxfrm_l.c'; else $(CYGPATH_W) '$(srcdir)/strxfrm_l.c'; fi`
|
||||||
|
|
||||||
lib_a-wcscasecmp.o: wcscasecmp.c
|
lib_a-wcscasecmp.o: wcscasecmp.c
|
||||||
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wcscasecmp.o `test -f 'wcscasecmp.c' || echo '$(srcdir)/'`wcscasecmp.c
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wcscasecmp.o `test -f 'wcscasecmp.c' || echo '$(srcdir)/'`wcscasecmp.c
|
||||||
|
|
||||||
lib_a-wcscasecmp.obj: wcscasecmp.c
|
lib_a-wcscasecmp.obj: wcscasecmp.c
|
||||||
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wcscasecmp.obj `if test -f 'wcscasecmp.c'; then $(CYGPATH_W) 'wcscasecmp.c'; else $(CYGPATH_W) '$(srcdir)/wcscasecmp.c'; fi`
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wcscasecmp.obj `if test -f 'wcscasecmp.c'; then $(CYGPATH_W) 'wcscasecmp.c'; else $(CYGPATH_W) '$(srcdir)/wcscasecmp.c'; fi`
|
||||||
|
|
||||||
|
lib_a-wcscasecmp_l.o: wcscasecmp_l.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wcscasecmp_l.o `test -f 'wcscasecmp_l.c' || echo '$(srcdir)/'`wcscasecmp_l.c
|
||||||
|
|
||||||
|
lib_a-wcscasecmp_l.obj: wcscasecmp_l.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wcscasecmp_l.obj `if test -f 'wcscasecmp_l.c'; then $(CYGPATH_W) 'wcscasecmp_l.c'; else $(CYGPATH_W) '$(srcdir)/wcscasecmp_l.c'; fi`
|
||||||
|
|
||||||
|
lib_a-wcscoll_l.o: wcscoll_l.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wcscoll_l.o `test -f 'wcscoll_l.c' || echo '$(srcdir)/'`wcscoll_l.c
|
||||||
|
|
||||||
|
lib_a-wcscoll_l.obj: wcscoll_l.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wcscoll_l.obj `if test -f 'wcscoll_l.c'; then $(CYGPATH_W) 'wcscoll_l.c'; else $(CYGPATH_W) '$(srcdir)/wcscoll_l.c'; fi`
|
||||||
|
|
||||||
lib_a-wcsncasecmp.o: wcsncasecmp.c
|
lib_a-wcsncasecmp.o: wcsncasecmp.c
|
||||||
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wcsncasecmp.o `test -f 'wcsncasecmp.c' || echo '$(srcdir)/'`wcsncasecmp.c
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wcsncasecmp.o `test -f 'wcsncasecmp.c' || echo '$(srcdir)/'`wcsncasecmp.c
|
||||||
|
|
||||||
lib_a-wcsncasecmp.obj: wcsncasecmp.c
|
lib_a-wcsncasecmp.obj: wcsncasecmp.c
|
||||||
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wcsncasecmp.obj `if test -f 'wcsncasecmp.c'; then $(CYGPATH_W) 'wcsncasecmp.c'; else $(CYGPATH_W) '$(srcdir)/wcsncasecmp.c'; fi`
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wcsncasecmp.obj `if test -f 'wcsncasecmp.c'; then $(CYGPATH_W) 'wcsncasecmp.c'; else $(CYGPATH_W) '$(srcdir)/wcsncasecmp.c'; fi`
|
||||||
|
|
||||||
|
lib_a-wcsncasecmp_l.o: wcsncasecmp_l.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wcsncasecmp_l.o `test -f 'wcsncasecmp_l.c' || echo '$(srcdir)/'`wcsncasecmp_l.c
|
||||||
|
|
||||||
|
lib_a-wcsncasecmp_l.obj: wcsncasecmp_l.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wcsncasecmp_l.obj `if test -f 'wcsncasecmp_l.c'; then $(CYGPATH_W) 'wcsncasecmp_l.c'; else $(CYGPATH_W) '$(srcdir)/wcsncasecmp_l.c'; fi`
|
||||||
|
|
||||||
|
lib_a-wcsxfrm_l.o: wcsxfrm_l.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wcsxfrm_l.o `test -f 'wcsxfrm_l.c' || echo '$(srcdir)/'`wcsxfrm_l.c
|
||||||
|
|
||||||
|
lib_a-wcsxfrm_l.obj: wcsxfrm_l.c
|
||||||
|
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wcsxfrm_l.obj `if test -f 'wcsxfrm_l.c'; then $(CYGPATH_W) 'wcsxfrm_l.c'; else $(CYGPATH_W) '$(srcdir)/wcsxfrm_l.c'; fi`
|
||||||
|
|
||||||
mostlyclean-libtool:
|
mostlyclean-libtool:
|
||||||
-rm -f *.lo
|
-rm -f *.lo
|
||||||
|
|
||||||
@ -1123,6 +1197,20 @@ GTAGS:
|
|||||||
&& $(am__cd) $(top_srcdir) \
|
&& $(am__cd) $(top_srcdir) \
|
||||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||||
|
|
||||||
|
cscopelist: $(HEADERS) $(SOURCES) $(LISP)
|
||||||
|
list='$(SOURCES) $(HEADERS) $(LISP)'; \
|
||||||
|
case "$(srcdir)" in \
|
||||||
|
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||||
|
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||||
|
esac; \
|
||||||
|
for i in $$list; do \
|
||||||
|
if test -f "$$i"; then \
|
||||||
|
echo "$(subdir)/$$i"; \
|
||||||
|
else \
|
||||||
|
echo "$$sdir/$$i"; \
|
||||||
|
fi; \
|
||||||
|
done >> $(top_builddir)/cscope.files
|
||||||
|
|
||||||
distclean-tags:
|
distclean-tags:
|
||||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||||
check-am:
|
check-am:
|
||||||
@ -1233,7 +1321,7 @@ uninstall-am:
|
|||||||
|
|
||||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
||||||
clean-libtool clean-noinstLIBRARIES clean-noinstLTLIBRARIES \
|
clean-libtool clean-noinstLIBRARIES clean-noinstLTLIBRARIES \
|
||||||
ctags distclean distclean-compile distclean-generic \
|
cscopelist ctags distclean distclean-compile distclean-generic \
|
||||||
distclean-libtool distclean-tags dvi dvi-am html html-am info \
|
distclean-libtool distclean-tags dvi dvi-am html html-am info \
|
||||||
info-am install install-am install-data install-data-am \
|
info-am install install-am install-data install-data-am \
|
||||||
install-dvi install-dvi-am install-exec install-exec-am \
|
install-dvi install-dvi-am install-exec install-exec-am \
|
||||||
|
@ -46,13 +46,11 @@ _DEFUN (strcasecmp, (s1, s2),
|
|||||||
_CONST char *s1 _AND
|
_CONST char *s1 _AND
|
||||||
_CONST char *s2)
|
_CONST char *s2)
|
||||||
{
|
{
|
||||||
_CONST unsigned char *ucs1 = (_CONST unsigned char *) s1;
|
|
||||||
_CONST unsigned char *ucs2 = (_CONST unsigned char *) s2;
|
|
||||||
int d = 0;
|
int d = 0;
|
||||||
for ( ; ; )
|
for ( ; ; )
|
||||||
{
|
{
|
||||||
_CONST int c1 = tolower(*ucs1++);
|
_CONST int c1 = tolower(*s1++);
|
||||||
_CONST int c2 = tolower(*ucs2++);
|
_CONST int c2 = tolower(*s2++);
|
||||||
if (((d = c1 - c2) != 0) || (c2 == '\0'))
|
if (((d = c1 - c2) != 0) || (c2 == '\0'))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
54
newlib/libc/string/strcasecmp_l.c
Normal file
54
newlib/libc/string/strcasecmp_l.c
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
/*
|
||||||
|
FUNCTION
|
||||||
|
<<strcasecmp_l>>---case-insensitive character string compare
|
||||||
|
|
||||||
|
INDEX
|
||||||
|
strcasecmp_l
|
||||||
|
|
||||||
|
ANSI_SYNOPSIS
|
||||||
|
#include <strings.h>
|
||||||
|
int strcasecmp_l(const char *<[a]>, const char *<[b]>,
|
||||||
|
locale_t <[locale]>);
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
<<strcasecmp_l>> compares the string at <[a]> to
|
||||||
|
the string at <[b]> in a case-insensitive manner.
|
||||||
|
|
||||||
|
if <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the
|
||||||
|
behaviour is undefined.
|
||||||
|
|
||||||
|
RETURNS
|
||||||
|
|
||||||
|
If <<*<[a]>>> sorts lexicographically after <<*<[b]>>> (after
|
||||||
|
both are converted to lowercase), <<strcasecmp_l>> returns a
|
||||||
|
number greater than zero. If the two strings match,
|
||||||
|
<<strcasecmp_l>> returns zero. If <<*<[a]>>> sorts
|
||||||
|
lexicographically before <<*<[b]>>>, <<strcasecmp_l>> returns a
|
||||||
|
number less than zero.
|
||||||
|
|
||||||
|
PORTABILITY
|
||||||
|
<<strcasecmp_l>> is POSIX-1.2008.
|
||||||
|
|
||||||
|
<<strcasecmp_l>> requires no supporting OS subroutines. It uses
|
||||||
|
tolower_l() from elsewhere in this library.
|
||||||
|
|
||||||
|
QUICKREF
|
||||||
|
strcasecmp_l
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <strings.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
strcasecmp_l (const char *s1, const char *s2, struct __locale_t *locale)
|
||||||
|
{
|
||||||
|
int d = 0;
|
||||||
|
for ( ; ; )
|
||||||
|
{
|
||||||
|
const int c1 = tolower_l (*s1++, locale);
|
||||||
|
const int c2 = tolower_l (*s2++, locale);
|
||||||
|
if (((d = c1 - c2) != 0) || (c2 == '\0'))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return d;
|
||||||
|
}
|
@ -20,6 +20,9 @@ DESCRIPTION
|
|||||||
the string pointed to by <[strb]>, using an interpretation
|
the string pointed to by <[strb]>, using an interpretation
|
||||||
appropriate to the current <<LC_COLLATE>> state.
|
appropriate to the current <<LC_COLLATE>> state.
|
||||||
|
|
||||||
|
(NOT Cygwin:) The current implementation of <<strcoll>> simply
|
||||||
|
uses <<strcmp>> and does not support any language-specific sorting.
|
||||||
|
|
||||||
RETURNS
|
RETURNS
|
||||||
If the first string is greater than the second string,
|
If the first string is greater than the second string,
|
||||||
<<strcoll>> returns a number greater than zero. If the two
|
<<strcoll>> returns a number greater than zero. If the two
|
||||||
|
46
newlib/libc/string/strcoll_l.c
Normal file
46
newlib/libc/string/strcoll_l.c
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
FUNCTION
|
||||||
|
<<strcoll_l>>---locale-specific character string compare
|
||||||
|
|
||||||
|
INDEX
|
||||||
|
strcoll_l
|
||||||
|
|
||||||
|
ANSI_SYNOPSIS
|
||||||
|
#include <string.h>
|
||||||
|
int strcoll_l(const char *<[stra]>, const char * <[strb]>,
|
||||||
|
locale_t <[locale]>);
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
<<strcoll_l>> compares the string pointed to by <[stra]> to
|
||||||
|
the string pointed to by <[strb]>, using an interpretation
|
||||||
|
appropriate to the current <<LC_COLLATE>> state.
|
||||||
|
|
||||||
|
(NOT Cygwin:) The current implementation of <<strcoll_l>> simply
|
||||||
|
uses <<strcmp>> and does not support any language-specific sorting.
|
||||||
|
|
||||||
|
If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the
|
||||||
|
behaviour is undefined.
|
||||||
|
|
||||||
|
RETURNS
|
||||||
|
If the first string is greater than the second string,
|
||||||
|
<<strcoll_l>> returns a number greater than zero. If the two
|
||||||
|
strings are equivalent, <<strcoll_l>> returns zero. If the first
|
||||||
|
string is less than the second string, <<strcoll_l>> returns a
|
||||||
|
number less than zero.
|
||||||
|
|
||||||
|
PORTABILITY
|
||||||
|
<<strcoll_l>> is POSIX-1.2008.
|
||||||
|
|
||||||
|
<<strcoll_l>> requires no supporting OS subroutines.
|
||||||
|
|
||||||
|
QUICKREF
|
||||||
|
strcoll_l ansi pure
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
strcoll_l (const char *a, const char *b, struct __locale_t *locale)
|
||||||
|
{
|
||||||
|
return strcmp (a, b);
|
||||||
|
}
|
@ -49,13 +49,11 @@ _DEFUN (strncasecmp, (s1, s2, n),
|
|||||||
_CONST char *s2 _AND
|
_CONST char *s2 _AND
|
||||||
size_t n)
|
size_t n)
|
||||||
{
|
{
|
||||||
_CONST unsigned char *ucs1 = (_CONST unsigned char *) s1;
|
|
||||||
_CONST unsigned char *ucs2 = (_CONST unsigned char *) s2;
|
|
||||||
int d = 0;
|
int d = 0;
|
||||||
for ( ; n != 0; n--)
|
for ( ; n != 0; n--)
|
||||||
{
|
{
|
||||||
_CONST int c1 = tolower(*ucs1++);
|
_CONST int c1 = tolower(*s1++);
|
||||||
_CONST int c2 = tolower(*ucs2++);
|
_CONST int c2 = tolower(*s2++);
|
||||||
if (((d = c1 - c2) != 0) || (c2 == '\0'))
|
if (((d = c1 - c2) != 0) || (c2 == '\0'))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
56
newlib/libc/string/strncasecmp_l.c
Normal file
56
newlib/libc/string/strncasecmp_l.c
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
/*
|
||||||
|
FUNCTION
|
||||||
|
<<strncasecmp_l>>---case-insensitive character string compare
|
||||||
|
|
||||||
|
INDEX
|
||||||
|
strncasecmp_l
|
||||||
|
|
||||||
|
ANSI_SYNOPSIS
|
||||||
|
#include <strings.h>
|
||||||
|
int strncasecmp_l(const char *<[a]>, const char * <[b]>,
|
||||||
|
size_t <[length]>, locale_t <[locale]>);
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
<<strncasecmp_l>> compares up to <[length]> characters
|
||||||
|
from the string at <[a]> to the string at <[b]> in a
|
||||||
|
case-insensitive manner.
|
||||||
|
|
||||||
|
if <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the
|
||||||
|
behaviour is undefined.
|
||||||
|
|
||||||
|
RETURNS
|
||||||
|
|
||||||
|
If <<*<[a]>>> sorts lexicographically after <<*<[b]>>> (after
|
||||||
|
both are converted to lowercase), <<strncasecmp_l>> returns a
|
||||||
|
number greater than zero. If the two strings are equivalent,
|
||||||
|
<<strncasecmp_l>> returns zero. If <<*<[a]>>> sorts
|
||||||
|
lexicographically before <<*<[b]>>>, <<strncasecmp_l>> returns a
|
||||||
|
number less than zero.
|
||||||
|
|
||||||
|
PORTABILITY
|
||||||
|
<<strncasecmp_l>> is POSIX-1.2008.
|
||||||
|
|
||||||
|
<<strncasecmp_l>> requires no supporting OS subroutines. It uses
|
||||||
|
tolower_l() from elsewhere in this library.
|
||||||
|
|
||||||
|
QUICKREF
|
||||||
|
strncasecmp_l
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <strings.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
strncasecmp_l (const char *s1, const char *s2, size_t n,
|
||||||
|
struct __locale_t *locale)
|
||||||
|
{
|
||||||
|
int d = 0;
|
||||||
|
for ( ; n != 0; n--)
|
||||||
|
{
|
||||||
|
const int c1 = tolower_l (*s1++, locale);
|
||||||
|
const int c2 = tolower_l (*s2++, locale);
|
||||||
|
if (((d = c1 - c2) != 0) || (c2 == '\0'))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return d;
|
||||||
|
}
|
@ -32,7 +32,8 @@ DESCRIPTION
|
|||||||
copying takes place between objects that overlap, the behavior
|
copying takes place between objects that overlap, the behavior
|
||||||
is undefined.
|
is undefined.
|
||||||
|
|
||||||
With a C locale, this function just copies.
|
(NOT Cygwin:) The current implementation of <<strxfrm>> simply copies
|
||||||
|
the input and does not support any language-specific transformations.
|
||||||
|
|
||||||
RETURNS
|
RETURNS
|
||||||
The <<strxfrm>> function returns the length of the transformed string
|
The <<strxfrm>> function returns the length of the transformed string
|
||||||
|
71
newlib/libc/string/strxfrm_l.c
Normal file
71
newlib/libc/string/strxfrm_l.c
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
/*
|
||||||
|
FUNCTION
|
||||||
|
<<strxfrm_l>>---transform string
|
||||||
|
|
||||||
|
INDEX
|
||||||
|
strxfrm_l
|
||||||
|
|
||||||
|
ANSI_SYNOPSIS
|
||||||
|
#include <string.h>
|
||||||
|
size_t strxfrm_l(char *restrict <[s1]>, const char *restrict <[s2]>,
|
||||||
|
size_t <[n]>, locale_t <[locale]>);
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
This function transforms the string pointed to by <[s2]> and
|
||||||
|
places the resulting string into the array pointed to by
|
||||||
|
<[s1]>. The transformation is such that if the <<strcmp>>
|
||||||
|
function is applied to the two transformed strings, it returns
|
||||||
|
a value greater than, equal to, or less than zero,
|
||||||
|
correspoinding to the result of a <<strcoll>> function applied
|
||||||
|
to the same two original strings.
|
||||||
|
|
||||||
|
No more than <[n]> characters are placed into the resulting
|
||||||
|
array pointed to by <[s1]>, including the terminating null
|
||||||
|
character. If <[n]> is zero, <[s1]> may be a null pointer. If
|
||||||
|
copying takes place between objects that overlap, the behavior
|
||||||
|
is undefined.
|
||||||
|
|
||||||
|
(NOT Cygwin:) The current implementation of <<strxfrm_l>> simply copies
|
||||||
|
the input and does not support any language-specific transformations.
|
||||||
|
|
||||||
|
If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the
|
||||||
|
behaviour is undefined.
|
||||||
|
|
||||||
|
RETURNS
|
||||||
|
The <<strxfrm_l>> function returns the length of the transformed string
|
||||||
|
(not including the terminating null character). If the value returned
|
||||||
|
is <[n]> or more, the contents of the array pointed to by
|
||||||
|
<[s1]> are indeterminate.
|
||||||
|
|
||||||
|
PORTABILITY
|
||||||
|
<<strxfrm_l>> is POSIX-1.2008.
|
||||||
|
|
||||||
|
<<strxfrm_l>> requires no supporting OS subroutines.
|
||||||
|
|
||||||
|
QUICKREF
|
||||||
|
strxfrm_l ansi pure
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
size_t
|
||||||
|
strxfrm_l (char *__restrict s1, const char *__restrict s2, size_t n,
|
||||||
|
struct __locale_t *locale)
|
||||||
|
{
|
||||||
|
size_t res;
|
||||||
|
res = 0;
|
||||||
|
while (n-- > 0)
|
||||||
|
{
|
||||||
|
if ((*s1++ = *s2++) != '\0')
|
||||||
|
++res;
|
||||||
|
else
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
while (*s2)
|
||||||
|
{
|
||||||
|
++s2;
|
||||||
|
++res;
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
@ -46,11 +46,13 @@ _DEFUN (wcscasecmp, (s1, s2),
|
|||||||
_CONST wchar_t *s1 _AND
|
_CONST wchar_t *s1 _AND
|
||||||
_CONST wchar_t *s2)
|
_CONST wchar_t *s2)
|
||||||
{
|
{
|
||||||
while (*s1 != '\0' && towlower(*s1) == towlower(*s2))
|
int d = 0;
|
||||||
|
for ( ; ; )
|
||||||
{
|
{
|
||||||
s1++;
|
const int c1 = towlower (*s1++);
|
||||||
s2++;
|
const int c2 = towlower (*s2++);
|
||||||
|
if (((d = c1 - c2) != 0) || (c2 == '\0'))
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
return d;
|
||||||
return towlower(*s1) - towlower(*s2);
|
|
||||||
}
|
}
|
||||||
|
54
newlib/libc/string/wcscasecmp_l.c
Normal file
54
newlib/libc/string/wcscasecmp_l.c
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
/*
|
||||||
|
FUNCTION
|
||||||
|
<<wcscasecmp_l>>---case-insensitive wide character string compare
|
||||||
|
|
||||||
|
INDEX
|
||||||
|
wcscasecmp_l
|
||||||
|
|
||||||
|
ANSI_SYNOPSIS
|
||||||
|
#include <wchar.h>
|
||||||
|
int wcscasecmp_l(const wchar_t *<[a]>, const wchar_t *<[b]>,
|
||||||
|
locale_t <[locale]>);
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
<<wcscasecmp_l>> compares the wide character string at <[a]> to
|
||||||
|
the wide character string at <[b]> in a case-insensitive manner.
|
||||||
|
|
||||||
|
if <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object,
|
||||||
|
the behaviour is undefined.
|
||||||
|
|
||||||
|
RETURNS
|
||||||
|
|
||||||
|
If <<*<[a]>>> sorts lexicographically after <<*<[b]>>> (after
|
||||||
|
both are converted to uppercase), <<wcscasecmp_l>> returns a
|
||||||
|
number greater than zero. If the two strings match,
|
||||||
|
<<wcscasecmp_l>> returns zero. If <<*<[a]>>> sorts
|
||||||
|
lexicographically before <<*<[b]>>>, <<wcscasecmp_l>> returns a
|
||||||
|
number less than zero.
|
||||||
|
|
||||||
|
PORTABILITY
|
||||||
|
<<wcscasecmp_l>> is POSIX-1.2008
|
||||||
|
|
||||||
|
<<wcscasecmp_l>> requires no supporting OS subroutines. It uses
|
||||||
|
tolower() from elsewhere in this library.
|
||||||
|
|
||||||
|
QUICKREF
|
||||||
|
wcscasecmp_l
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <wchar.h>
|
||||||
|
#include <wctype.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
wcscasecmp_l (const wchar_t *s1, const wchar_t *s2, struct __locale_t *locale)
|
||||||
|
{
|
||||||
|
int d = 0;
|
||||||
|
for ( ; ; )
|
||||||
|
{
|
||||||
|
const int c1 = towlower_l (*s1++, locale);
|
||||||
|
const int c2 = towlower_l (*s2++, locale);
|
||||||
|
if (((d = c1 - c2) != 0) || (c2 == '\0'))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return d;
|
||||||
|
}
|
@ -21,8 +21,8 @@ DESCRIPTION
|
|||||||
using an interpretation appropriate to the current <<LC_COLLATE>>
|
using an interpretation appropriate to the current <<LC_COLLATE>>
|
||||||
state.
|
state.
|
||||||
|
|
||||||
The current implementation of <<wcscoll>> simply uses <<wcscmp>>
|
(NOT Cygwin:) The current implementation of <<wcscoll>> simply
|
||||||
and does not support any language-specific sorting.
|
uses <<wcscmp>> and does not support any language-specific sorting.
|
||||||
|
|
||||||
RETURNS
|
RETURNS
|
||||||
If the first string is greater than the second string,
|
If the first string is greater than the second string,
|
||||||
|
43
newlib/libc/string/wcscoll_l.c
Normal file
43
newlib/libc/string/wcscoll_l.c
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
/*
|
||||||
|
FUNCTION
|
||||||
|
<<wcscoll_l>>---locale-specific wide-character string compare
|
||||||
|
|
||||||
|
INDEX
|
||||||
|
wcscoll_l
|
||||||
|
|
||||||
|
ANSI_SYNOPSIS
|
||||||
|
#include <wchar.h>
|
||||||
|
int wcscoll_l(const wchar_t *<[stra]>, const wchar_t * <[strb]>,
|
||||||
|
locale_t <[locale]>);
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
<<wcscoll_l>> compares the wide-character string pointed to by
|
||||||
|
<[stra]> to the wide-character string pointed to by <[strb]>,
|
||||||
|
using an interpretation appropriate to the current <<LC_COLLATE>>
|
||||||
|
state.
|
||||||
|
|
||||||
|
(NOT Cygwin:) The current implementation of <<wcscoll_l>> simply
|
||||||
|
uses <<wcscmp>> and does not support any language-specific sorting.
|
||||||
|
|
||||||
|
If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the
|
||||||
|
behaviour is undefined.
|
||||||
|
|
||||||
|
RETURNS
|
||||||
|
If the first string is greater than the second string,
|
||||||
|
<<wcscoll_l>> returns a number greater than zero. If the two
|
||||||
|
strings are equivalent, <<wcscoll_l>> returns zero. If the first
|
||||||
|
string is less than the second string, <<wcscoll_l>> returns a
|
||||||
|
number less than zero.
|
||||||
|
|
||||||
|
PORTABILITY
|
||||||
|
<<wcscoll_l>> is POSIX-1.2008.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <_ansi.h>
|
||||||
|
#include <wchar.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
wcscoll_l (const wchar_t *a, const wchar_t *b, struct __locale_t *locale)
|
||||||
|
{
|
||||||
|
return wcscmp (a, b);
|
||||||
|
}
|
@ -49,16 +49,13 @@ _DEFUN (wcsncasecmp, (s1, s2, n),
|
|||||||
_CONST wchar_t *s2 _AND
|
_CONST wchar_t *s2 _AND
|
||||||
size_t n)
|
size_t n)
|
||||||
{
|
{
|
||||||
if (n == 0)
|
int d = 0;
|
||||||
return 0;
|
for ( ; n != 0; n--)
|
||||||
|
|
||||||
while (n-- != 0 && towlower(*s1) == towlower(*s2))
|
|
||||||
{
|
{
|
||||||
if (n == 0 || *s1 == '\0' || *s2 == '\0')
|
const int c1 = towlower (*s1++);
|
||||||
break;
|
const int c2 = towlower (*s2++);
|
||||||
s1++;
|
if (((d = c1 - c2) != 0) || (c2 == '\0'))
|
||||||
s2++;
|
break;
|
||||||
}
|
}
|
||||||
|
return d;
|
||||||
return towlower(*s1) - towlower(*s2);
|
|
||||||
}
|
}
|
||||||
|
56
newlib/libc/string/wcsncasecmp_l.c
Normal file
56
newlib/libc/string/wcsncasecmp_l.c
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
/*
|
||||||
|
FUNCTION
|
||||||
|
<<wcsncasecmp_l>>---case-insensitive wide character string compare
|
||||||
|
|
||||||
|
INDEX
|
||||||
|
wcsncasecmp_l
|
||||||
|
|
||||||
|
ANSI_SYNOPSIS
|
||||||
|
#include <wchar.h>
|
||||||
|
int wcsncasecmp_l(const wchar_t *<[a]>, const wchar_t * <[b]>,
|
||||||
|
size_t <[length]>, locale_t <[locale]>);
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
<<wcsncasecmp_l>> compares up to <[length]> wide characters
|
||||||
|
from the string at <[a]> to the string at <[b]> in a
|
||||||
|
case-insensitive manner.
|
||||||
|
|
||||||
|
if <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the
|
||||||
|
behaviour is undefined.
|
||||||
|
|
||||||
|
RETURNS
|
||||||
|
|
||||||
|
If <<*<[a]>>> sorts lexicographically after <<*<[b]>>> (after
|
||||||
|
both are converted to uppercase), <<wcsncasecmp_l>> returns a
|
||||||
|
number greater than zero. If the two strings are equivalent,
|
||||||
|
<<wcsncasecmp_l>> returns zero. If <<*<[a]>>> sorts
|
||||||
|
lexicographically before <<*<[b]>>>, <<wcsncasecmp_l>> returns a
|
||||||
|
number less than zero.
|
||||||
|
|
||||||
|
PORTABILITY
|
||||||
|
POSIX-1.2008
|
||||||
|
|
||||||
|
<<wcsncasecmp_l>> requires no supporting OS subroutines. It uses
|
||||||
|
tolower() from elsewhere in this library.
|
||||||
|
|
||||||
|
QUICKREF
|
||||||
|
wcsncasecmp_l
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <wchar.h>
|
||||||
|
#include <wctype.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
wcsncasecmp_l (const wchar_t *s1, const wchar_t *s2, size_t n,
|
||||||
|
struct __locale_t *locale)
|
||||||
|
{
|
||||||
|
int d = 0;
|
||||||
|
for ( ; n != 0; n--)
|
||||||
|
{
|
||||||
|
const int c1 = towlower_l (*s1++, locale);
|
||||||
|
const int c2 = towlower_l (*s2++, locale);
|
||||||
|
if (((d = c1 - c2) != 0) || (c2 == '\0'))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return d;
|
||||||
|
}
|
@ -27,8 +27,8 @@ DESCRIPTION
|
|||||||
|
|
||||||
If <[n]> is 0, <[stra]> may be a NULL pointer.
|
If <[n]> is 0, <[stra]> may be a NULL pointer.
|
||||||
|
|
||||||
The current implementation of <<wcsxfrm>> simply uses <<wcslcpy>>
|
(NOT Cygwin:) The current implementation of <<wcsxfrm>> simply uses
|
||||||
and does not support any language-specific transformations.
|
<<wcslcpy>> and does not support any language-specific transformations.
|
||||||
|
|
||||||
RETURNS
|
RETURNS
|
||||||
<<wcsxfrm>> returns the length of the transformed wide character
|
<<wcsxfrm>> returns the length of the transformed wide character
|
||||||
|
47
newlib/libc/string/wcsxfrm_l.c
Normal file
47
newlib/libc/string/wcsxfrm_l.c
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
/*
|
||||||
|
FUNCTION
|
||||||
|
<<wcsxfrm_l>>---locale-specific wide-character string transformation
|
||||||
|
|
||||||
|
INDEX
|
||||||
|
wcsxfrm_l
|
||||||
|
|
||||||
|
ANSI_SYNOPSIS
|
||||||
|
#include <wchar.h>
|
||||||
|
int wcsxfrm_l(wchar_t *__restrict <[stra]>,
|
||||||
|
const wchar_t *__restrict <[strb]>, size_t <[n]>,
|
||||||
|
locale_t <[locale]>);
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
<<wcsxfrm_l>> transforms the wide-character string pointed to by
|
||||||
|
<[strb]> to the wide-character string pointed to by <[stra]>,
|
||||||
|
Comparing two transformed wide strings with <<wcscmp>> should return
|
||||||
|
the same result as comparing the original strings with <<wcscoll>>.
|
||||||
|
No more than <[n]> wide characters are transformed, including the
|
||||||
|
trailing null character.
|
||||||
|
|
||||||
|
If <[n]> is 0, <[stra]> may be a NULL pointer.
|
||||||
|
|
||||||
|
If <[locale]> is LC_GLOBAL_LOCALE or not a valid locale object, the
|
||||||
|
behaviour is undefined.
|
||||||
|
|
||||||
|
(NOT Cygwin:) The current implementation of <<wcsxfrm_l>> simply uses
|
||||||
|
<<wcslcpy>> and does not support any language-specific transformations.
|
||||||
|
|
||||||
|
RETURNS
|
||||||
|
<<wcsxfrm_l>> returns the length of the transformed wide character
|
||||||
|
string. if the return value is greater or equal to <[n]>, the
|
||||||
|
content of <[stra]> is undefined.
|
||||||
|
|
||||||
|
PORTABILITY
|
||||||
|
<<wcsxfrm_l>> is POSIX-1.2008.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <_ansi.h>
|
||||||
|
#include <wchar.h>
|
||||||
|
|
||||||
|
size_t
|
||||||
|
wcsxfrm_l (wchar_t *__restrict a, const wchar_t *__restrict b, size_t n,
|
||||||
|
struct __locale_t *locale)
|
||||||
|
{
|
||||||
|
return wcslcpy (a, b, n);
|
||||||
|
}
|
@ -4,7 +4,7 @@
|
|||||||
/*
|
/*
|
||||||
* strftime.c
|
* strftime.c
|
||||||
* Original Author: G. Haley
|
* Original Author: G. Haley
|
||||||
* Additions from: Eric Blake
|
* Additions from: Eric Blake, Corinna Vinschen
|
||||||
* Changes to allow dual use as wcstime, also: Craig Howland
|
* Changes to allow dual use as wcstime, also: Craig Howland
|
||||||
*
|
*
|
||||||
* Places characters into the array pointed to by s as controlled by the string
|
* Places characters into the array pointed to by s as controlled by the string
|
||||||
@ -17,16 +17,23 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
FUNCTION
|
FUNCTION
|
||||||
<<strftime>>---convert date and time to a formatted string
|
<<strftime>>, <<strftime_l>>---convert date and time to a formatted string
|
||||||
|
|
||||||
INDEX
|
INDEX
|
||||||
strftime
|
strftime
|
||||||
|
|
||||||
|
INDEX
|
||||||
|
strftime_l
|
||||||
|
|
||||||
ANSI_SYNOPSIS
|
ANSI_SYNOPSIS
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
size_t strftime(char *restrict <[s]>, size_t <[maxsize]>,
|
size_t strftime(char *restrict <[s]>, size_t <[maxsize]>,
|
||||||
const char *restrict <[format]>,
|
const char *restrict <[format]>,
|
||||||
const struct tm *restrict <[timp]>);
|
const struct tm *restrict <[timp]>);
|
||||||
|
size_t strftime_l(char *restrict <[s]>, size_t <[maxsize]>,
|
||||||
|
const char *restrict <[format]>,
|
||||||
|
const struct tm *restrict <[timp]>,
|
||||||
|
locale_t <[locale]>);
|
||||||
|
|
||||||
TRAD_SYNOPSIS
|
TRAD_SYNOPSIS
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
@ -41,6 +48,9 @@ DESCRIPTION
|
|||||||
<[timp]>) into a null-terminated string, starting at <[s]> and occupying
|
<[timp]>) into a null-terminated string, starting at <[s]> and occupying
|
||||||
no more than <[maxsize]> characters.
|
no more than <[maxsize]> characters.
|
||||||
|
|
||||||
|
<<strftime_l>> is like <<strftime>> but creates a string in a format
|
||||||
|
as expected in locale <[locale]>.
|
||||||
|
|
||||||
You control the format of the output using the string at <[format]>.
|
You control the format of the output using the string at <[format]>.
|
||||||
<<*<[format]>>> can contain two kinds of specifications: text to be
|
<<*<[format]>>> can contain two kinds of specifications: text to be
|
||||||
copied literally into the formatted string, and time conversion
|
copied literally into the formatted string, and time conversion
|
||||||
@ -258,11 +268,13 @@ value beforehand to distinguish between failure and an empty string.
|
|||||||
This implementation does not support <<s>> being NULL, nor overlapping
|
This implementation does not support <<s>> being NULL, nor overlapping
|
||||||
<<s>> and <<format>>.
|
<<s>> and <<format>>.
|
||||||
|
|
||||||
<<strftime>> requires no supporting OS subroutines.
|
<<strftime_l>> is POSIX-1.2008.
|
||||||
|
|
||||||
|
<<strftime>> and <<strftime_l>> require no supporting OS subroutines.
|
||||||
|
|
||||||
BUGS
|
BUGS
|
||||||
<<strftime>> ignores the LC_TIME category of the current locale, hard-coding
|
(NOT Cygwin:) <<strftime>> ignores the LC_TIME category of the current
|
||||||
the "C" locale settings.
|
locale, hard-coding the "C" locale settings.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <newlib.h>
|
#include <newlib.h>
|
||||||
@ -662,39 +674,16 @@ conv_to_alt_digits (CHAR *buf, size_t bufsiz, unsigned num, alt_digits_t *adi)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static size_t __strftime (CHAR *, size_t, const CHAR *, const struct tm *,
|
|
||||||
era_info_t **, alt_digits_t **);
|
|
||||||
|
|
||||||
size_t
|
|
||||||
_DEFUN (strftime, (s, maxsize, format, tim_p),
|
|
||||||
CHAR *__restrict s _AND
|
|
||||||
size_t maxsize _AND
|
|
||||||
_CONST CHAR *__restrict format _AND
|
|
||||||
_CONST struct tm *__restrict tim_p)
|
|
||||||
{
|
|
||||||
era_info_t *era_info = NULL;
|
|
||||||
alt_digits_t *alt_digits = NULL;
|
|
||||||
size_t ret = __strftime (s, maxsize, format, tim_p, &era_info, &alt_digits);
|
|
||||||
if (era_info)
|
|
||||||
free_era_info (era_info);
|
|
||||||
if (alt_digits)
|
|
||||||
free_alt_digits (alt_digits);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
static size_t
|
static size_t
|
||||||
__strftime (CHAR *s, size_t maxsize, const CHAR *format,
|
__strftime (CHAR *s, size_t maxsize, const CHAR *format,
|
||||||
const struct tm *tim_p, era_info_t **era_info,
|
const struct tm *tim_p, struct __locale_t *locale,
|
||||||
alt_digits_t **alt_digits)
|
era_info_t **era_info, alt_digits_t **alt_digits)
|
||||||
#else /* !_WANT_C99_TIME_FORMATS */
|
#else
|
||||||
# define __strftime(s,m,f,t,e,a) strftime((s),(m),(f),(t))
|
static size_t
|
||||||
|
__strftime (CHAR *s, size_t maxsize, const CHAR *format,
|
||||||
|
const struct tm *tim_p, struct __locale_t *locale)
|
||||||
|
|
||||||
size_t
|
#define __strftime(s,m,f,t,l,e,a) __strftime((s),(m),(f),(t),(l))
|
||||||
_DEFUN (strftime, (s, maxsize, format, tim_p),
|
|
||||||
CHAR *__restrict s _AND
|
|
||||||
size_t maxsize _AND
|
|
||||||
_CONST CHAR *__restrict format _AND
|
|
||||||
_CONST struct tm *__restrict tim_p)
|
|
||||||
#endif /* !_WANT_C99_TIME_FORMATS */
|
#endif /* !_WANT_C99_TIME_FORMATS */
|
||||||
{
|
{
|
||||||
size_t count = 0;
|
size_t count = 0;
|
||||||
@ -709,7 +698,7 @@ _DEFUN (strftime, (s, maxsize, format, tim_p),
|
|||||||
unsigned long width;
|
unsigned long width;
|
||||||
int tzset_called = 0;
|
int tzset_called = 0;
|
||||||
|
|
||||||
const struct lc_time_T *_CurrentTimeLocale = __get_current_time_locale ();
|
const struct lc_time_T *_CurrentTimeLocale = __get_locale_time (locale);
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
while (*format && *format != CQ('%'))
|
while (*format && *format != CQ('%'))
|
||||||
@ -840,7 +829,7 @@ recurse:
|
|||||||
{
|
{
|
||||||
/* Recurse to avoid need to replicate %Y formation. */
|
/* Recurse to avoid need to replicate %Y formation. */
|
||||||
len = __strftime (&s[count], maxsize - count, ctloc, tim_p,
|
len = __strftime (&s[count], maxsize - count, ctloc, tim_p,
|
||||||
era_info, alt_digits);
|
locale, era_info, alt_digits);
|
||||||
if (len > 0)
|
if (len > 0)
|
||||||
count += len;
|
count += len;
|
||||||
else
|
else
|
||||||
@ -957,7 +946,7 @@ recurse:
|
|||||||
}
|
}
|
||||||
STRCPY (fmt, CQ("Y-%m-%d"));
|
STRCPY (fmt, CQ("Y-%m-%d"));
|
||||||
len = __strftime (&s[count], maxsize - count, fmtbuf, tim_p,
|
len = __strftime (&s[count], maxsize - count, fmtbuf, tim_p,
|
||||||
era_info, alt_digits);
|
locale, era_info, alt_digits);
|
||||||
if (len > 0)
|
if (len > 0)
|
||||||
count += len;
|
count += len;
|
||||||
else
|
else
|
||||||
@ -1447,6 +1436,41 @@ recurse:
|
|||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t
|
||||||
|
_DEFUN (strftime, (s, maxsize, format, tim_p),
|
||||||
|
CHAR *__restrict s _AND
|
||||||
|
size_t maxsize _AND
|
||||||
|
_CONST CHAR *__restrict format _AND
|
||||||
|
_CONST struct tm *__restrict tim_p)
|
||||||
|
{
|
||||||
|
era_info_t *era_info = NULL;
|
||||||
|
alt_digits_t *alt_digits = NULL;
|
||||||
|
size_t ret = __strftime (s, maxsize, format, tim_p, __get_current_locale (),
|
||||||
|
&era_info, &alt_digits);
|
||||||
|
if (era_info)
|
||||||
|
free_era_info (era_info);
|
||||||
|
if (alt_digits)
|
||||||
|
free_alt_digits (alt_digits);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if !defined(MAKE_WCSFTIME)
|
||||||
|
size_t
|
||||||
|
strftime_l (char *__restrict s, size_t maxsize, const char *__restrict format,
|
||||||
|
const struct tm *__restrict tim_p, struct __locale_t *locale)
|
||||||
|
{
|
||||||
|
era_info_t *era_info = NULL;
|
||||||
|
alt_digits_t *alt_digits = NULL;
|
||||||
|
size_t ret = __strftime (s, maxsize, format, tim_p, locale,
|
||||||
|
&era_info, &alt_digits);
|
||||||
|
if (era_info)
|
||||||
|
free_era_info (era_info);
|
||||||
|
if (alt_digits)
|
||||||
|
free_alt_digits (alt_digits);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* The remainder of this file can serve as a regression test. Compile
|
/* The remainder of this file can serve as a regression test. Compile
|
||||||
* with -D_REGRESSION_TEST. */
|
* with -D_REGRESSION_TEST. */
|
||||||
#if defined(_REGRESSION_TEST) /* [Test code: */
|
#if defined(_REGRESSION_TEST) /* [Test code: */
|
||||||
|
@ -1330,12 +1330,14 @@ stime SIGFE
|
|||||||
stpcpy NOSIGFE
|
stpcpy NOSIGFE
|
||||||
stpncpy NOSIGFE
|
stpncpy NOSIGFE
|
||||||
strcasecmp NOSIGFE
|
strcasecmp NOSIGFE
|
||||||
|
strcasecmp_l NOSIGFE
|
||||||
strcasestr NOSIGFE
|
strcasestr NOSIGFE
|
||||||
strcat NOSIGFE
|
strcat NOSIGFE
|
||||||
strchr NOSIGFE
|
strchr NOSIGFE
|
||||||
strchrnul NOSIGFE
|
strchrnul NOSIGFE
|
||||||
strcmp NOSIGFE
|
strcmp NOSIGFE
|
||||||
strcoll NOSIGFE
|
strcoll NOSIGFE
|
||||||
|
strcoll_l NOSIGFE
|
||||||
strcpy NOSIGFE
|
strcpy NOSIGFE
|
||||||
strcspn NOSIGFE
|
strcspn NOSIGFE
|
||||||
strdup SIGFE
|
strdup SIGFE
|
||||||
@ -1343,11 +1345,13 @@ strerror SIGFE
|
|||||||
strerror_r SIGFE
|
strerror_r SIGFE
|
||||||
strfmon SIGFE
|
strfmon SIGFE
|
||||||
strftime SIGFE
|
strftime SIGFE
|
||||||
|
strftime_l SIGFE
|
||||||
strlcat NOSIGFE
|
strlcat NOSIGFE
|
||||||
strlcpy NOSIGFE
|
strlcpy NOSIGFE
|
||||||
strlen NOSIGFE
|
strlen NOSIGFE
|
||||||
strlwr NOSIGFE
|
strlwr NOSIGFE
|
||||||
strncasecmp NOSIGFE
|
strncasecmp NOSIGFE
|
||||||
|
strncasecmp_l NOSIGFE
|
||||||
strncat NOSIGFE
|
strncat NOSIGFE
|
||||||
strncmp NOSIGFE
|
strncmp NOSIGFE
|
||||||
strncpy NOSIGFE
|
strncpy NOSIGFE
|
||||||
@ -1374,6 +1378,7 @@ strtoull NOSIGFE
|
|||||||
strtoumax = strtoull NOSIGFE
|
strtoumax = strtoull NOSIGFE
|
||||||
strupr NOSIGFE
|
strupr NOSIGFE
|
||||||
strxfrm NOSIGFE
|
strxfrm NOSIGFE
|
||||||
|
strxfrm_l NOSIGFE
|
||||||
swab NOSIGFE
|
swab NOSIGFE
|
||||||
swapcontext NOSIGFE
|
swapcontext NOSIGFE
|
||||||
swprintf SIGFE
|
swprintf SIGFE
|
||||||
@ -1495,10 +1500,12 @@ wcpcpy NOSIGFE
|
|||||||
wcpncpy NOSIGFE
|
wcpncpy NOSIGFE
|
||||||
wcrtomb NOSIGFE
|
wcrtomb NOSIGFE
|
||||||
wcscasecmp NOSIGFE
|
wcscasecmp NOSIGFE
|
||||||
|
wcscasecmp_l NOSIGFE
|
||||||
wcscat NOSIGFE
|
wcscat NOSIGFE
|
||||||
wcschr NOSIGFE
|
wcschr NOSIGFE
|
||||||
wcscmp NOSIGFE
|
wcscmp NOSIGFE
|
||||||
wcscoll NOSIGFE
|
wcscoll NOSIGFE
|
||||||
|
wcscoll_l NOSIGFE
|
||||||
wcscpy NOSIGFE
|
wcscpy NOSIGFE
|
||||||
wcscspn NOSIGFE
|
wcscspn NOSIGFE
|
||||||
wcsdup NOSIGFE
|
wcsdup NOSIGFE
|
||||||
@ -1507,6 +1514,7 @@ wcslcat NOSIGFE
|
|||||||
wcslcpy NOSIGFE
|
wcslcpy NOSIGFE
|
||||||
wcslen NOSIGFE
|
wcslen NOSIGFE
|
||||||
wcsncasecmp NOSIGFE
|
wcsncasecmp NOSIGFE
|
||||||
|
wcsncasecmp_l NOSIGFE
|
||||||
wcsncat NOSIGFE
|
wcsncat NOSIGFE
|
||||||
wcsncmp NOSIGFE
|
wcsncmp NOSIGFE
|
||||||
wcsncpy NOSIGFE
|
wcsncpy NOSIGFE
|
||||||
@ -1530,6 +1538,7 @@ wcstoull NOSIGFE
|
|||||||
wcstoumax = wcstoull NOSIGFE
|
wcstoumax = wcstoull NOSIGFE
|
||||||
wcswidth NOSIGFE
|
wcswidth NOSIGFE
|
||||||
wcsxfrm NOSIGFE
|
wcsxfrm NOSIGFE
|
||||||
|
wcsxfrm_l NOSIGFE
|
||||||
wctob NOSIGFE
|
wctob NOSIGFE
|
||||||
wctomb NOSIGFE
|
wctomb NOSIGFE
|
||||||
wctrans NOSIGFE
|
wctrans NOSIGFE
|
||||||
|
@ -1117,10 +1117,11 @@ __collate_load_locale (struct __locale_t *locale, const char *name,
|
|||||||
transformation. The advantage is that we don't need any files with
|
transformation. The advantage is that we don't need any files with
|
||||||
collation information. */
|
collation information. */
|
||||||
extern "C" int
|
extern "C" int
|
||||||
wcscoll (const wchar_t *__restrict ws1, const wchar_t *__restrict ws2)
|
wcscoll_l (const wchar_t *__restrict ws1, const wchar_t *__restrict ws2,
|
||||||
|
struct __locale_t *locale)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
LCID collate_lcid = __get_current_collate_locale ()->lcid;
|
LCID collate_lcid = __get_locale_collate (locale)->lcid;
|
||||||
|
|
||||||
if (!collate_lcid)
|
if (!collate_lcid)
|
||||||
return wcscmp (ws1, ws2);
|
return wcscmp (ws1, ws2);
|
||||||
@ -1131,19 +1132,26 @@ wcscoll (const wchar_t *__restrict ws1, const wchar_t *__restrict ws2)
|
|||||||
}
|
}
|
||||||
|
|
||||||
extern "C" int
|
extern "C" int
|
||||||
strcoll (const char *__restrict s1, const char *__restrict s2)
|
wcscoll (const wchar_t *__restrict ws1, const wchar_t *__restrict ws2)
|
||||||
|
{
|
||||||
|
return wcscoll_l (ws1, ws2, __get_current_locale ());
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C" int
|
||||||
|
strcoll_l (const char *__restrict s1, const char *__restrict s2,
|
||||||
|
struct __locale_t *locale)
|
||||||
{
|
{
|
||||||
size_t n1, n2;
|
size_t n1, n2;
|
||||||
wchar_t *ws1, *ws2;
|
wchar_t *ws1, *ws2;
|
||||||
tmp_pathbuf tp;
|
tmp_pathbuf tp;
|
||||||
int ret;
|
int ret;
|
||||||
LCID collate_lcid = __get_current_collate_locale ()->lcid;
|
LCID collate_lcid = __get_locale_collate (locale)->lcid;
|
||||||
|
|
||||||
if (!collate_lcid)
|
if (!collate_lcid)
|
||||||
return strcmp (s1, s2);
|
return strcmp (s1, s2);
|
||||||
/* The ANSI version of CompareString uses the default charset of the lcid,
|
/* The ANSI version of CompareString uses the default charset of the lcid,
|
||||||
so we must use the Unicode version. */
|
so we must use the Unicode version. */
|
||||||
mbtowc_p collate_mbtowc = __get_current_collate_locale ()->mbtowc;
|
mbtowc_p collate_mbtowc = __get_locale_collate (locale)->mbtowc;
|
||||||
n1 = lc_mbstowcs (collate_mbtowc, NULL, s1, 0) + 1;
|
n1 = lc_mbstowcs (collate_mbtowc, NULL, s1, 0) + 1;
|
||||||
ws1 = (n1 > NT_MAX_PATH ? (wchar_t *) malloc (n1 * sizeof (wchar_t))
|
ws1 = (n1 > NT_MAX_PATH ? (wchar_t *) malloc (n1 * sizeof (wchar_t))
|
||||||
: tp.w_get ());
|
: tp.w_get ());
|
||||||
@ -1162,6 +1170,12 @@ strcoll (const char *__restrict s1, const char *__restrict s2)
|
|||||||
return ret - CSTR_EQUAL;
|
return ret - CSTR_EQUAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern "C" int
|
||||||
|
strcoll (const char *__restrict s1, const char *__restrict s2)
|
||||||
|
{
|
||||||
|
return strcoll_l (s1, s2, __get_current_locale ());
|
||||||
|
}
|
||||||
|
|
||||||
/* BSD. Used from glob.cc, fnmatch.c and regcomp.c. Make sure caller is
|
/* BSD. Used from glob.cc, fnmatch.c and regcomp.c. Make sure caller is
|
||||||
using wide chars. Unfortunately the definition of this functions hides
|
using wide chars. Unfortunately the definition of this functions hides
|
||||||
the required input type. */
|
the required input type. */
|
||||||
@ -1174,10 +1188,11 @@ __collate_range_cmp (int c1, int c2)
|
|||||||
}
|
}
|
||||||
|
|
||||||
extern "C" size_t
|
extern "C" size_t
|
||||||
wcsxfrm (wchar_t *__restrict ws1, const wchar_t *__restrict ws2, size_t wsn)
|
wcsxfrm_l (wchar_t *__restrict ws1, const wchar_t *__restrict ws2, size_t wsn,
|
||||||
|
struct __locale_t *locale)
|
||||||
{
|
{
|
||||||
size_t ret;
|
size_t ret;
|
||||||
LCID collate_lcid = __get_current_collate_locale ()->lcid;
|
LCID collate_lcid = __get_locale_collate (locale)->lcid;
|
||||||
|
|
||||||
if (!collate_lcid)
|
if (!collate_lcid)
|
||||||
return wcslcpy (ws1, ws2, wsn);
|
return wcslcpy (ws1, ws2, wsn);
|
||||||
@ -1207,19 +1222,26 @@ wcsxfrm (wchar_t *__restrict ws1, const wchar_t *__restrict ws2, size_t wsn)
|
|||||||
}
|
}
|
||||||
|
|
||||||
extern "C" size_t
|
extern "C" size_t
|
||||||
strxfrm (char *__restrict s1, const char *__restrict s2, size_t sn)
|
wcsxfrm (wchar_t *__restrict ws1, const wchar_t *__restrict ws2, size_t wsn)
|
||||||
|
{
|
||||||
|
return wcsxfrm_l (ws1, ws2, wsn, __get_current_locale ());
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C" size_t
|
||||||
|
strxfrm_l (char *__restrict s1, const char *__restrict s2, size_t sn,
|
||||||
|
struct __locale_t *locale)
|
||||||
{
|
{
|
||||||
size_t ret = 0;
|
size_t ret = 0;
|
||||||
size_t n2;
|
size_t n2;
|
||||||
wchar_t *ws2;
|
wchar_t *ws2;
|
||||||
tmp_pathbuf tp;
|
tmp_pathbuf tp;
|
||||||
LCID collate_lcid = __get_current_collate_locale ()->lcid;
|
LCID collate_lcid = __get_locale_collate (locale)->lcid;
|
||||||
|
|
||||||
if (!collate_lcid)
|
if (!collate_lcid)
|
||||||
return strlcpy (s1, s2, sn);
|
return strlcpy (s1, s2, sn);
|
||||||
/* The ANSI version of LCMapString uses the default charset of the lcid,
|
/* The ANSI version of LCMapString uses the default charset of the lcid,
|
||||||
so we must use the Unicode version. */
|
so we must use the Unicode version. */
|
||||||
mbtowc_p collate_mbtowc = __get_current_collate_locale ()->mbtowc;
|
mbtowc_p collate_mbtowc = __get_locale_collate (locale)->mbtowc;
|
||||||
n2 = lc_mbstowcs (collate_mbtowc, NULL, s2, 0) + 1;
|
n2 = lc_mbstowcs (collate_mbtowc, NULL, s2, 0) + 1;
|
||||||
ws2 = (n2 > NT_MAX_PATH ? (wchar_t *) malloc (n2 * sizeof (wchar_t))
|
ws2 = (n2 > NT_MAX_PATH ? (wchar_t *) malloc (n2 * sizeof (wchar_t))
|
||||||
: tp.w_get ());
|
: tp.w_get ());
|
||||||
@ -1245,6 +1267,12 @@ strxfrm (char *__restrict s1, const char *__restrict s2, size_t sn)
|
|||||||
return ret - 1;
|
return ret - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern "C" size_t
|
||||||
|
strxfrm (char *__restrict s1, const char *__restrict s2, size_t sn)
|
||||||
|
{
|
||||||
|
return strxfrm_l (s1, s2, sn, __get_current_locale ());
|
||||||
|
}
|
||||||
|
|
||||||
/* Fetch default ANSI codepage from locale info and generate a setlocale
|
/* Fetch default ANSI codepage from locale info and generate a setlocale
|
||||||
compatible character set code. Called from newlib's setlocale(), if the
|
compatible character set code. Called from newlib's setlocale(), if the
|
||||||
charset isn't given explicitely in the POSIX compatible locale specifier. */
|
charset isn't given explicitely in the POSIX compatible locale specifier. */
|
||||||
|
@ -913,10 +913,12 @@ also IEEE Std 1003.1-2008 (POSIX.1-2008).</para>
|
|||||||
stpcpy
|
stpcpy
|
||||||
stpncpy
|
stpncpy
|
||||||
strcasecmp
|
strcasecmp
|
||||||
|
strcasecmp_l
|
||||||
strcat
|
strcat
|
||||||
strchr
|
strchr
|
||||||
strcmp
|
strcmp
|
||||||
strcoll
|
strcoll
|
||||||
|
strcoll_l
|
||||||
strcpy
|
strcpy
|
||||||
strcspn
|
strcspn
|
||||||
strdup
|
strdup
|
||||||
@ -924,8 +926,10 @@ also IEEE Std 1003.1-2008 (POSIX.1-2008).</para>
|
|||||||
strerror_r
|
strerror_r
|
||||||
strfmon
|
strfmon
|
||||||
strftime
|
strftime
|
||||||
|
strftime_l
|
||||||
strlen
|
strlen
|
||||||
strncasecmp
|
strncasecmp
|
||||||
|
strncasecmp_l
|
||||||
strncat
|
strncat
|
||||||
strncmp
|
strncmp
|
||||||
strncpy
|
strncpy
|
||||||
@ -949,6 +953,7 @@ also IEEE Std 1003.1-2008 (POSIX.1-2008).</para>
|
|||||||
strtoull
|
strtoull
|
||||||
strtoumax
|
strtoumax
|
||||||
strxfrm
|
strxfrm
|
||||||
|
strxfrm_l
|
||||||
swab
|
swab
|
||||||
swprintf
|
swprintf
|
||||||
swscanf
|
swscanf
|
||||||
@ -1045,16 +1050,19 @@ also IEEE Std 1003.1-2008 (POSIX.1-2008).</para>
|
|||||||
wcpncpy
|
wcpncpy
|
||||||
wcrtomb
|
wcrtomb
|
||||||
wcscasecmp
|
wcscasecmp
|
||||||
|
wcscasecmp_l
|
||||||
wcscat
|
wcscat
|
||||||
wcschr
|
wcschr
|
||||||
wcscmp
|
wcscmp
|
||||||
wcscoll
|
wcscoll
|
||||||
|
wcscoll_l
|
||||||
wcscpy
|
wcscpy
|
||||||
wcscspn
|
wcscspn
|
||||||
wcsdup
|
wcsdup
|
||||||
wcsftime
|
wcsftime
|
||||||
wcslen
|
wcslen
|
||||||
wcsncasecmp
|
wcsncasecmp
|
||||||
|
wcsncasecmp_l
|
||||||
wcsncat
|
wcsncat
|
||||||
wcsncmp
|
wcsncmp
|
||||||
wcsncpy
|
wcsncpy
|
||||||
@ -1078,6 +1086,7 @@ also IEEE Std 1003.1-2008 (POSIX.1-2008).</para>
|
|||||||
wcstoumax
|
wcstoumax
|
||||||
wcswidth
|
wcswidth
|
||||||
wcsxfrm
|
wcsxfrm
|
||||||
|
wcsxfrm_l
|
||||||
wctob
|
wctob
|
||||||
wctomb
|
wctomb
|
||||||
wctrans
|
wctrans
|
||||||
@ -1539,18 +1548,10 @@ also IEEE Std 1003.1-2008 (POSIX.1-2008).</para>
|
|||||||
putmsg
|
putmsg
|
||||||
setnetent
|
setnetent
|
||||||
sigtimedwait
|
sigtimedwait
|
||||||
strcasecmp_l
|
|
||||||
strcoll_l
|
|
||||||
strfmon_l
|
strfmon_l
|
||||||
strncasecmp_l
|
|
||||||
strxfrm_l
|
|
||||||
timer_getoverrun
|
timer_getoverrun
|
||||||
ulimit
|
ulimit
|
||||||
waitid
|
waitid
|
||||||
wcscasecmp_l
|
|
||||||
wcscoll_l
|
|
||||||
wcsncasecmp_l
|
|
||||||
wcsxfrm_l
|
|
||||||
</screen>
|
</screen>
|
||||||
|
|
||||||
</sect1>
|
</sect1>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user