mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-11-03 20:53:13 +03:00 
			
		
		
		
	* stdio-common/Makefile (tests): Add tst-fphex. * sysdeps/generic/printf_fphex.c (__printf_fphex): Fix initialization of WNUMEND. Fix counting of decimal point in WIDTH. Print '0' pad chars always before the value digits. Reported by James Antill <james.antill@redhat.com>.
		
			
				
	
	
		
			52 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* Test program for %a printf formats.  */
 | 
						|
 | 
						|
#include <stdio.h>
 | 
						|
#include <string.h>
 | 
						|
 | 
						|
struct testcase
 | 
						|
{
 | 
						|
  double value;
 | 
						|
  const char *fmt;
 | 
						|
  const char *expect;
 | 
						|
};
 | 
						|
 | 
						|
static const struct testcase testcases[] =
 | 
						|
  {
 | 
						|
    { 0x0.0030p+0, "%a",	"0x1.8p-11" },
 | 
						|
    { 0x0.0040p+0, "%a",	"0x1p-10" },
 | 
						|
    { 0x0.0030p+0, "%040a",	"0x00000000000000000000000000000001.8p-11" },
 | 
						|
    { 0x0.0040p+0, "%040a",	"0x0000000000000000000000000000000001p-10" },
 | 
						|
    { 0x0.0040p+0, "%40a",	"                                 0x1p-10" },
 | 
						|
    { 0x0.0040p+0, "%#40a",	"                                0x1.p-10" },
 | 
						|
    { 0x0.0040p+0, "%-40a",	"0x1p-10                                 " },
 | 
						|
    { 0x0.0040p+0, "%#-40a",	"0x1.p-10                                " },
 | 
						|
    { 0x0.0030p+0, "%040e",	"00000000000000000000000000007.324219e-04" },
 | 
						|
    { 0x0.0040p+0, "%040e",	"00000000000000000000000000009.765625e-04" },
 | 
						|
  };
 | 
						|
 | 
						|
 | 
						|
static int
 | 
						|
do_test (int argc, char **argv)
 | 
						|
{
 | 
						|
  const struct testcase *t;
 | 
						|
  int result = 0;
 | 
						|
 | 
						|
  for (t = testcases;
 | 
						|
       t < &testcases[sizeof testcases / sizeof testcases[0]];
 | 
						|
       ++t)
 | 
						|
    {
 | 
						|
      char buf[1024];
 | 
						|
      int n = snprintf (buf, sizeof buf, t->fmt, t->value);
 | 
						|
      if (n != strlen (t->expect) || strcmp (buf, t->expect) != 0)
 | 
						|
	{
 | 
						|
	  printf ("%s\tExpected \"%s\" (%u)\n\tGot      \"%s\" (%d, %u)\n",
 | 
						|
		  t->fmt, t->expect, strlen (t->expect), buf, n, strlen (buf));
 | 
						|
	  result = 1;
 | 
						|
	}
 | 
						|
    }
 | 
						|
 | 
						|
  return result;
 | 
						|
}
 | 
						|
 | 
						|
#include "../test-skeleton.c"
 |