| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 | /*  MBSTOWCS: size_t mbstowcs (wchar_t *ws, char *s, size_t n)*/#define TST_FUNCTION mbstowcs#include "tsp_common.c"#include "dat_mbstowcs.c"inttst_mbstowcs (FILE * fp, int debug_flg){  TST_DECL_VARS (size_t);  char w_flg, s_flg;  const char *s;  size_t n;  wchar_t ws[WCSSIZE], *ws_ex, *wp;  int err, i;  TST_DO_TEST (mbstowcs)  {    TST_HEAD_LOCALE (mbstowcs, S_MBSTOWCS);    TST_DO_REC (mbstowcs)    {      if (mbstowcs (NULL, "", 0) != 0)	{	  err_count++;	  Result (C_FAILURE, S_MBSTOWCS, CASE_3,		  "Initialization failed - skipping this test case.");	  continue;	}      TST_DO_SEQ (MBSTOWCS_SEQNUM)      {	TST_GET_ERRET_SEQ (mbstowcs);	w_flg = TST_INPUT_SEQ (mbstowcs).w_flg;	s_flg = TST_INPUT_SEQ (mbstowcs).s_flg;	n = TST_INPUT_SEQ (mbstowcs).n;	if (s_flg == 0)	  s = NULL;	else	  s = TST_INPUT_SEQ (mbstowcs).s;	wp = (wchar_t *) ((w_flg == 0) ? NULL : ws);	TST_CLEAR_ERRNO;	ret = mbstowcs (wp, s, n);	TST_SAVE_ERRNO;	if (debug_flg)	  {	    fprintf (stderr, "mbstowcs: ret = %zd\n", ret);	  }	TST_IF_RETURN (S_MBSTOWCS)	{	};	if (s == NULL || wp == NULL || ret == (size_t) - 1)	  {	    continue;	  }	ws_ex = TST_EXPECT_SEQ (mbstowcs).ws;	for (err = 0, i = 0; i < ret; i++)	  {	    if (debug_flg)	      {		fprintf (stderr,			 "mbstowcs: ws[%d] => 0x%lx : 0x%lx <= ws_ex[%d]\n",			 i, (unsigned long int) ws[i],			 (unsigned long int) ws_ex[i], i);	      }	    if (ws[i] != ws_ex[i])	      {		err++;		err_count++;		Result (C_FAILURE, S_MBSTOWCS, CASE_4,			"the converted wc string has "			"different value from an expected string");		break;	      }	  }	if (!err)	  {	    Result (C_SUCCESS, S_MBSTOWCS, CASE_4, MS_PASSED);	  }      }    }  }  return err_count;}
 |