|
Packit |
992a25 |
/***********************************************************************
|
|
Packit |
992a25 |
* *
|
|
Packit |
992a25 |
* This software is part of the ast package *
|
|
Packit |
992a25 |
* Copyright (c) 1985-2011 AT&T Intellectual Property *
|
|
Packit |
992a25 |
* and is licensed under the *
|
|
Packit |
992a25 |
* Eclipse Public License, Version 1.0 *
|
|
Packit |
992a25 |
* by AT&T Intellectual Property *
|
|
Packit |
992a25 |
* *
|
|
Packit |
992a25 |
* A copy of the License is available at *
|
|
Packit |
992a25 |
* http://www.eclipse.org/org/documents/epl-v10.html *
|
|
Packit |
992a25 |
* (with md5 checksum b35adb5213ca9657e911e9befb180842) *
|
|
Packit |
992a25 |
* *
|
|
Packit |
992a25 |
* Information and Software Systems Research *
|
|
Packit |
992a25 |
* AT&T Research *
|
|
Packit |
992a25 |
* Florham Park NJ *
|
|
Packit |
992a25 |
* *
|
|
Packit |
992a25 |
* Glenn Fowler <gsf@research.att.com> *
|
|
Packit |
992a25 |
* David Korn <dgk@research.att.com> *
|
|
Packit |
992a25 |
* Phong Vo <kpv@research.att.com> *
|
|
Packit |
992a25 |
* *
|
|
Packit |
992a25 |
***********************************************************************/
|
|
Packit |
992a25 |
#pragma prototyped
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
/*
|
|
Packit |
992a25 |
* NOTE: mbs* and wcs* are provided to avoid link errors only
|
|
Packit |
992a25 |
*/
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#include <ast.h>
|
|
Packit |
992a25 |
#include <wchar.h>
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#define STUB 1
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#if !_lib_mbtowc
|
|
Packit |
992a25 |
#undef STUB
|
|
Packit |
992a25 |
size_t
|
|
Packit |
992a25 |
mbtowc(wchar_t* t, const char* s, size_t n)
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
if (t && n > 0)
|
|
Packit |
992a25 |
*t = *s;
|
|
Packit |
992a25 |
return 1;
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#if !_lib_mbrtowc
|
|
Packit |
992a25 |
#undef STUB
|
|
Packit |
992a25 |
size_t
|
|
Packit |
992a25 |
mbrtowc(wchar_t* t, const char* s, size_t n, mbstate_t* q)
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
#if _lib_mbtowc
|
|
Packit |
992a25 |
#undef STUB
|
|
Packit |
992a25 |
memset(q, 0, sizeof(*q));
|
|
Packit |
992a25 |
return mbtowc(t, s, n);
|
|
Packit |
992a25 |
#else
|
|
Packit |
992a25 |
*q = 0;
|
|
Packit |
992a25 |
if (t && n > 0)
|
|
Packit |
992a25 |
*t = *s;
|
|
Packit |
992a25 |
return 1;
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#if !_lib_mbstowcs
|
|
Packit |
992a25 |
#undef STUB
|
|
Packit |
992a25 |
size_t
|
|
Packit |
992a25 |
mbstowcs(wchar_t* t, const char* s, size_t n)
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
register wchar_t* p = t;
|
|
Packit |
992a25 |
register wchar_t* e = t + n;
|
|
Packit |
992a25 |
register unsigned char* u = (unsigned char*)s;
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
if (t)
|
|
Packit |
992a25 |
while (p < e && (*p++ = *u++));
|
|
Packit |
992a25 |
else
|
|
Packit |
992a25 |
while (p++, *u++);
|
|
Packit |
992a25 |
return p - t;
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#if !_lib_wctomb
|
|
Packit |
992a25 |
#undef STUB
|
|
Packit |
992a25 |
int
|
|
Packit |
992a25 |
wctomb(char* s, wchar_t c)
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
if (s)
|
|
Packit |
992a25 |
*s = c;
|
|
Packit |
992a25 |
return 1;
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#if !_lib_wcrtomb
|
|
Packit |
992a25 |
#undef STUB
|
|
Packit |
992a25 |
size_t
|
|
Packit |
992a25 |
wcrtomb(char* s, wchar_t c, mbstate_t* q)
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
#if _lib_wctomb
|
|
Packit |
992a25 |
#undef STUB
|
|
Packit |
992a25 |
memset(q, 0, sizeof(*q));
|
|
Packit |
992a25 |
return wctomb(s, c);
|
|
Packit |
992a25 |
#else
|
|
Packit |
992a25 |
if (s)
|
|
Packit |
992a25 |
*s = c;
|
|
Packit |
992a25 |
*q = 0;
|
|
Packit |
992a25 |
return 1;
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#if !_lib_wcslen
|
|
Packit |
992a25 |
#undef STUB
|
|
Packit |
992a25 |
size_t
|
|
Packit |
992a25 |
wcslen(const wchar_t* s)
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
register const wchar_t* p = s;
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
while (*p)
|
|
Packit |
992a25 |
p++;
|
|
Packit |
992a25 |
return p - s;
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#if !_lib_wcstombs
|
|
Packit |
992a25 |
#undef STUB
|
|
Packit |
992a25 |
size_t
|
|
Packit |
992a25 |
wcstombs(char* t, register const wchar_t* s, size_t n)
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
register char* p = t;
|
|
Packit |
992a25 |
register char* e = t + n;
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
if (t)
|
|
Packit |
992a25 |
while (p < e && (*p++ = *s++));
|
|
Packit |
992a25 |
else
|
|
Packit |
992a25 |
while (p++, *s++);
|
|
Packit |
992a25 |
return p - t;
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
#endif
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
#if STUB
|
|
Packit |
992a25 |
NoN(wc)
|
|
Packit |
992a25 |
#endif
|