|
Packit |
6c4009 |
/*
|
|
Packit |
6c4009 |
STRFMON: size_t strfmon (char *buf, size_t nbyte, const char *fmt, ...)
|
|
Packit |
6c4009 |
*/
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
#define TST_FUNCTION strfmon
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
#include "tsp_common.c"
|
|
Packit |
6c4009 |
#include "dat_strfmon.c"
|
|
Packit |
6c4009 |
#include <monetary.h>
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
int
|
|
Packit |
6c4009 |
tst_strfmon (FILE * fp, int debug_flg)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
TST_DECL_VARS (size_t);
|
|
Packit |
6c4009 |
char buf[MONSIZE], *mon;
|
|
Packit |
6c4009 |
size_t nbt;
|
|
Packit |
6c4009 |
char *fmt;
|
|
Packit |
6c4009 |
double val;
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
TST_DO_TEST (strfmon)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
TST_HEAD_LOCALE (strfmon, S_STRFMON);
|
|
Packit |
6c4009 |
TST_DO_REC (strfmon)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
TST_GET_ERRET (strfmon);
|
|
Packit |
6c4009 |
nbt = TST_INPUT (strfmon).nbytes;
|
|
Packit |
6c4009 |
fmt = TST_INPUT (strfmon).fmt;
|
|
Packit |
6c4009 |
val = TST_INPUT (strfmon).val;
|
|
Packit |
6c4009 |
memset (buf, 0, MONSIZE);
|
|
Packit |
6c4009 |
if (nbt > MONSIZE)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
err_count++;
|
|
Packit |
6c4009 |
Result (C_FAILURE, S_STRFMON, CASE_3, "buffer too small in test");
|
|
Packit |
6c4009 |
continue;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
TST_CLEAR_ERRNO;
|
|
Packit |
6c4009 |
ret = strfmon (buf, nbt, fmt, val, val, val);
|
|
Packit |
6c4009 |
TST_SAVE_ERRNO;
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
if (debug_flg) /* seems fprintf doesn't update the errno */
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
fprintf (stdout, "strfmon() [ %s : %d ]\n", locale, rec + 1);
|
|
Packit |
6c4009 |
fprintf (stdout, " : err = %d | %s\n", errno_save,
|
|
Packit |
6c4009 |
strerror (errno));
|
|
Packit |
6c4009 |
fprintf (stdout, " : ret = %zd; \t fmt = |%s|\n", ret, fmt);
|
|
Packit |
6c4009 |
fprintf (stdout, " : buf = |%s|\n\n", buf);
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
TST_IF_RETURN (S_STRFMON)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
};
|
|
Packit |
6c4009 |
if (errno != 0 || ret == -1)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
continue;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
mon = TST_EXPECT (strfmon).mon;
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
if (!strcmp (buf, mon))
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
Result (C_SUCCESS, S_STRFMON, CASE_3, MS_PASSED);
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
else
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
err_count++;
|
|
Packit |
6c4009 |
Result (C_FAILURE, S_STRFMON, CASE_3, "the formatted string is "
|
|
Packit |
6c4009 |
"different from an expected result");
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
return err_count;
|
|
Packit |
6c4009 |
}
|