mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-23 03:10:05 +00:00
Merge branch 'master' of ssh://sourceware.org/git/glibc
Conflicts: ChangeLog
This commit is contained in:
commit
ca2ff9fc04
@ -2,6 +2,14 @@
|
|||||||
|
|
||||||
* stdio-common/tst-long-dbl-fphex.c: Fix test for non ldbl-96 targets.
|
* stdio-common/tst-long-dbl-fphex.c: Fix test for non ldbl-96 targets.
|
||||||
|
|
||||||
|
2012-03-08 Marek Polacek <polacek@redhat.com>
|
||||||
|
|
||||||
|
[BZ #13806]
|
||||||
|
* stdio-common/Makefile (tests): Add tst-fphex-wide.
|
||||||
|
* stdio-common/tst-fphex.c: Define a few macros to make the
|
||||||
|
test reusable. Use them.
|
||||||
|
* stdio-common/tst-fphex-wide.c: New file.
|
||||||
|
|
||||||
2012-03-08 Joseph Myers <joseph@codesourcery.com>
|
2012-03-08 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
[BZ #6911]
|
[BZ #6911]
|
||||||
|
2
NEWS
2
NEWS
@ -14,7 +14,7 @@ Version 2.16
|
|||||||
10210, 10545, 10716, 11174, 11322, 11365, 11494, 12047, 13058, 13525,
|
10210, 10545, 10716, 11174, 11322, 11365, 11494, 12047, 13058, 13525,
|
||||||
13526, 13527, 13528, 13529, 13530, 13531, 13532, 13533, 13547, 13551,
|
13526, 13527, 13528, 13529, 13530, 13531, 13532, 13533, 13547, 13551,
|
||||||
13552, 13553, 13555, 13559, 13583, 13618, 13637, 13656, 13695, 13704,
|
13552, 13553, 13555, 13559, 13583, 13618, 13637, 13656, 13695, 13704,
|
||||||
13706, 13726, 13738, 13786, 13792
|
13706, 13726, 13738, 13786, 13792, 13806
|
||||||
|
|
||||||
* ISO C11 support:
|
* ISO C11 support:
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ tests := tstscanf test_rdwr test-popen tstgetln test-fseek \
|
|||||||
tst-fwrite bug16 bug17 tst-swscanf tst-sprintf2 bug18 bug18a \
|
tst-fwrite bug16 bug17 tst-swscanf tst-sprintf2 bug18 bug18a \
|
||||||
bug19 bug19a tst-popen2 scanf13 scanf14 scanf15 bug20 bug21 bug22 \
|
bug19 bug19a tst-popen2 scanf13 scanf14 scanf15 bug20 bug21 bug22 \
|
||||||
scanf16 scanf17 tst-setvbuf1 tst-grouping bug23 bug24 \
|
scanf16 scanf17 tst-setvbuf1 tst-grouping bug23 bug24 \
|
||||||
bug-vfprintf-nargs tst-long-dbl-fphex
|
bug-vfprintf-nargs tst-long-dbl-fphex tst-fphex-wide
|
||||||
|
|
||||||
test-srcs = tst-unbputc tst-printf
|
test-srcs = tst-unbputc tst-printf
|
||||||
|
|
||||||
|
30
stdio-common/tst-fphex-wide.c
Normal file
30
stdio-common/tst-fphex-wide.c
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
/* Test program for %a wprintf formats.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
Copyright (C) 2012 Free Software Foundation, Inc.
|
||||||
|
Contributed by Marek Polacek <polacek@redhat.com>, 2012.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Lesser General Public
|
||||||
|
License as published by the Free Software Foundation; either
|
||||||
|
version 2.1 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public
|
||||||
|
License along with the GNU C Library; if not, see
|
||||||
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
#include <wchar.h>
|
||||||
|
|
||||||
|
#define STR_LEN wcslen
|
||||||
|
#define SPRINT swprintf
|
||||||
|
#define STR_CMP wcscmp
|
||||||
|
#define CHAR_T wchar_t
|
||||||
|
#define PRINT wprintf
|
||||||
|
#define L_(Str) L##Str
|
||||||
|
#define L "l"
|
||||||
|
|
||||||
|
#include "tst-fphex.c"
|
@ -3,30 +3,52 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#ifndef STR_LEN
|
||||||
|
# define STR_LEN strlen
|
||||||
|
#endif
|
||||||
|
#ifndef STR_CMP
|
||||||
|
# define STR_CMP strcmp
|
||||||
|
#endif
|
||||||
|
#ifndef SPRINT
|
||||||
|
# define SPRINT snprintf
|
||||||
|
#endif
|
||||||
|
#ifndef CHAR_T
|
||||||
|
# define CHAR_T char
|
||||||
|
#endif
|
||||||
|
#ifndef PRINT
|
||||||
|
# define PRINT printf
|
||||||
|
#endif
|
||||||
|
#ifndef L_
|
||||||
|
# define L_(Str) Str
|
||||||
|
#endif
|
||||||
|
#ifndef L
|
||||||
|
# define L
|
||||||
|
#endif
|
||||||
|
|
||||||
struct testcase
|
struct testcase
|
||||||
{
|
{
|
||||||
double value;
|
double value;
|
||||||
const char *fmt;
|
const CHAR_T *fmt;
|
||||||
const char *expect;
|
const CHAR_T *expect;
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct testcase testcases[] =
|
static const struct testcase testcases[] =
|
||||||
{
|
{
|
||||||
{ 0x0.0030p+0, "%a", "0x1.8p-11" },
|
{ 0x0.0030p+0, L_("%a"), L_("0x1.8p-11") },
|
||||||
{ 0x0.0040p+0, "%a", "0x1p-10" },
|
{ 0x0.0040p+0, L_("%a"), L_("0x1p-10") },
|
||||||
{ 0x0.0030p+0, "%040a", "0x00000000000000000000000000000001.8p-11" },
|
{ 0x0.0030p+0, L_("%040a"), L_("0x00000000000000000000000000000001.8p-11") },
|
||||||
{ 0x0.0040p+0, "%040a", "0x0000000000000000000000000000000001p-10" },
|
{ 0x0.0040p+0, L_("%040a"), L_("0x0000000000000000000000000000000001p-10") },
|
||||||
{ 0x0.0040p+0, "%40a", " 0x1p-10" },
|
{ 0x0.0040p+0, L_("%40a"), L_(" 0x1p-10") },
|
||||||
{ 0x0.0040p+0, "%#40a", " 0x1.p-10" },
|
{ 0x0.0040p+0, L_("%#40a"), L_(" 0x1.p-10") },
|
||||||
{ 0x0.0040p+0, "%-40a", "0x1p-10 " },
|
{ 0x0.0040p+0, L_("%-40a"), L_("0x1p-10 ") },
|
||||||
{ 0x0.0040p+0, "%#-40a", "0x1.p-10 " },
|
{ 0x0.0040p+0, L_("%#-40a"), L_("0x1.p-10 ") },
|
||||||
{ 0x0.0030p+0, "%040e", "00000000000000000000000000007.324219e-04" },
|
{ 0x0.0030p+0, L_("%040e"), L_("00000000000000000000000000007.324219e-04") },
|
||||||
{ 0x0.0040p+0, "%040e", "00000000000000000000000000009.765625e-04" },
|
{ 0x0.0040p+0, L_("%040e"), L_("00000000000000000000000000009.765625e-04") },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
do_test (int argc, char **argv)
|
do_test (void)
|
||||||
{
|
{
|
||||||
const struct testcase *t;
|
const struct testcase *t;
|
||||||
int result = 0;
|
int result = 0;
|
||||||
@ -35,12 +57,13 @@ do_test (int argc, char **argv)
|
|||||||
t < &testcases[sizeof testcases / sizeof testcases[0]];
|
t < &testcases[sizeof testcases / sizeof testcases[0]];
|
||||||
++t)
|
++t)
|
||||||
{
|
{
|
||||||
char buf[1024];
|
CHAR_T buf[1024];
|
||||||
int n = snprintf (buf, sizeof buf, t->fmt, t->value);
|
int n = SPRINT (buf, sizeof buf / sizeof (buf[0]), t->fmt, t->value);
|
||||||
if (n != strlen (t->expect) || strcmp (buf, t->expect) != 0)
|
if (n != STR_LEN (t->expect) || STR_CMP (buf, t->expect) != 0)
|
||||||
{
|
{
|
||||||
printf ("%s\tExpected \"%s\" (%Zu)\n\tGot \"%s\" (%d, %Zu)\n",
|
PRINT (L_("%" L "s\tExpected \"%" L "s\" (%Zu)\n\tGot \"%" L
|
||||||
t->fmt, t->expect, strlen (t->expect), buf, n, strlen (buf));
|
"s\" (%d, %Zu)\n"), t->fmt, t->expect, STR_LEN (t->expect),
|
||||||
|
buf, n, STR_LEN (buf));
|
||||||
result = 1;
|
result = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -48,4 +71,5 @@ do_test (int argc, char **argv)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define TEST_FUNCTION do_test ()
|
||||||
#include "../test-skeleton.c"
|
#include "../test-skeleton.c"
|
||||||
|
Loading…
Reference in New Issue
Block a user