endif
ifeq ($(subdir),wcsmbs)
+ldbl-extra-routines += isoc99_fwscanf \
+ isoc99_swscanf \
+ isoc99_wscanf \
+ isoc99_vfwscanf \
+ isoc99_vswscanf \
+ isoc99_vwscanf
+
tests-internal += test-wcstold-ibm128 test-wcstold-ieee128
CFLAGS-test-wcstold-ieee128.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi
CFLAGS-test-wcstold-ibm128.c += -mabi=ibmlongdouble -Wno-psabi
vfwscanf \
obprintf \
obstack_chk \
- vobstack_chk
+ vobstack_chk \
+ isoc99_fscanf \
+ isoc99_scanf \
+ isoc99_sscanf \
+ isoc99_vfscanf \
+ isoc99_vscanf \
+ isoc99_vsscanf
# Printing long double values with IEEE binary128 format reuses part
# of the internal float128 implementation (__printf_fp, __printf_fphex,
$(objpfx)test-wscanf-ieee128: gnulib-tests += $(f128-loader-link)
+tests-internal += test-isoc99-scanf-ieee128 test-isoc99-scanf-ibm128
+CFLAGS-test-isoc99-scanf-ieee128.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi -std=c99
+CFLAGS-test-isoc99-scanf-ibm128.c += -mabi=ibmlongdouble -Wno-psabi -std=c99
+
+$(objpfx)test-isoc99-scanf-ieee128: gnulib-tests += $(f128-loader-link)
+
+tests-internal += test-isoc99-wscanf-ieee128 test-isoc99-wscanf-ibm128
+CFLAGS-test-isoc99-wscanf-ieee128.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi -std=c99
+CFLAGS-test-isoc99-wscanf-ibm128.c += -mabi=ibmlongdouble -Wno-psabi -std=c99
+
+$(objpfx)test-isoc99-wscanf-ieee128: gnulib-tests += $(f128-loader-link)
+
ifeq ($(run-built-tests),yes)
tests-special += $(objpfx)test-scanf-ieee128.out
tests-special += $(objpfx)test-scanf-ibm128.out
tests-special += $(objpfx)test-wscanf-ieee128.out
tests-special += $(objpfx)test-wscanf-ibm128.out
+
+tests-special += $(objpfx)test-isoc99-scanf-ieee128.out
+tests-special += $(objpfx)test-isoc99-scanf-ibm128.out
+
+tests-special += $(objpfx)test-isoc99-wscanf-ieee128.out
+tests-special += $(objpfx)test-isoc99-wscanf-ibm128.out
endif
$(objpfx)test-scanf-ieee128.out: \
$(SHELL) $^ '$(test-program-prefix)' $@; \
$(evaluate-test)
+$(objpfx)test-isoc99-scanf-ieee128.out: \
+ ../sysdeps/ieee754/ldbl-128ibm-compat/test-scanf-ldbl-compat.sh \
+ $(objpfx)test-isoc99-scanf-ieee128
+ $(SHELL) $^ '$(test-program-prefix)' $@; \
+ $(evaluate-test)
+
+$(objpfx)test-isoc99-scanf-ibm128.out: \
+ ../sysdeps/ieee754/ldbl-128ibm-compat/test-scanf-ldbl-compat.sh \
+ $(objpfx)test-isoc99-scanf-ibm128
+ $(SHELL) $^ '$(test-program-prefix)' $@; \
+ $(evaluate-test)
+
+$(objpfx)test-isoc99-wscanf-ieee128.out: \
+ ../sysdeps/ieee754/ldbl-128ibm-compat/test-scanf-ldbl-compat.sh \
+ $(objpfx)test-isoc99-wscanf-ieee128
+ $(SHELL) $^ '$(test-program-prefix)' $@; \
+ $(evaluate-test)
+
+$(objpfx)test-isoc99-wscanf-ibm128.out: \
+ ../sysdeps/ieee754/ldbl-128ibm-compat/test-scanf-ldbl-compat.sh \
+ $(objpfx)test-isoc99-wscanf-ibm128
+ $(SHELL) $^ '$(test-program-prefix)' $@; \
+ $(evaluate-test)
+
tests-internal += test-printf-size-ieee128 test-printf-size-ibm128
CFLAGS-test-printf-size-ieee128.c += -mfloat128 -mabi=ieeelongdouble -Wno-psabi
CFLAGS-test-printf-size-ibm128.c += -mabi=ibmlongdouble -Wno-psabi
__vswscanfieee128;
__vwscanfieee128;
+ __isoc99_fscanfieee128;
+ __isoc99_scanfieee128;
+ __isoc99_sscanfieee128;
+
+ __isoc99_vfscanfieee128;
+ __isoc99_vscanfieee128;
+ __isoc99_vsscanfieee128;
+
+ __isoc99_fwscanfieee128;
+ __isoc99_swscanfieee128;
+ __isoc99_wscanfieee128;
+
+ __isoc99_vfwscanfieee128;
+ __isoc99_vswscanfieee128;
+ __isoc99_vwscanfieee128;
+
__argp_errorieee128;
__argp_failureieee128;
--- /dev/null
+/* Wrapper for __isoc99_fscanf. IEEE128 version.
+ Copyright (C) 2019 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ 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
+ <https://www.gnu.org/licenses/>. */
+
+#include <stdarg.h>
+#include <libio/libioP.h>
+
+extern int
+___ieee128_isoc99_fscanf (FILE *fp, const char *format, ...)
+{
+ va_list arg;
+ int done;
+ int mode_flags = SCANF_ISOC99_A | SCANF_LDBL_USES_FLOAT128;
+
+ va_start (arg, format);
+ done = __vfscanf_internal (fp, format, arg, mode_flags);
+ va_end (arg);
+
+ return done;
+}
+strong_alias (___ieee128_isoc99_fscanf, __isoc99_fscanfieee128)
--- /dev/null
+/* Wrapper for __isoc99_fwscanf. IEEE128 version.
+ Copyright (C) 2019 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ 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
+ <https://www.gnu.org/licenses/>. */
+
+#include <stdarg.h>
+#include <libioP.h>
+
+extern int
+___ieee128_isoc99_fwscanf (FILE *fp, const wchar_t *format, ...)
+{
+ va_list ap;
+ int done;
+ int mode_flags = SCANF_ISOC99_A | SCANF_LDBL_USES_FLOAT128;
+
+ va_start (ap, format);
+ done = __vfwscanf_internal (fp, format, ap, mode_flags);
+ va_end (ap);
+
+ return done;
+}
+strong_alias (___ieee128_isoc99_fwscanf, __isoc99_fwscanfieee128)
--- /dev/null
+/* Wrapper for __isoc99_scanf. IEEE128 version.
+ Copyright (C) 2019 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ 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
+ <https://www.gnu.org/licenses/>. */
+
+#include <stdarg.h>
+#include <libio/libioP.h>
+
+extern int
+___ieee128_isoc99_scanf (const char *format, ...)
+{
+ va_list arg;
+ int done;
+ int mode_flags = SCANF_ISOC99_A | SCANF_LDBL_USES_FLOAT128;
+
+ va_start (arg, format);
+ done = __vfscanf_internal (stdin, format, arg, mode_flags);
+ va_end (arg);
+
+ return done;
+}
+strong_alias (___ieee128_isoc99_scanf, __isoc99_scanfieee128)
--- /dev/null
+/* Wrapper for __isoc99_sscanf. IEEE128 version.
+ Copyright (C) 2019 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ 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
+ <https://www.gnu.org/licenses/>. */
+
+#include <stdarg.h>
+#include <strfile.h>
+#include <libioP.h>
+
+extern int
+___ieee128_isoc99_sscanf (const char *string, const char *format, ...)
+{
+ va_list arg;
+ int done;
+ int mode_flags = SCANF_ISOC99_A | SCANF_LDBL_USES_FLOAT128;
+
+ _IO_strfile sf;
+ FILE *fp = _IO_strfile_read (&sf, string);
+
+ va_start (arg, format);
+ done = __vfscanf_internal (fp, format, arg, mode_flags);
+ va_end (arg);
+
+ return done;
+}
+strong_alias (___ieee128_isoc99_sscanf, __isoc99_sscanfieee128)
--- /dev/null
+/* Wrapper for __isoc99_swscanf. IEEE128 version.
+ Copyright (C) 2019 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ 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
+ <https://www.gnu.org/licenses/>. */
+
+#include <stdarg.h>
+#include <strfile.h>
+#include <libioP.h>
+
+extern int
+___ieee128_isoc99_swscanf (const wchar_t *string, const wchar_t *format, ...)
+{
+ va_list ap;
+ int done;
+ int mode_flags = SCANF_ISOC99_A | SCANF_LDBL_USES_FLOAT128;
+
+ _IO_strfile sf;
+ struct _IO_wide_data wd;
+ FILE *fp = _IO_strfile_readw (&sf, &wd, string);
+
+ va_start (ap, format);
+ done = __vfwscanf_internal (fp, format, ap, mode_flags);
+ va_end (ap);
+
+ return done;
+}
+strong_alias (___ieee128_isoc99_swscanf, __isoc99_swscanfieee128)
--- /dev/null
+/* Wrapper for __isoc99_vfscanf. IEEE128 version.
+ Copyright (C) 2019 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ 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
+ <https://www.gnu.org/licenses/>. */
+
+#include <libio/libioP.h>
+
+extern int
+___ieee128_isoc99_vfscanf (FILE *fp, const char *format, va_list ap)
+{
+ int mode_flags = SCANF_ISOC99_A | SCANF_LDBL_USES_FLOAT128;
+ return __vfscanf_internal (fp, format, ap, mode_flags);
+}
+strong_alias (___ieee128_isoc99_vfscanf, __isoc99_vfscanfieee128)
--- /dev/null
+/* Wrapper for __isoc99_vfwscanf. IEEE128 version.
+ Copyright (C) 2019 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ 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
+ <https://www.gnu.org/licenses/>. */
+
+#include <libioP.h>
+
+extern int
+___ieee128_isoc99_vfwscanf (FILE *fp, const wchar_t *format, va_list ap)
+{
+ int mode_flags = SCANF_ISOC99_A | SCANF_LDBL_USES_FLOAT128;
+ return __vfwscanf_internal (fp, format, ap, mode_flags);
+}
+strong_alias (___ieee128_isoc99_vfwscanf, __isoc99_vfwscanfieee128)
--- /dev/null
+/* Wrapper for __isoc99_vscanf. IEEE128 version.
+ Copyright (C) 2019 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ 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
+ <https://www.gnu.org/licenses/>. */
+
+#include <libio/libioP.h>
+
+extern int
+___ieee128_isoc99_vscanf (const char *format, va_list ap)
+{
+ int mode_flags = SCANF_ISOC99_A | SCANF_LDBL_USES_FLOAT128;
+ return __vfscanf_internal (stdin, format, ap, mode_flags);
+}
+strong_alias (___ieee128_isoc99_vscanf, __isoc99_vscanfieee128)
--- /dev/null
+/* Wrapper for __isoc99_vsscanf. IEEE128 version.
+ Copyright (C) 2019 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ 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
+ <https://www.gnu.org/licenses/>. */
+
+#include <strfile.h>
+#include <libioP.h>
+
+extern int
+___ieee128_isoc99_vsscanf (const char *string, const char *format, va_list ap)
+{
+ _IO_strfile sf;
+ FILE *fp = _IO_strfile_read (&sf, string);
+ int mode_flags = SCANF_ISOC99_A | SCANF_LDBL_USES_FLOAT128;
+ return __vfscanf_internal (fp, format, ap, mode_flags);
+}
+strong_alias (___ieee128_isoc99_vsscanf, __isoc99_vsscanfieee128)
--- /dev/null
+/* Wrapper for __isoc99_vswscanf. IEEE128 version.
+ Copyright (C) 2019 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ 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
+ <https://www.gnu.org/licenses/>. */
+
+#include <libioP.h>
+#include <wchar.h>
+#include <strfile.h>
+
+extern int
+___ieee128_isoc99_vswscanf (wchar_t *string, const wchar_t *format, va_list ap)
+{
+ _IO_strfile sf;
+ struct _IO_wide_data wd;
+ FILE *fp = _IO_strfile_readw (&sf, &wd, string);
+ int mode_flags = SCANF_ISOC99_A | SCANF_LDBL_USES_FLOAT128;
+ return __vfwscanf_internal (fp, format, ap, mode_flags);
+}
+strong_alias (___ieee128_isoc99_vswscanf, __isoc99_vswscanfieee128)
--- /dev/null
+/* Wrapper for __isoc99_vwscanf. IEEE128 version.
+ Copyright (C) 2019 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ 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
+ <https://www.gnu.org/licenses/>. */
+
+#include <libioP.h>
+
+extern int
+___ieee128_isoc99_vwscanf (const wchar_t *format, va_list ap)
+{
+ int mode_flags = SCANF_ISOC99_A | SCANF_LDBL_USES_FLOAT128;
+ return __vfwscanf_internal (stdin, format, ap, mode_flags);
+}
+strong_alias (___ieee128_isoc99_vwscanf, __isoc99_vwscanfieee128)
--- /dev/null
+/* Wrapper for __isoc99_wscanf. IEEE128 version.
+ Copyright (C) 2019 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ 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
+ <https://www.gnu.org/licenses/>. */
+
+#include <stdarg.h>
+#include <libioP.h>
+
+extern int
+___ieee128_isoc99_wscanf (const wchar_t *format, ...)
+{
+ va_list ap;
+ int done;
+ int mode_flags = SCANF_ISOC99_A | SCANF_LDBL_USES_FLOAT128;
+
+ va_start (ap, format);
+ done = __vfwscanf_internal (stdin, format, ap, mode_flags);
+ va_end (ap);
+
+ return done;
+}
+strong_alias (___ieee128_isoc99_wscanf, __isoc99_wscanfieee128)
--- /dev/null
+#include <test-scanf-ldbl-compat.c>
--- /dev/null
+#include <test-scanf-ldbl-compat.c>
--- /dev/null
+#include <test-wscanf-ldbl-compat.c>
--- /dev/null
+#include <test-wscanf-ldbl-compat.c>
#include <support/check.h>
-#define CLEAR \
+#define CLEAR_VARGS \
va_start (args, format); \
- ld = va_arg (args, long double *); \
- *ld = 0; \
+ ldptr = va_arg (args, long double *); \
+ fptr = va_arg (args, float *); \
+ *ldptr = 0; \
+ *fptr = 0; \
va_end (args);
-#define CLEAR_VALUE value = 0;
-
-#define CHECK \
+#define CHECK_VARGS \
va_start (args, format); \
- ld = va_arg (args, long double *); \
+ ldptr = va_arg (args, long double *); \
+ fptr = va_arg (args, float *); \
va_end (args); \
- if (*ld == -1.0L) \
+ if (*ldptr == -1 && *fptr == -2) \
printf ("OK"); \
else \
- printf ("ERROR (%.60Lf)", *ld); \
+ printf ("ERROR (%Lf %f)", *ldptr, *fptr); \
printf ("\n");
+#define CLEAR_VALUE \
+ ld = 0; \
+ f = 0;
+
#define CHECK_VALUE \
- if (value == -1.0L) \
+ if (ld == -1 && f == -2) \
printf ("OK"); \
else \
- printf ("ERROR (%.60Lf)", value); \
+ printf ("ERROR (%Lf %f)", ld, f); \
printf ("\n");
static void
do_test_call (FILE *stream, CHAR *string, const CHAR *format, ...)
{
- long double value;
- long double *ld;
+ float f;
+ long double ld;
+ float *fptr;
+ long double *ldptr;
va_list args;
CLEAR_VALUE
printf ("fscanf: ");
- FSCANF (stream, format, &value);
+ FSCANF (stream, format, &ld, &f);
CHECK_VALUE
CLEAR_VALUE
printf ("scanf: ");
- SCANF (format, &value);
+ SCANF (format, &ld, &f);
CHECK_VALUE
CLEAR_VALUE
printf ("sscanf: ");
- SSCANF (string, format, &value);
+ SSCANF (string, format, &ld, &f);
CHECK_VALUE
- CLEAR
+ CLEAR_VARGS
printf ("vfscanf: ");
va_start (args, format);
VFSCANF (stream, format, args);
va_end (args);
- CHECK
+ CHECK_VARGS
- CLEAR
+ CLEAR_VARGS
printf ("vscanf: ");
va_start (args, format);
VSCANF (format, args);
va_end (args);
- CHECK
+ CHECK_VARGS
- CLEAR
+ CLEAR_VARGS
printf ("vsscanf: ");
va_start (args, format);
VSSCANF (string, format, args);
va_end (args);
- CHECK
+ CHECK_VARGS
}
static int
do_test (void)
{
CHAR string[256];
+ float f;
long double ld;
/* Scan in decimal notation. */
STRCPY (string,
- L ("-1.0\n")
- L ("-1.0\n") );
- do_test_call (stdin, string, L("%Lf"), &ld);
+ L ("-1.0 -2.0\n")
+ L ("-1.0 -2.0\n") );
+ do_test_call (stdin, string, L("%Lf %f"), &ld, &f);
/* Scan in hexadecimal notation. */
STRCPY (string,
- L ("-0x1.0p+0\n")
- L ("-0x1.0p+0\n") );
- do_test_call (stdin, string, L("%La"), &ld);
+ L ("-0x1.0p+0 -0x2.0p+0\n")
+ L ("-0x1.0p+0 -0x2.0p+0\n") );
+ /* For ISO C99, scan the single-precision value with "%as" to test
+ that __isoc99_*scanf ignores the 's'. For DEPRECATED_SCANF, do not
+ use "%as", because that would try to scan a string and allocate
+ space for it. */
+#if __GLIBC_USE (DEPRECATED_SCANF)
+# define FMT "%La %a"
+#else
+# define FMT "%La %as"
+#endif
+ do_test_call (stdin, string, L(FMT), &ld, &f);
return 0;
}
#include <libio/stdio.h>
#define CHAR char
-#define L(x) x
+#define Lx(x) x
+#define L(x) Lx (x)
#define FSCANF fscanf
#define SSCANF sscanf
#define SCANF scanf
status=0
cat <<'EOF' |
--1.000000000000000000000000000000000000000000000000000000000000
--1.000000000000000000000000000000000000000000000000000000000000
--1.000000000000000000000000000000000000000000000000000000000000
--1.000000000000000000000000000000000000000000000000000000000000
--0x1.000000000000000000000000000000000000000000000000000000000000p+0
--0x1.000000000000000000000000000000000000000000000000000000000000p+0
--0x1.000000000000000000000000000000000000000000000000000000000000p+0
--0x1.000000000000000000000000000000000000000000000000000000000000p+0
+-0x1.0p+0 -0x2.0p+0
+-0x1.0p+0 -0x2.0p+0
+-0x1.0p+0 -0x2.0p+0
+-0x1.0p+0 -0x2.0p+0
+-0x1.0p+0 -0x2.0p+0
+-0x1.0p+0 -0x2.0p+0
+-0x1.0p+0 -0x2.0p+0
+-0x1.0p+0 -0x2.0p+0
EOF
${test_program_prefix} \
${test_program} \
#include <libio/stdio.h>
#define CHAR wchar_t
-#define L(x) L##x
+#define Lx(x) L##x
+#define L(x) Lx (x)
#define FSCANF fwscanf
#define SSCANF swscanf
#define SCANF wscanf