54 lines
996 B
C
54 lines
996 B
C
/* mbsinit( mbstate_t * ps )
|
|
|
|
This file is part of the Public Domain C Library (PDCLib).
|
|
Permission is granted to use, modify, and / or redistribute at will.
|
|
*/
|
|
|
|
#include <wchar.h>
|
|
#ifndef REGTEST
|
|
#include "_PDCLIB_encoding.h"
|
|
#include "_PDCLIB_locale.h"
|
|
|
|
static int _PDCLIB_mbsinit_l( const mbstate_t *ps, locale_t l )
|
|
{
|
|
if( ps ) {
|
|
return ps->_Surrogate == 0
|
|
&& ps->_PendState == 0
|
|
&& l->_Codec->__mbsinit(ps);
|
|
} else return 1;
|
|
}
|
|
|
|
int mbsinit( const mbstate_t * ps )
|
|
{
|
|
return _PDCLIB_mbsinit_l(ps, _PDCLIB_threadlocale());
|
|
}
|
|
|
|
#endif
|
|
|
|
#ifdef TEST
|
|
#include "_PDCLIB_test.h"
|
|
|
|
int main( void )
|
|
{
|
|
mbstate_t mbs;
|
|
memset(&mbs, 0, sizeof mbs);
|
|
|
|
TESTCASE(mbsinit(NULL) != 0);
|
|
TESTCASE(mbsinit(&mbs) != 0);
|
|
|
|
#ifndef REGTEST
|
|
// Surrogate pending
|
|
mbs._Surrogate = 0xFEED;
|
|
TESTCASE(mbsinit(&mbs) == 0);
|
|
|
|
mbs._Surrogate = 0;
|
|
mbs._PendState = 1;
|
|
TESTCASE(mbsinit(&mbs) == 0);
|
|
#endif
|
|
return TEST_RESULTS;
|
|
}
|
|
#endif
|
|
|
|
|
|
|