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