diff --git a/headers/posix/wchar.h b/headers/posix/wchar.h index 16bf7b81f8..f0aa8c006c 100644 --- a/headers/posix/wchar.h +++ b/headers/posix/wchar.h @@ -51,76 +51,103 @@ extern "C" { extern wint_t btowc(int); -extern wint_t fgetwc(FILE *); -extern wchar_t *fgetws(wchar_t *, int, FILE *); -extern wint_t fputwc(wchar_t, FILE *); -extern int fputws(const wchar_t *, FILE *); -extern int fwide(FILE *, int); -extern int fwprintf(FILE *, const wchar_t *, ...); -extern int fwscanf(FILE *, const wchar_t *, ...); -extern wint_t getwc(FILE *); +extern wint_t fgetwc(FILE *stream); +extern wchar_t *fgetws(wchar_t *dest, int destLength, FILE *stream); +extern wint_t fputwc(wchar_t wc, FILE *stream); +extern int fputws(const wchar_t *wcs, FILE *stream); +extern int fwide(FILE *stream, int mode); +extern int fwprintf(FILE *stream, const wchar_t *format, ...); +extern int fwscanf(FILE *stream, const wchar_t *format, ...); +extern wint_t getwc(FILE *stream); extern wint_t getwchar(void); -extern size_t mbrlen(const char *s, size_t n, mbstate_t *ps); -extern size_t mbrtowc(wchar_t *pwc, const char *s, size_t n, mbstate_t *ps); -extern int mbsinit(const mbstate_t *); -extern size_t mbsrtowcs(wchar_t *dst, const char **src, size_t len, - mbstate_t *ps); +extern size_t mbrlen(const char *s, size_t n, mbstate_t *mbState); +extern size_t mbrtowc(wchar_t *dest, const char *src, size_t destLength, + mbstate_t *mbState); +extern int mbsinit(const mbstate_t *mbState); +extern size_t mbsnrtowcs(wchar_t *dest, const char **src, size_t srcLength, + size_t destLength, mbstate_t *mbState); +extern size_t mbsrtowcs(wchar_t *dest, const char **src, size_t destLength, + mbstate_t *mbState); -extern wint_t putwc(wchar_t, FILE *); -extern wint_t putwchar(wchar_t); +extern wint_t putwc(wchar_t wc, FILE *stream); +extern wint_t putwchar(wchar_t wc); -extern int swprintf(wchar_t *, size_t, const wchar_t *, ...); -extern int swscanf(const wchar_t *, const wchar_t *, ...); +extern int swprintf(wchar_t *dest, size_t destLength, + const wchar_t *format, ...); +extern int swscanf(const wchar_t *wcs, const wchar_t *format, ...); -extern wint_t ungetwc(wint_t, FILE *); +extern wint_t ungetwc(wint_t wc, FILE *stream); -extern int vfwprintf(FILE *, const wchar_t *, va_list); -extern int vfwscanf(FILE *, const wchar_t *, va_list); -extern int vswprintf(wchar_t *, size_t, const wchar_t *, va_list); -extern int vswscanf(const wchar_t *, const wchar_t *, va_list); -extern int vwprintf(const wchar_t *, va_list); -extern int vwscanf(const wchar_t *, va_list); +extern int vfwprintf(FILE *stream, const wchar_t *format, va_list arg); +extern int vfwscanf(FILE *stream, const wchar_t *format, va_list arg); +extern int vswprintf(wchar_t *dest, size_t destLength, + const wchar_t *format, va_list arg); +extern int vswscanf(const wchar_t *wcs, const wchar_t *format, + va_list arg); +extern int vwprintf(const wchar_t *format, va_list arg); +extern int vwscanf(const wchar_t *format, va_list arg); -extern size_t wcrtomb(char *, wchar_t, mbstate_t *); -extern wchar_t *wcscat(wchar_t *, const wchar_t *); -extern wchar_t *wcschr(const wchar_t *, wchar_t); -extern int wcscmp(const wchar_t *ws1, const wchar_t *ws2); -extern int wcscoll(const wchar_t *ws1, const wchar_t *ws2); -extern wchar_t *wcscpy(wchar_t *, const wchar_t *); -extern size_t wcscspn(const wchar_t *, const wchar_t *); -extern wchar_t *wcsdup(const wchar_t *); -extern size_t wcsftime(wchar_t *, size_t, const wchar_t *, const struct tm *); -extern size_t wcslen(const wchar_t *); -extern wchar_t *wcsncat(wchar_t *, const wchar_t *, size_t); -extern int wcsncmp(const wchar_t *, const wchar_t *, size_t); -extern wchar_t *wcsncpy(wchar_t *, const wchar_t *, size_t); -extern wchar_t *wcspbrk(const wchar_t *, const wchar_t *); -extern wchar_t *wcsrchr(const wchar_t *, wchar_t); -extern size_t wcsrtombs(char *dst, const wchar_t **src, size_t len, - mbstate_t *ps); -extern size_t wcsspn(const wchar_t *, const wchar_t *); -extern wchar_t *wcsstr(const wchar_t *, const wchar_t *); -extern double wcstod(const wchar_t *, wchar_t **); -extern float wcstof(const wchar_t *, wchar_t **); -extern wchar_t *wcstok(wchar_t *, const wchar_t *, wchar_t **); -extern long wcstol(const wchar_t *, wchar_t **, int); -extern long double wcstold(const wchar_t *, wchar_t **); -extern long long wcstoll(const wchar_t *, wchar_t **, int); -extern unsigned long wcstoul(const wchar_t *, wchar_t **, int); -extern unsigned long long wcstoull(const wchar_t *, wchar_t **, int); -extern wchar_t *wcswcs(const wchar_t *, const wchar_t *); -extern int wcswidth(const wchar_t *, size_t); -extern size_t wcsxfrm(wchar_t *, const wchar_t *, size_t); -extern int wctob(wint_t); -extern int wcwidth(wchar_t); -extern wchar_t *wmemchr(const wchar_t *, wchar_t, size_t); -extern int wmemcmp(const wchar_t *, const wchar_t *, size_t); -extern wchar_t *wmemcpy(wchar_t *, const wchar_t *, size_t); -extern wchar_t *wmemmove(wchar_t *, const wchar_t *, size_t); -extern wchar_t *wmemset(wchar_t *, wchar_t, size_t); -extern int wprintf(const wchar_t *, ...); -extern int wscanf(const wchar_t *, ...); +extern wchar_t *wcpcpy(wchar_t *dest, const wchar_t *src); +extern wchar_t *wcpncpy(wchar_t *dest, const wchar_t *src, size_t srcLength); +extern size_t wcrtomb(char *dest, wchar_t wc, mbstate_t *mbState); +extern int wcscasecmp(const wchar_t *wcs1, const wchar_t *wcs2); +extern wchar_t *wcscat(wchar_t *dest, const wchar_t *src); +extern wchar_t *wcschr(const wchar_t *wcs, wchar_t wc); +#ifdef __USE_GNU +extern wchar_t *wcschrnul(const wchar_t *wcs, wchar_t wc); +#endif +extern int wcscmp(const wchar_t *wcs1, const wchar_t *wcs2); +extern int wcscoll(const wchar_t *wcs1, const wchar_t *wcs2); +extern wchar_t *wcscpy(wchar_t *dest, const wchar_t *src); +extern size_t wcscspn(const wchar_t *wcs, const wchar_t *reject); +extern wchar_t *wcsdup(const wchar_t *wcs); +extern size_t wcsftime(wchar_t *dest, size_t destLength, + const wchar_t *format, const struct tm *time); +extern size_t wcslcat(wchar_t *dest, const wchar_t *src, size_t maxLength); +extern size_t wcslcpy(wchar_t *dest, const wchar_t *src, size_t maxLength); +extern size_t wcslen(const wchar_t *wcs); +extern int wcsncasecmp(const wchar_t *wcs1, const wchar_t *wcs2, + size_t maxLength); +extern wchar_t *wcsncat(wchar_t *dest, const wchar_t *src, size_t srcLength); +extern int wcsncmp(const wchar_t *wcs1, const wchar_t *wcs2, + size_t length); +extern wchar_t *wcsncpy(wchar_t *dest, const wchar_t *src, size_t srcLength); +extern size_t wcsnlen(const wchar_t *wcs, size_t maxLength); +extern size_t wcsnrtombs(char *dest, const wchar_t **src, size_t srcLength, + size_t destLength, mbstate_t *mbState); +extern wchar_t *wcspbrk(const wchar_t *wcs, const wchar_t *accept); +extern wchar_t *wcsrchr(const wchar_t *wcs, wchar_t wc); +extern size_t wcsrtombs(char *dest, const wchar_t **src, size_t destLength, + mbstate_t *mbState); +extern size_t wcsspn(const wchar_t *wcs, const wchar_t *accept); +extern wchar_t *wcsstr(const wchar_t *haystack, const wchar_t *needle); +extern double wcstod(const wchar_t *wcs, wchar_t **endPtr); +extern float wcstof(const wchar_t *wcs, wchar_t **endPtr); +extern wchar_t *wcstok(wchar_t *wcs1, const wchar_t *wcs2, wchar_t **ptr); +extern long wcstol(const wchar_t *wcs, wchar_t **endPtr, int base); +extern long double wcstold(const wchar_t *wcs, wchar_t **endPtr); +extern long long wcstoll(const wchar_t *wcs, wchar_t **endPtr, int base); +extern unsigned long wcstoul(const wchar_t *wcs, wchar_t **endPtr, + int base); +extern unsigned long long wcstoull(const wchar_t *wcs, wchar_t **endPtr, + int base); +extern wchar_t *wcswcs(const wchar_t *haystack, const wchar_t *needle); +extern int wcswidth(const wchar_t *wcs, size_t length); +extern size_t wcsxfrm(wchar_t *dest, const wchar_t *src, size_t destLength); +extern int wctob(wint_t wc); +extern int wcwidth(wchar_t wc); +extern wchar_t *wmemchr(const wchar_t *wcs, wchar_t wc, size_t n); +extern int wmemcmp(const wchar_t *wcs1, const wchar_t *wcs2, size_t n); +extern wchar_t *wmemcpy(wchar_t *dest, const wchar_t *src, size_t n); +extern wchar_t *wmemmove(wchar_t *dest, const wchar_t *src, size_t n); +#ifdef __USE_GNU +extern wchar_t *wmempcpy(wchar_t *dest, const wchar_t *src, size_t n); +#endif +extern wchar_t *wmemset(wchar_t *dest, wchar_t wc, size_t n); + +extern int wprintf(const wchar_t *format, ...); +extern int wscanf(const wchar_t *format, ...); #ifdef __cplusplus } diff --git a/headers/private/libroot/wchar_private.h b/headers/private/libroot/wchar_private.h index b3dc5fea6e..fc276e6ba3 100644 --- a/headers/private/libroot/wchar_private.h +++ b/headers/private/libroot/wchar_private.h @@ -15,57 +15,75 @@ __BEGIN_DECLS -extern wint_t __btowc(int); +extern wint_t __btowc(int c); -extern int __mblen(const char *string, size_t maxSize); -extern size_t __mbrlen(const char *s, size_t n, mbstate_t *ps); -extern size_t __mbrtowc(wchar_t *pwc, const char *s, size_t n, mbstate_t *ps); -extern int __mbsinit(const mbstate_t *); -extern size_t __mbsrtowcs(wchar_t *dst, const char **src, size_t len, - mbstate_t *ps); -extern size_t __mbstowcs(wchar_t *pwcs, const char *string, size_t maxSize); -extern int __mbtowc(wchar_t *pwc, const char *string, size_t maxSize); +extern int __mblen(const char *string, size_t length); +extern size_t __mbrlen(const char *s, size_t n, mbstate_t *mbState); +extern size_t __mbrtowc(wchar_t *dest, const char *src, size_t destLength, + mbstate_t *mbState); +extern int __mbsinit(const mbstate_t *mbState); +extern size_t __mbsnrtowcs(wchar_t *dest, const char **src, size_t srcLength, + size_t destLength, mbstate_t *mbState); +extern size_t __mbsrtowcs(wchar_t *dest, const char **src, size_t destLength, + mbstate_t *mbState); +extern size_t __mbstowcs(wchar_t *dest, const char *src, size_t destLength); +extern int __mbtowc(wchar_t *dest, const char *src, size_t destLength); -extern size_t __wcrtomb(char *, wchar_t, mbstate_t *); -extern wchar_t *__wcscat(wchar_t *, const wchar_t *); -extern wchar_t *__wcschr(const wchar_t *, wchar_t); -extern int __wcscmp(const wchar_t *ws1, const wchar_t *ws2); -extern int __wcscoll(const wchar_t *ws1, const wchar_t *ws2); -extern wchar_t *__wcscpy(wchar_t *, const wchar_t *); -extern size_t __wcscspn(const wchar_t *, const wchar_t *); -extern wchar_t *__wcsdup(const wchar_t *); -extern size_t __wcsftime(wchar_t *, size_t, const wchar_t *, - const struct tm *); -extern size_t __wcslen(const wchar_t *); -extern wchar_t *__wcsncat(wchar_t *, const wchar_t *, size_t); -extern int __wcsncmp(const wchar_t *, const wchar_t *, size_t); -extern wchar_t *__wcsncpy(wchar_t *, const wchar_t *, size_t); -extern wchar_t *__wcspbrk(const wchar_t *, const wchar_t *); -extern wchar_t *__wcsrchr(const wchar_t *, wchar_t); -extern size_t __wcsrtombs(char *dst, const wchar_t **src, size_t len, - mbstate_t *ps); -extern size_t __wcsspn(const wchar_t *, const wchar_t *); -extern wchar_t *__wcsstr(const wchar_t *, const wchar_t *); -extern double __wcstod(const wchar_t *, wchar_t **); -extern float __wcstof(const wchar_t *, wchar_t **); -extern wchar_t *__wcstok(wchar_t *, const wchar_t *, wchar_t **); -extern long __wcstol(const wchar_t *, wchar_t **, int); -extern long double __wcstold(const wchar_t *, wchar_t **); -extern long long __wcstoll(const wchar_t *, wchar_t **, int); -extern unsigned long __wcstoul(const wchar_t *, wchar_t **, int); -extern unsigned long long __wcstoull(const wchar_t *, wchar_t **, int); -extern size_t __wcstombs(char *string, const wchar_t *pwcs, size_t maxSize); -extern int __wctomb(char *string, wchar_t wchar); -extern wchar_t *__wcswcs(const wchar_t *, const wchar_t *); -extern int __wcswidth(const wchar_t *, size_t); -extern size_t __wcsxfrm(wchar_t *, const wchar_t *, size_t); -extern int __wctob(wint_t); -extern int __wcwidth(wchar_t); -extern wchar_t *__wmemchr(const wchar_t *, wchar_t, size_t); -extern int __wmemcmp(const wchar_t *, const wchar_t *, size_t); -extern wchar_t *__wmemcpy(wchar_t *, const wchar_t *, size_t); -extern wchar_t *__wmemmove(wchar_t *, const wchar_t *, size_t); -extern wchar_t *__wmemset(wchar_t *, wchar_t, size_t); +extern wchar_t *__wcpcpy(wchar_t *dest, const wchar_t *src); +extern wchar_t *__wcpncpy(wchar_t *dest, const wchar_t *src, size_t srcLength); +extern size_t __wcrtomb(char *dest, wchar_t wc, mbstate_t *mbState); +extern int __wcscasecmp(const wchar_t *wcs1, const wchar_t *wcs2); +extern wchar_t *__wcscat(wchar_t *dest, const wchar_t *src); +extern wchar_t *__wcschr(const wchar_t *wcs, wchar_t wc); +extern wchar_t *__wcschrnul(const wchar_t *wcs, wchar_t wc); +extern int __wcscmp(const wchar_t *wcs1, const wchar_t *wcs2); +extern int __wcscoll(const wchar_t *wcs1, const wchar_t *wcs2); +extern wchar_t *__wcscpy(wchar_t *dest, const wchar_t *src); +extern size_t __wcscspn(const wchar_t *wcs, const wchar_t *reject); +extern wchar_t *__wcsdup(const wchar_t *wcs); +extern size_t __wcsftime(wchar_t *dest, size_t destLength, + const wchar_t *format, const struct tm *time); +extern size_t __wcslcat(wchar_t *dest, const wchar_t *src, size_t maxLength); +extern size_t __wcslcpy(wchar_t *dest, const wchar_t *src, size_t maxLength); +extern size_t __wcslen(const wchar_t *wcs); +extern int __wcsncasecmp(const wchar_t *wcs1, const wchar_t *wcs2, + size_t maxLength); +extern wchar_t *__wcsncat(wchar_t *dest, const wchar_t *src, size_t srcLength); +extern int __wcsncmp(const wchar_t *wcs1, const wchar_t *wcs2, + size_t length); +extern wchar_t *__wcsncpy(wchar_t *dest, const wchar_t *src, size_t srcLength); +extern size_t __wcsnlen(const wchar_t *wcs, size_t maxLength); +extern size_t __wcsnrtombs(char *dest, const wchar_t **src, size_t srcLength, + size_t destLength, mbstate_t *mbState); +extern wchar_t *__wcspbrk(const wchar_t *wcs, const wchar_t *accept); +extern wchar_t *__wcsrchr(const wchar_t *wcs, wchar_t wc); +extern size_t __wcsrtombs(char *dest, const wchar_t **src, size_t destLength, + mbstate_t *mbState); +extern size_t __wcsspn(const wchar_t *wcs, const wchar_t *accept); +extern wchar_t *__wcsstr(const wchar_t *haystack, const wchar_t *needle); +extern double __wcstod(const wchar_t *wcs, wchar_t **endPtr); +extern float __wcstof(const wchar_t *wcs, wchar_t **endPtr); +extern wchar_t *__wcstok(wchar_t *wcs1, const wchar_t *wcs2, wchar_t **ptr); +extern long __wcstol(const wchar_t *wcs, wchar_t **endPtr, int base); +extern long double __wcstold(const wchar_t *wcs, wchar_t **endPtr); +extern long long __wcstoll(const wchar_t *wcs, wchar_t **endPtr, int base); +extern unsigned long __wcstoul(const wchar_t *wcs, wchar_t **endPtr, + int base); +extern unsigned long long __wcstoull(const wchar_t *wcs, wchar_t **endPtr, + int base); +extern size_t __wcstombs(char *string, const wchar_t *wcs, size_t maxSize); +extern int __wctomb(char *string, wchar_t wc); +extern wchar_t *__wcswcs(const wchar_t *haystack, const wchar_t *needle); +extern int __wcswidth(const wchar_t *wcs, size_t length); +extern size_t __wcsxfrm(wchar_t *dest, const wchar_t *src, size_t destLength); +extern int __wctob(wint_t wc); +extern int __wcwidth(wchar_t wc); +extern wchar_t *__wmemchr(const wchar_t *wcs, wchar_t wc, size_t n); +extern int __wmemcmp(const wchar_t *wcs1, const wchar_t *wcs2, size_t n); +extern wchar_t *__wmemcpy(wchar_t *dest, const wchar_t *src, size_t n); +extern wchar_t *__wmempcpy(wchar_t *dest, const wchar_t *src, size_t n); +extern wchar_t *__wmemmove(wchar_t *dest, const wchar_t *src, size_t n); +extern wchar_t *__wmemset(wchar_t *dest, wchar_t wc, size_t n); __END_DECLS diff --git a/src/system/libroot/posix/glibc/wcsmbs/Jamfile b/src/system/libroot/posix/glibc/wcsmbs/Jamfile index 346d331758..66ce9e3004 100644 --- a/src/system/libroot/posix/glibc/wcsmbs/Jamfile +++ b/src/system/libroot/posix/glibc/wcsmbs/Jamfile @@ -18,42 +18,12 @@ UsePrivateHeaders libroot ; SubDirCcFlags -D_GNU_SOURCE -DUSE_IN_LIBIO ; MergeObject posix_gnu_wcsmbs.o : - wcpcpy.c - wcpncpy.c - wcscasecmp.c -# wcscasecmp_l.c - wcscat.c - wcschr.c - wcschrnul.c - wcscmp.c - wcscoll.c - wcscpy.c - wcscspn.c - wcsdup.c - wcslen.c wcsmbsload.c - wcsncase.c - wcsncat.c - wcsncmp.c - wcsncpy.c - wcsnlen.c - wcspbrk.c - wcsrchr.c - wcsspn.c - wcsstr.c wcstod.c wcstof.c - wcstok.c wcstol.c wcstoll.c wcstold.c wcstoul.c wcstoull.c - wcsxfrm.c - wmemchr.c - wmemcmp.c - wmemcpy.c - wmemmove.c - wmempcpy.c - wmemset.c ; diff --git a/src/system/libroot/posix/glibc/wcsmbs/wchar.h b/src/system/libroot/posix/glibc/wcsmbs/wchar.h index 745541c842..56d9503b28 100644 --- a/src/system/libroot/posix/glibc/wcsmbs/wchar.h +++ b/src/system/libroot/posix/glibc/wcsmbs/wchar.h @@ -118,229 +118,6 @@ struct tm; __BEGIN_DECLS -/* Copy SRC to DEST. */ -extern wchar_t *wcscpy (wchar_t *__restrict __dest, - __const wchar_t *__restrict __src) __THROW; -/* Copy no more than N wide-characters of SRC to DEST. */ -extern wchar_t *wcsncpy (wchar_t *__restrict __dest, - __const wchar_t *__restrict __src, size_t __n) - __THROW; - -/* Append SRC onto DEST. */ -extern wchar_t *wcscat (wchar_t *__restrict __dest, - __const wchar_t *__restrict __src) __THROW; -/* Append no more than N wide-characters of SRC onto DEST. */ -extern wchar_t *wcsncat (wchar_t *__restrict __dest, - __const wchar_t *__restrict __src, size_t __n) - __THROW; - -/* Compare S1 and S2. */ -extern int wcscmp (__const wchar_t *__s1, __const wchar_t *__s2) - __THROW __attribute_pure__; -/* Compare N wide-characters of S1 and S2. */ -extern int wcsncmp (__const wchar_t *__s1, __const wchar_t *__s2, size_t __n) - __THROW __attribute_pure__; - -#ifdef __USE_GNU -/* Compare S1 and S2, ignoring case. */ -extern int wcscasecmp (__const wchar_t *__s1, __const wchar_t *__s2) __THROW; - -/* Compare no more than N chars of S1 and S2, ignoring case. */ -extern int wcsncasecmp (__const wchar_t *__s1, __const wchar_t *__s2, - size_t __n) __THROW; - -/* Similar to the two functions above but take the information from - the provided locale and not the global locale. */ -# include - -extern int __wcscasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2, - __locale_t __loc) __THROW; - -extern int __wcsncasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2, - size_t __n, __locale_t __loc) __THROW; -#endif - -/* Compare S1 and S2, both interpreted as appropriate to the - LC_COLLATE category of the current locale. */ -extern int wcscoll (__const wchar_t *__s1, __const wchar_t *__s2) __THROW; -/* Transform S2 into array pointed to by S1 such that if wcscmp is - applied to two transformed strings the result is the as applying - `wcscoll' to the original strings. */ -extern size_t wcsxfrm (wchar_t *__restrict __s1, - __const wchar_t *__restrict __s2, size_t __n) __THROW; - -#ifdef __USE_GNU -/* Similar to the two functions above but take the information from - the provided locale and not the global locale. */ - -/* Compare S1 and S2, both interpreted as appropriate to the - LC_COLLATE category of the given locale. */ -extern int __wcscoll_l (__const wchar_t *__s1, __const wchar_t *__s2, - __locale_t __loc) __THROW; -/* Transform S2 into array pointed to by S1 such that if wcscmp is - applied to two transformed strings the result is the as applying - `wcscoll' to the original strings. */ -extern size_t __wcsxfrm_l (wchar_t *__s1, __const wchar_t *__s2, - size_t __n, __locale_t __loc) __THROW; - -/* Duplicate S, returning an identical malloc'd string. */ -extern wchar_t *wcsdup (__const wchar_t *__s) __THROW __attribute_malloc__; -#endif - -/* Find the first occurrence of WC in WCS. */ -extern wchar_t *wcschr (__const wchar_t *__wcs, wchar_t __wc) - __THROW __attribute_pure__; -/* Find the last occurrence of WC in WCS. */ -extern wchar_t *wcsrchr (__const wchar_t *__wcs, wchar_t __wc) - __THROW __attribute_pure__; - -#ifdef __USE_GNU -/* This function is similar to `wcschr'. But it returns a pointer to - the closing NUL wide character in case C is not found in S. */ -extern wchar_t *wcschrnul (__const wchar_t *__s, wchar_t __wc) - __THROW __attribute_pure__; -#endif - -/* Return the length of the initial segmet of WCS which - consists entirely of wide characters not in REJECT. */ -extern size_t wcscspn (__const wchar_t *__wcs, __const wchar_t *__reject) - __THROW __attribute_pure__; -/* Return the length of the initial segmet of WCS which - consists entirely of wide characters in ACCEPT. */ -extern size_t wcsspn (__const wchar_t *__wcs, __const wchar_t *__accept) - __THROW __attribute_pure__; -/* Find the first occurrence in WCS of any character in ACCEPT. */ -extern wchar_t *wcspbrk (__const wchar_t *__wcs, __const wchar_t *__accept) - __THROW __attribute_pure__; -/* Find the first occurrence of NEEDLE in HAYSTACK. */ -extern wchar_t *wcsstr (__const wchar_t *__haystack, __const wchar_t *__needle) - __THROW __attribute_pure__; - -#ifdef __USE_XOPEN -/* Another name for `wcsstr' from XPG4. */ -extern wchar_t *wcswcs (__const wchar_t *__haystack, __const wchar_t *__needle) - __THROW __attribute_pure__; -#endif - -/* Divide WCS into tokens separated by characters in DELIM. */ -extern wchar_t *wcstok (wchar_t *__restrict __s, - __const wchar_t *__restrict __delim, - wchar_t **__restrict __ptr) __THROW; - -/* Return the number of wide characters in S. */ -extern size_t wcslen (__const wchar_t *__s) __THROW __attribute_pure__; - -#ifdef __USE_GNU -/* Return the number of wide characters in S, but at most MAXLEN. */ -extern size_t wcsnlen (__const wchar_t *__s, size_t __maxlen) - __THROW __attribute_pure__; -#endif - - -/* Search N wide characters of S for C. */ -extern wchar_t *wmemchr (__const wchar_t *__s, wchar_t __c, size_t __n) - __THROW __attribute_pure__; - -/* Compare N wide characters of S1 and S2. */ -extern int wmemcmp (__const wchar_t *__restrict __s1, - __const wchar_t *__restrict __s2, size_t __n) - __THROW __attribute_pure__; - -/* Copy N wide characters of SRC to DEST. */ -extern wchar_t *wmemcpy (wchar_t *__restrict __s1, - __const wchar_t *__restrict __s2, size_t __n) __THROW; - -/* Copy N wide characters of SRC to DEST, guaranteeing - correct behavior for overlapping strings. */ -extern wchar_t *wmemmove (wchar_t *__s1, __const wchar_t *__s2, size_t __n) - __THROW; - -/* Set N wide characters of S to C. */ -extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) __THROW; - -#ifdef __USE_GNU -/* Copy N wide characters of SRC to DEST and return pointer to following - wide character. */ -extern wchar_t *wmempcpy (wchar_t *__restrict __s1, - __const wchar_t *__restrict __s2, size_t __n) - __THROW; -#endif - - -/* Determine whether C constitutes a valid (one-byte) multibyte - character. */ -extern wint_t btowc (int __c) __THROW; - -/* Determine whether C corresponds to a member of the extended - character set whose multibyte representation is a single byte. */ -extern int wctob (wint_t __c) __THROW; - -/* Determine whether PS points to an object representing the initial - state. */ -extern int mbsinit (__const mbstate_t *__ps) __THROW __attribute_pure__; - -/* Write wide character representation of multibyte character pointed - to by S to PWC. */ -extern size_t mbrtowc (wchar_t *__restrict __pwc, - __const char *__restrict __s, size_t __n, - mbstate_t *__p) __THROW; - -/* Write multibyte representation of wide character WC to S. */ -extern size_t wcrtomb (char *__restrict __s, wchar_t __wc, - mbstate_t *__restrict __ps) __THROW; - -/* Return number of bytes in multibyte character pointed to by S. */ -extern size_t __mbrlen (__const char *__restrict __s, size_t __n, - mbstate_t *__restrict __ps) __THROW; -extern size_t mbrlen (__const char *__restrict __s, size_t __n, - mbstate_t *__restrict __ps) __THROW; - -#ifdef __USE_EXTERN_INLINES -/* Define inline function as optimization. */ -extern __inline size_t mbrlen (__const char *__restrict __s, size_t __n, - mbstate_t *__restrict __ps) __THROW -{ return (__ps != NULL - ? mbrtowc (NULL, __s, __n, __ps) : __mbrlen (__s, __n, NULL)); } -#endif - -/* Write wide character representation of multibyte character string - SRC to DST. */ -extern size_t mbsrtowcs (wchar_t *__restrict __dst, - __const char **__restrict __src, size_t __len, - mbstate_t *__restrict __ps) __THROW; - -/* Write multibyte character representation of wide character string - SRC to DST. */ -extern size_t wcsrtombs (char *__restrict __dst, - __const wchar_t **__restrict __src, size_t __len, - mbstate_t *__restrict __ps) __THROW; - - -#ifdef __USE_GNU -/* Write wide character representation of at most NMC bytes of the - multibyte character string SRC to DST. */ -extern size_t mbsnrtowcs (wchar_t *__restrict __dst, - __const char **__restrict __src, size_t __nmc, - size_t __len, mbstate_t *__restrict __ps) __THROW; - -/* Write multibyte character representation of at most NWC characters - from the wide character string SRC to DST. */ -extern size_t wcsnrtombs (char *__restrict __dst, - __const wchar_t **__restrict __src, - size_t __nwc, size_t __len, - mbstate_t *__restrict __ps) __THROW; -#endif /* use GNU */ - - -/* The following functions are extensions found in X/Open CAE. */ -#ifdef __USE_XOPEN -/* Determine number of column positions required for C. */ -extern int wcwidth (wchar_t __c) __THROW; - -/* Determine number of column positions required for first N wide - characters (or fewer if S ends before this) in S. */ -extern int wcswidth (__const wchar_t *__s, size_t __n) __THROW; -#endif /* Use X/Open. */ /* Convert initial portion of the wide string NPTR to `double' @@ -400,56 +177,6 @@ extern unsigned long long int wcstoull (__const wchar_t *__restrict __nptr, int __base) __THROW; #endif /* ISO C99 or GCC and GNU. */ -#ifdef __USE_GNU -/* The concept of one static locale per category is not very well - thought out. Many applications will need to process its data using - information from several different locales. Another application is - the implementation of the internationalization handling in the - upcoming ISO C++ standard library. To support this another set of - the functions using locale data exist which have an additional - argument. - - Attention: all these functions are *not* standardized in any form. - This is a proof-of-concept implementation. */ - -/* Structure for reentrant locale using functions. This is an - (almost) opaque type for the user level programs. */ -# include - -/* Special versions of the functions above which take the locale to - use as an additional parameter. */ -extern long int __wcstol_l (__const wchar_t *__restrict __nptr, - wchar_t **__restrict __endptr, int __base, - __locale_t __loc) __THROW; - -extern unsigned long int __wcstoul_l (__const wchar_t *__restrict __nptr, - wchar_t **__restrict __endptr, - int __base, __locale_t __loc) __THROW; - -__extension__ -extern long long int __wcstoll_l (__const wchar_t *__restrict __nptr, - wchar_t **__restrict __endptr, - int __base, __locale_t __loc) __THROW; - -__extension__ -extern unsigned long long int __wcstoull_l (__const wchar_t *__restrict __nptr, - wchar_t **__restrict __endptr, - int __base, __locale_t __loc) - __THROW; - -extern double __wcstod_l (__const wchar_t *__restrict __nptr, - wchar_t **__restrict __endptr, __locale_t __loc) - __THROW; - -extern float __wcstof_l (__const wchar_t *__restrict __nptr, - wchar_t **__restrict __endptr, __locale_t __loc) - __THROW; - -extern long double __wcstold_l (__const wchar_t *__restrict __nptr, - wchar_t **__restrict __endptr, - __locale_t __loc) __THROW; -#endif /* GNU */ - /* The internal entry points for `wcstoX' take an extra flag argument saying whether or not to parse locale-dependent number grouping. */ @@ -533,18 +260,6 @@ extern __inline unsigned long long int wcstouq (__const wchar_t * #endif /* Optimizing GCC >=2. */ -#ifdef __USE_GNU -/* Copy SRC to DEST, returning the address of the terminating L'\0' in - DEST. */ -extern wchar_t *wcpcpy (wchar_t *__dest, __const wchar_t *__src) __THROW; - -/* Copy no more than N characters of SRC to DEST, returning the address of - the last character written into DEST. */ -extern wchar_t *wcpncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n) - __THROW; -#endif /* use GNU */ - - /* Wide character I/O functions. */ #if defined __USE_ISOC99 || defined __USE_UNIX98 @@ -670,24 +385,6 @@ extern int fputws_unlocked (__const wchar_t *__restrict __ws, #endif -/* Format TP into S according to FORMAT. - Write no more than MAXSIZE wide characters and return the number - of wide characters written, or 0 if it would exceed MAXSIZE. */ -extern size_t wcsftime (wchar_t *__restrict __s, size_t __maxsize, - __const wchar_t *__restrict __format, - __const struct tm *__restrict __tp) __THROW; - -/* The X/Open standard demands that most of the functions defined in - the header must also appear here. This is probably - because some X/Open members wrote their implementation before the - ISO C standard was published and introduced the better solution. - We have to provide these definitions for compliance reasons but we - do this nonsense only if really necessary. */ -#if defined __USE_UNIX98 && !defined __USE_GNU -# define __need_iswxxx -# include -#endif - __END_DECLS #endif /* _WCHAR_H defined */ diff --git a/src/system/libroot/posix/wchar/Jamfile b/src/system/libroot/posix/wchar/Jamfile index 8ab021fcd0..6b77b86d78 100644 --- a/src/system/libroot/posix/wchar/Jamfile +++ b/src/system/libroot/posix/wchar/Jamfile @@ -14,11 +14,43 @@ MergeObject posix_wchar.o : mbsrtowcs.cpp mbstowcs.c mbtowc.c + wcpcpy.c + wcpncpy.c wcrtomb.cpp + wcscasecmp.c + wcscat.c + wcschr.c + wcschrnul.c + wcscmp.c + wcscoll.cpp + wcscpy.c + wcscspn.c + wcsdup.c +# wcsftime.cpp + wcslcat.c + wcslcpy.c + wcslen.c + wcsncasecmp.c + wcsncat.c + wcsncmp.c + wcsncpy.c + wcsnlen.c + wcspbrk.c + wcsrchr.c wcsrtombs.cpp + wcsspn.c + wcsstr.c + wcstok.c wcstombs.c wcswidth.c + wcsxfrm.cpp wctob.c wctomb.c wcwidth.c + wmemchr.c + wmemcmp.c + wmemcpy.c + wmemmove.c + wmempcpy.c + wmemset.c ;