2 MBRTOWC: size_t mbrtowc (wchar_t *pwc, const char *s, size_t n,
6 #define TST_FUNCTION mbrtowc
8 #include "tsp_common.c"
9 #include "dat_mbrtowc.c"
13 tst_mbrtowc (FILE * fp
, int debug_flg
)
15 TST_DECL_VARS (size_t);
20 static mbstate_t t
= { 0 };
22 wchar_t wc
, *pwc
, wc_ex
;
26 TST_HEAD_LOCALE (mbrtowc
, S_MBRTOWC
);
29 if (mbrtowc (NULL
, "", 0, &t
) != 0)
32 Result (C_FAILURE
, S_MBRTOWC
, CASE_3
,
33 "Initialization failed - skipping this test case.");
37 TST_DO_SEQ (MBRTOWC_SEQNUM
)
39 TST_GET_ERRET_SEQ (mbrtowc
);
40 w_flg
= TST_INPUT_SEQ (mbrtowc
).w_flg
;
41 s_flg
= TST_INPUT_SEQ (mbrtowc
).s_flg
;
42 s
= TST_INPUT_SEQ (mbrtowc
).s
;
43 n
= TST_INPUT_SEQ (mbrtowc
).n
;
44 t_flg
= TST_INPUT_SEQ (mbrtowc
).t_flg
;
45 t_ini
= TST_INPUT_SEQ (mbrtowc
).t_init
;
46 pwc
= (w_flg
== 0) ? NULL
: &wc
;
53 if (n
== USE_MBCURMAX
)
58 pt
= (t_flg
== 0) ? NULL
: &t
;
62 memset (&t
, 0, sizeof (t
));
66 ret
= mbrtowc (pwc
, s
, n
, pt
);
71 fprintf (stdout
, "mbrtowc() [ %s : %d : %d ] ret = %zd\n",
72 locale
, rec
+ 1, seq_num
+ 1, ret
);
73 fprintf (stdout
, " errno = %hd\n",
77 TST_IF_RETURN (S_MBRTOWC
)
81 if (pwc
== NULL
|| s
== NULL
|| ret
== (size_t) - 1
82 || ret
== (size_t) - 2)
87 wc_ex
= TST_EXPECT_SEQ (mbrtowc
).wc
;
90 Result (C_SUCCESS
, S_MBRTOWC
, CASE_4
, MS_PASSED
);
95 Result (C_FAILURE
, S_MBRTOWC
, CASE_4
,
96 "converted wc is different from an expected wc");