1/*********************************************************************** 2* * 3* This software is part of the ast package * 4* Copyright (c) 1985-2011 AT&T Intellectual Property * 5* and is licensed under the * 6* Common Public License, Version 1.0 * 7* by AT&T Intellectual Property * 8* * 9* A copy of the License is available at * 10* http://www.opensource.org/licenses/cpl1.0.txt * 11* (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) * 12* * 13* Information and Software Systems Research * 14* AT&T Research * 15* Florham Park NJ * 16* * 17* Glenn Fowler <gsf@research.att.com> * 18* David Korn <dgk@research.att.com> * 19* Phong Vo <kpv@research.att.com> * 20* * 21***********************************************************************/ 22#pragma prototyped 23 24/* 25 * NOTE: mbs* and wcs* are provided to avoid link errors only 26 */ 27 28#include <ast.h> 29#include <wchar.h> 30 31#define STUB 1 32 33#if !_lib_mbtowc 34#undef STUB 35size_t 36mbtowc(wchar_t* t, const char* s, size_t n) 37{ 38 if (t && n > 0) 39 *t = *s; 40 return 1; 41} 42#endif 43 44#if !_lib_mbrtowc 45#undef STUB 46size_t 47mbrtowc(wchar_t* t, const char* s, size_t n, mbstate_t* q) 48{ 49#if _lib_mbtowc 50#undef STUB 51 memset(q, 0, sizeof(*q)); 52 return mbtowc(t, s, n); 53#else 54 *q = 0; 55 if (t && n > 0) 56 *t = *s; 57 return 1; 58#endif 59} 60#endif 61 62#if !_lib_mbstowcs 63#undef STUB 64size_t 65mbstowcs(wchar_t* t, const char* s, size_t n) 66{ 67 register wchar_t* p = t; 68 register wchar_t* e = t + n; 69 register unsigned char* u = (unsigned char*)s; 70 71 if (t) 72 while (p < e && (*p++ = *u++)); 73 else 74 while (p++, *u++); 75 return p - t; 76} 77#endif 78 79#if !_lib_wctomb 80#undef STUB 81int 82wctomb(char* s, wchar_t c) 83{ 84 if (s) 85 *s = c; 86 return 1; 87} 88#endif 89 90#if !_lib_wcrtomb 91#undef STUB 92size_t 93wcrtomb(char* s, wchar_t c, mbstate_t* q) 94{ 95#if _lib_wctomb 96#undef STUB 97 memset(q, 0, sizeof(*q)); 98 return wctomb(s, c); 99#else 100 if (s) 101 *s = c; 102 *q = 0; 103 return 1; 104#endif 105} 106#endif 107 108#if !_lib_wcslen 109#undef STUB 110size_t 111wcslen(const wchar_t* s) 112{ 113 register const wchar_t* p = s; 114 115 while (*p) 116 p++; 117 return p - s; 118} 119#endif 120 121#if !_lib_wcstombs 122#undef STUB 123size_t 124wcstombs(char* t, register const wchar_t* s, size_t n) 125{ 126 register char* p = t; 127 register char* e = t + n; 128 129 if (t) 130 while (p < e && (*p++ = *s++)); 131 else 132 while (p++, *s++); 133 return p - t; 134} 135#endif 136 137#if STUB 138NoN(wc) 139#endif 140