* strfuncs.cc: Change WCHAR to wchar_t in multibyte<->widechar

conversion functions throughout.
	* wchar.h: Ditto in declarations.  Guard them __INSIDE_CYGWIN__.
This commit is contained in:
Corinna Vinschen 2009-04-07 16:22:55 +00:00
parent 3d69426491
commit 21c7d001dc
3 changed files with 22 additions and 13 deletions

View File

@ -1,3 +1,9 @@
2009-04-07 Corinna Vinschen <corinna@vinschen.de>
* strfuncs.cc: Change WCHAR to wchar_t in multibyte<->widechar
conversion functions throughout.
* wchar.h: Ditto in declarations. Guard them __INSIDE_CYGWIN__.
2009-04-07 Corinna Vinschen <corinna@vinschen.de> 2009-04-07 Corinna Vinschen <corinna@vinschen.de>
* fhandler.h (class dev_console): Add members con_mbtowc, con_wctomb, * fhandler.h (class dev_console): Add members con_mbtowc, con_wctomb,

View File

@ -409,7 +409,7 @@ __set_charset_from_codepage (UINT cp, char *charset)
and the buffer in the calling function should be raised. */ and the buffer in the calling function should be raised. */
size_t __stdcall size_t __stdcall
sys_cp_wcstombs (wctomb_p f_wctomb, char *charset, char *dst, size_t len, sys_cp_wcstombs (wctomb_p f_wctomb, char *charset, char *dst, size_t len,
const PWCHAR src, size_t nwc) const wchar_t *src, size_t nwc)
{ {
char buf[10]; char buf[10];
char *ptr = dst; char *ptr = dst;
@ -487,7 +487,7 @@ sys_cp_wcstombs (wctomb_p f_wctomb, char *charset, char *dst, size_t len,
__small_vsprintf) and so when built there plain calloc is the __small_vsprintf) and so when built there plain calloc is the
only choice. */ only choice. */
size_t __stdcall size_t __stdcall
sys_wcstombs_alloc (char **dst_p, int type, const PWCHAR src, size_t nwc) sys_wcstombs_alloc (char **dst_p, int type, const wchar_t *src, size_t nwc)
{ {
size_t ret; size_t ret;
@ -513,7 +513,7 @@ sys_wcstombs_alloc (char **dst_p, int type, const PWCHAR src, size_t nwc)
charset, which is the charset returned by GetConsoleCP (). Most of the charset, which is the charset returned by GetConsoleCP (). Most of the
time this is used for box and line drawing characters. */ time this is used for box and line drawing characters. */
size_t __stdcall size_t __stdcall
sys_cp_mbstowcs (mbtowc_p f_mbtowc, char *charset, PWCHAR dst, size_t dlen, sys_cp_mbstowcs (mbtowc_p f_mbtowc, char *charset, wchar_t *dst, size_t dlen,
const char *src, size_t nms) const char *src, size_t nms)
{ {
wchar_t *ptr = dst; wchar_t *ptr = dst;
@ -593,7 +593,7 @@ sys_cp_mbstowcs (mbtowc_p f_mbtowc, char *charset, PWCHAR dst, size_t dlen,
/* Same as sys_wcstombs_alloc, just backwards. */ /* Same as sys_wcstombs_alloc, just backwards. */
size_t __stdcall size_t __stdcall
sys_mbstowcs_alloc (PWCHAR *dst_p, int type, const char *src, size_t nms) sys_mbstowcs_alloc (wchar_t **dst_p, int type, const char *src, size_t nms)
{ {
size_t ret; size_t ret;
@ -603,9 +603,10 @@ sys_mbstowcs_alloc (PWCHAR *dst_p, int type, const char *src, size_t nms)
size_t dlen = ret + 1; size_t dlen = ret + 1;
if (type == HEAP_NOTHEAP) if (type == HEAP_NOTHEAP)
*dst_p = (PWCHAR) calloc (dlen, sizeof (WCHAR)); *dst_p = (wchar_t *) calloc (dlen, sizeof (wchar_t));
else else
*dst_p = (PWCHAR) ccalloc ((cygheap_types) type, dlen, sizeof (WCHAR)); *dst_p = (wchar_t *) ccalloc ((cygheap_types) type, dlen,
sizeof (wchar_t));
if (!*dst_p) if (!*dst_p)
return 0; return 0;
ret = sys_mbstowcs (*dst_p, dlen, src, nms); ret = sys_mbstowcs (*dst_p, dlen, src, nms);
@ -622,7 +623,7 @@ RtlInt64ToHexUnicodeString (ULONGLONG value, PUNICODE_STRING dest,
USHORT len = append ? dest->Length : 0; USHORT len = append ? dest->Length : 0;
if (dest->MaximumLength - len < 16 * (int) sizeof (WCHAR)) if (dest->MaximumLength - len < 16 * (int) sizeof (WCHAR))
return STATUS_BUFFER_OVERFLOW; return STATUS_BUFFER_OVERFLOW;
PWCHAR end = (PWCHAR) ((PBYTE) dest->Buffer + len); wchar_t *end = (PWCHAR) ((PBYTE) dest->Buffer + len);
register PWCHAR p = end + 16; register PWCHAR p = end + 16;
while (p-- > end) while (p-- > end)
{ {

View File

@ -44,30 +44,32 @@ extern mbtowc_p __set_charset_from_codepage (unsigned int cp, char *charset);
} }
#endif #endif
#ifdef __INSIDE_CYGWIN__
size_t __stdcall sys_cp_wcstombs (wctomb_p, char *, char *, size_t, size_t __stdcall sys_cp_wcstombs (wctomb_p, char *, char *, size_t,
const PWCHAR, size_t = (size_t) -1) const wchar_t *, size_t = (size_t) -1)
__attribute__ ((regparm(3))); __attribute__ ((regparm(3)));
inline size_t inline size_t
__stdcall sys_wcstombs (char *dst, size_t len, const PWCHAR src, __stdcall sys_wcstombs (char *dst, size_t len, const wchar_t * src,
size_t nwc = (size_t) -1) size_t nwc = (size_t) -1)
{ {
return sys_cp_wcstombs (__wctomb, __locale_charset (), dst, len, src, nwc); return sys_cp_wcstombs (__wctomb, __locale_charset (), dst, len, src, nwc);
} }
size_t __stdcall sys_wcstombs_alloc (char **, int, const PWCHAR, size_t __stdcall sys_wcstombs_alloc (char **, int, const wchar_t *,
size_t = (size_t) -1) size_t = (size_t) -1)
__attribute__ ((regparm(3))); __attribute__ ((regparm(3)));
size_t __stdcall sys_cp_mbstowcs (mbtowc_p, char *, PWCHAR, size_t, size_t __stdcall sys_cp_mbstowcs (mbtowc_p, char *, wchar_t *, size_t,
const char *, size_t = (size_t) -1) const char *, size_t = (size_t) -1)
__attribute__ ((regparm(3))); __attribute__ ((regparm(3)));
inline size_t inline size_t
sys_mbstowcs (PWCHAR dst, size_t dlen, const char *src, sys_mbstowcs (wchar_t * dst, size_t dlen, const char *src,
size_t nms = (size_t) -1) size_t nms = (size_t) -1)
{ {
return sys_cp_mbstowcs (__mbtowc, __locale_charset (), dst, dlen, src, nms); return sys_cp_mbstowcs (__mbtowc, __locale_charset (), dst, dlen, src, nms);
} }
size_t __stdcall sys_mbstowcs_alloc (PWCHAR *, int, const char *, size_t __stdcall sys_mbstowcs_alloc (wchar_t **, int, const char *,
size_t = (size_t) -1) size_t = (size_t) -1)
__attribute__ ((regparm(3))); __attribute__ ((regparm(3)));
#endif /* __INSIDE_CYGWIN__ */
#endif /* _CYGWIN_WCHAR_H */ #endif /* _CYGWIN_WCHAR_H */