diff options
Diffstat (limited to 'REORG.TODO/stdio-common')
179 files changed, 29525 insertions, 0 deletions
diff --git a/REORG.TODO/stdio-common/Depend b/REORG.TODO/stdio-common/Depend new file mode 100644 index 0000000000..f3e1156a4e --- /dev/null +++ b/REORG.TODO/stdio-common/Depend @@ -0,0 +1 @@ +localedata diff --git a/REORG.TODO/stdio-common/Makefile b/REORG.TODO/stdio-common/Makefile new file mode 100644 index 0000000000..01a6dd0eda --- /dev/null +++ b/REORG.TODO/stdio-common/Makefile @@ -0,0 +1,157 @@ +# Copyright (C) 1991-2017 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 +# <http://www.gnu.org/licenses/>. + +# +# Specific makefile for stdio-common. +# +subdir := stdio-common + +include ../Makeconfig + +headers := stdio_ext.h printf.h bits/printf-ldbl.h bits/stdio_lim.h + +routines := \ + ctermid cuserid \ + _itoa _itowa itoa-digits itoa-udigits itowa-digits \ + vfprintf vprintf printf_fp reg-printf printf-prs printf_fphex \ + reg-modifier reg-type \ + printf_size fprintf printf snprintf sprintf asprintf dprintf \ + vfwprintf vfscanf vfwscanf \ + fscanf scanf sscanf \ + perror psignal \ + tmpfile tmpfile64 tmpnam tmpnam_r tempnam tempname \ + getline getw putw \ + remove rename renameat \ + flockfile ftrylockfile funlockfile \ + isoc99_scanf isoc99_vscanf isoc99_fscanf isoc99_vfscanf isoc99_sscanf \ + isoc99_vsscanf \ + psiginfo + +aux := errlist siglist printf-parsemb printf-parsewc fxprintf + +tests := tstscanf test_rdwr test-popen tstgetln test-fseek \ + temptest tst-fileno test-fwrite tst-ungetc tst-ferror \ + xbug errnobug \ + bug1 bug2 bug3 bug4 bug5 bug6 bug7 bug8 bug9 bug10 bug11 bug12 bug13 \ + tfformat tiformat tllformat tstdiomisc tst-printfsz tst-wc-printf \ + scanf1 scanf2 scanf3 scanf4 scanf5 scanf7 scanf8 scanf9 scanf10 \ + scanf11 scanf12 tst-tmpnam tst-cookie tst-obprintf tst-sscanf \ + tst-swprintf tst-fseek tst-fmemopen test-vfprintf tst-gets \ + tst-perror tst-sprintf tst-rndseek tst-fdopen tst-fphex bug14 \ + tst-popen tst-unlockedio tst-fmemopen2 tst-put-error tst-fgets \ + tst-fwrite bug16 bug17 tst-swscanf tst-sprintf2 bug18 bug18a \ + bug19 bug19a tst-popen2 scanf13 scanf14 scanf15 bug20 bug21 bug22 \ + scanf16 scanf17 tst-setvbuf1 tst-grouping bug23 bug24 \ + bug-vfprintf-nargs tst-long-dbl-fphex tst-fphex-wide tst-sprintf3 \ + bug25 tst-printf-round bug23-2 bug23-3 bug23-4 bug26 tst-fmemopen3 \ + tst-printf-bz18872 tst-vfprintf-width-prec tst-fmemopen4 + +test-srcs = tst-unbputc tst-printf + +ifeq ($(run-built-tests),yes) +tests-special += $(objpfx)tst-unbputc.out $(objpfx)tst-printf.out \ + $(objpfx)tst-printf-bz18872-mem.out \ + $(objpfx)tst-setvbuf1-cmp.out \ + $(objpfx)tst-vfprintf-width-prec-mem.out +generated += tst-printf-bz18872.c tst-printf-bz18872.mtrace \ + tst-printf-bz18872-mem.out \ + tst-vfprintf-width-prec.mtrace tst-vfprintf-width-prec-mem.out +endif + +include ../Rules + +ifeq ($(run-built-tests),yes) +LOCALES := de_DE.ISO-8859-1 de_DE.UTF-8 en_US.ISO-8859-1 ja_JP.EUC-JP +include ../gen-locales.mk + +$(objpfx)bug14.out: $(gen-locales) +$(objpfx)scanf13.out: $(gen-locales) +$(objpfx)test-vfprintf.out: $(gen-locales) +$(objpfx)tst-grouping.out: $(gen-locales) +$(objpfx)tst-sprintf.out: $(gen-locales) +$(objpfx)tst-sscanf.out: $(gen-locales) +$(objpfx)tst-swprintf.out: $(gen-locales) +endif + +tst-printf-bz18872-ENV = MALLOC_TRACE=$(objpfx)tst-printf-bz18872.mtrace +tst-vfprintf-width-prec-ENV = \ + MALLOC_TRACE=$(objpfx)tst-vfprintf-width-prec.mtrace + +$(objpfx)tst-unbputc.out: tst-unbputc.sh $(objpfx)tst-unbputc + $(SHELL) $< $(common-objpfx) '$(test-program-prefix)'; \ + $(evaluate-test) + +$(objpfx)tst-printf.out: tst-printf.sh $(objpfx)tst-printf + $(SHELL) $< $(common-objpfx) '$(test-program-prefix)'; \ + $(evaluate-test) + +# We generate this source because it requires a printf invocation with +# 10K arguments. +$(objpfx)tst-printf-bz18872.c: tst-printf-bz18872.sh + rm -f $@ && $(BASH) $^ > $@.new && mv $@.new $@ + +$(objpfx)tst-%-mem.out: $(objpfx)tst-%.out + $(common-objpfx)malloc/mtrace $(objpfx)tst-$*.mtrace > $@; \ + $(evaluate-test) + +CFLAGS-vfprintf.c = -Wno-uninitialized +CFLAGS-vfwprintf.c = -Wno-uninitialized + +CFLAGS-tmpfile.c = -fexceptions +CFLAGS-tmpfile64.c = -fexceptions +CFLAGS-tempname.c = -fexceptions +CFLAGS-psignal.c = -fexceptions +CFLAGS-vprintf.c = -fexceptions +CFLAGS-cuserid.c = -fexceptions + +CFLAGS-vfprintf.c += -fexceptions +CFLAGS-fprintf.c += -fexceptions +CFLAGS-printf.c += -fexceptions +CFLAGS-vfwprintf.c += -fexceptions +CFLAGS-vfscanf.c += -fexceptions +CFLAGS-vfwscanf.c += -fexceptions +CFLAGS-fscanf.c += -fexceptions +CFLAGS-scanf.c += -fexceptions +CFLAGS-isoc99_vfscanf.c += -fexceptions +CFLAGS-isoc99_vscanf.c += -fexceptions +CFLAGS-isoc99_fscanf.c += -fexceptions +CFLAGS-isoc99_scanf.c += -fexceptions +CFLAGS-errlist.c = $(fno-unit-at-a-time) +CFLAGS-siglist.c = $(fno-unit-at-a-time) + +# The following is a hack since we must compile scanf1{5,7}.c without any +# GNU extension. The latter are needed, though, when internal headers +# are used. So made sure we see the installed headers first. +CFLAGS-scanf15.c = -I../libio -I../stdlib -I../wcsmbs -I../time -I../string \ + -I../wctype +CFLAGS-scanf17.c = -I../libio -I../stdlib -I../wcsmbs -I../time -I../string \ + -I../wctype + +# tst-gets.c tests a deprecated function. +CFLAGS-tst-gets.c += -Wno-deprecated-declarations + +CPPFLAGS += $(libio-mtsafe) + +$(objpfx)tst-setvbuf1.out: /dev/null $(objpfx)tst-setvbuf1 + $(test-program-cmd) > $@ 2>&1; \ + $(evaluate-test) + +$(objpfx)tst-setvbuf1-cmp.out: tst-setvbuf1.expect $(objpfx)tst-setvbuf1.out + cmp $^ > $@; \ + $(evaluate-test) + +$(objpfx)tst-printf-round: $(libm) diff --git a/REORG.TODO/stdio-common/Versions b/REORG.TODO/stdio-common/Versions new file mode 100644 index 0000000000..5016f69c20 --- /dev/null +++ b/REORG.TODO/stdio-common/Versions @@ -0,0 +1,66 @@ +libc { + GLIBC_2.0 { + # global variables + _sys_errlist; _sys_nerr; _sys_siglist; + + # functions used in other libraries + __printf_fp; __vfscanf; + + # variables in normal name space + sys_errlist; sys_nerr; sys_sigabbrev; sys_siglist; + + # a* + asprintf; + + # c* + ctermid; cuserid; + + # d* + dprintf; + + # f* + flockfile; fprintf; fscanf; ftrylockfile; funlockfile; + + # g* + getline; getw; + + # p* + parse_printf_format; perror; printf; putw; + + # r* + register_printf_function; remove; rename; + + # s* + scanf; snprintf; sprintf; sscanf; + + # t* + tempnam; tmpfile; tmpnam; tmpnam_r; + + # v* + vfprintf; vfscanf; vprintf; + } + GLIBC_2.1 { + # p* + printf_size; printf_size_info; + + # t* + tmpfile; tmpfile64; + } + GLIBC_2.4 { + renameat; + } + GLIBC_2.7 { + __isoc99_scanf; __isoc99_vscanf; __isoc99_fscanf; __isoc99_vfscanf; + __isoc99_sscanf; __isoc99_vsscanf; + } + GLIBC_2.10 { + psiginfo; + register_printf_modifier; register_printf_type; register_printf_specifier; + } + GLIBC_PRIVATE { + # global variables + _itoa_lower_digits; + # Used in libcrypt. + __snprintf; + } +} diff --git a/REORG.TODO/stdio-common/_i18n_number.h b/REORG.TODO/stdio-common/_i18n_number.h new file mode 100644 index 0000000000..080e8141b9 --- /dev/null +++ b/REORG.TODO/stdio-common/_i18n_number.h @@ -0,0 +1,117 @@ +/* Copyright (C) 2000-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@gnu.org>, 2000. + + 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 <stdbool.h> +#include <wchar.h> +#include <wctype.h> + +#include "../locale/outdigits.h" +#include "../locale/outdigitswc.h" + +static CHAR_T * +_i18n_number_rewrite (CHAR_T *w, CHAR_T *rear_ptr, CHAR_T *end) +{ +#ifdef COMPILE_WPRINTF +# define decimal NULL +# define thousands NULL +#else + char decimal[MB_LEN_MAX + 1]; + char thousands[MB_LEN_MAX + 1]; +#endif + + /* "to_outpunct" is a map from ASCII decimal point and thousands-sep + to their equivalent in locale. This is defined for locales which + use extra decimal point and thousands-sep. */ + wctrans_t map = __wctrans ("to_outpunct"); + wint_t wdecimal = __towctrans (L'.', map); + wint_t wthousands = __towctrans (L',', map); + +#ifndef COMPILE_WPRINTF + if (__glibc_unlikely (map != NULL)) + { + mbstate_t state; + memset (&state, '\0', sizeof (state)); + + size_t n = __wcrtomb (decimal, wdecimal, &state); + if (n == (size_t) -1) + memcpy (decimal, ".", 2); + else + decimal[n] = '\0'; + + memset (&state, '\0', sizeof (state)); + + n = __wcrtomb (thousands, wthousands, &state); + if (n == (size_t) -1) + memcpy (thousands, ",", 2); + else + thousands[n] = '\0'; + } +#endif + + /* Copy existing string so that nothing gets overwritten. */ + CHAR_T *src; + bool use_alloca = __libc_use_alloca ((rear_ptr - w) * sizeof (CHAR_T)); + if (__builtin_expect (use_alloca, true)) + src = (CHAR_T *) alloca ((rear_ptr - w) * sizeof (CHAR_T)); + else + { + src = (CHAR_T *) malloc ((rear_ptr - w) * sizeof (CHAR_T)); + if (src == NULL) + /* If we cannot allocate the memory don't rewrite the string. + It is better than nothing. */ + return w; + } + + CHAR_T *s = (CHAR_T *) __mempcpy (src, w, + (rear_ptr - w) * sizeof (CHAR_T)); + + w = end; + + /* Process all characters in the string. */ + while (--s >= src) + { + if (*s >= '0' && *s <= '9') + { + if (sizeof (CHAR_T) == 1) + w = (CHAR_T *) outdigit_value ((char *) w, *s - '0'); + else + *--w = (CHAR_T) outdigitwc_value (*s - '0'); + } + else if (__builtin_expect (map == NULL, 1) || (*s != '.' && *s != ',')) + *--w = *s; + else + { + if (sizeof (CHAR_T) == 1) + { + const char *outpunct = *s == '.' ? decimal : thousands; + size_t dlen = strlen (outpunct); + + w -= dlen; + while (dlen-- > 0) + w[dlen] = outpunct[dlen]; + } + else + *--w = *s == '.' ? (CHAR_T) wdecimal : (CHAR_T) wthousands; + } + } + + if (! use_alloca) + free (src); + + return w; +} diff --git a/REORG.TODO/stdio-common/_itoa.c b/REORG.TODO/stdio-common/_itoa.c new file mode 100644 index 0000000000..7b369ab49b --- /dev/null +++ b/REORG.TODO/stdio-common/_itoa.c @@ -0,0 +1,479 @@ +/* Internal function for converting integers to ASCII. + Copyright (C) 1994-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Torbjorn Granlund <tege@matematik.su.se> + and Ulrich Drepper <drepper@gnu.org>. + + 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 <gmp-mparam.h> +#include <gmp.h> +#include <limits.h> +#include <stdlib/gmp-impl.h> +#include <stdlib/longlong.h> + +#include <_itoa.h> + + +/* Canonize environment. For some architectures not all values might + be defined in the GMP header files. */ +#ifndef UMUL_TIME +# define UMUL_TIME 1 +#endif +#ifndef UDIV_TIME +# define UDIV_TIME 3 +#endif + +/* Control memory layout. */ +#ifdef PACK +# undef PACK +# define PACK __attribute__ ((packed)) +#else +# define PACK +#endif + + +/* Declare local types. */ +struct base_table_t +{ +#if (UDIV_TIME > 2 * UMUL_TIME) + mp_limb_t base_multiplier; +#endif + char flag; + char post_shift; +#if BITS_PER_MP_LIMB == 32 + struct + { + char normalization_steps; + char ndigits; + mp_limb_t base PACK; +#if UDIV_TIME > 2 * UMUL_TIME + mp_limb_t base_ninv PACK; +#endif + } big; +#endif +}; + +/* To reduce the memory needed we include some fields of the tables + only conditionally. */ +#if UDIV_TIME > 2 * UMUL_TIME +# define SEL1(X) X, +# define SEL2(X) ,X +#else +# define SEL1(X) +# define SEL2(X) +#endif + + +/* We do not compile _itoa if we always can use _itoa_word. */ +#if _ITOA_NEEDED +/* Local variables. */ +const struct base_table_t _itoa_base_table[] attribute_hidden = +{ +# if BITS_PER_MP_LIMB == 64 + /* 2 */ {SEL1(0ull) 1, 1}, + /* 3 */ {SEL1(0xaaaaaaaaaaaaaaabull) 0, 1}, + /* 4 */ {SEL1(0ull) 1, 2}, + /* 5 */ {SEL1(0xcccccccccccccccdull) 0, 2}, + /* 6 */ {SEL1(0xaaaaaaaaaaaaaaabull) 0, 2}, + /* 7 */ {SEL1(0x2492492492492493ull) 1, 3}, + /* 8 */ {SEL1(0ull) 1, 3}, + /* 9 */ {SEL1(0xe38e38e38e38e38full) 0, 3}, + /* 10 */ {SEL1(0xcccccccccccccccdull) 0, 3}, + /* 11 */ {SEL1(0x2e8ba2e8ba2e8ba3ull) 0, 1}, + /* 12 */ {SEL1(0xaaaaaaaaaaaaaaabull) 0, 3}, + /* 13 */ {SEL1(0x4ec4ec4ec4ec4ec5ull) 0, 2}, + /* 14 */ {SEL1(0x2492492492492493ull) 1, 4}, + /* 15 */ {SEL1(0x8888888888888889ull) 0, 3}, + /* 16 */ {SEL1(0ull) 1, 4}, + /* 17 */ {SEL1(0xf0f0f0f0f0f0f0f1ull) 0, 4}, + /* 18 */ {SEL1(0xe38e38e38e38e38full) 0, 4}, + /* 19 */ {SEL1(0xd79435e50d79435full) 0, 4}, + /* 20 */ {SEL1(0xcccccccccccccccdull) 0, 4}, + /* 21 */ {SEL1(0x8618618618618619ull) 1, 5}, + /* 22 */ {SEL1(0x2e8ba2e8ba2e8ba3ull) 0, 2}, + /* 23 */ {SEL1(0x642c8590b21642c9ull) 1, 5}, + /* 24 */ {SEL1(0xaaaaaaaaaaaaaaabull) 0, 4}, + /* 25 */ {SEL1(0x47ae147ae147ae15ull) 1, 5}, + /* 26 */ {SEL1(0x4ec4ec4ec4ec4ec5ull) 0, 3}, + /* 27 */ {SEL1(0x97b425ed097b425full) 0, 4}, + /* 28 */ {SEL1(0x2492492492492493ull) 1, 5}, + /* 29 */ {SEL1(0x1a7b9611a7b9611bull) 1, 5}, + /* 30 */ {SEL1(0x8888888888888889ull) 0, 4}, + /* 31 */ {SEL1(0x0842108421084211ull) 1, 5}, + /* 32 */ {SEL1(0ull) 1, 5}, + /* 33 */ {SEL1(0x0f83e0f83e0f83e1ull) 0, 1}, + /* 34 */ {SEL1(0xf0f0f0f0f0f0f0f1ull) 0, 5}, + /* 35 */ {SEL1(0xea0ea0ea0ea0ea0full) 0, 5}, + /* 36 */ {SEL1(0xe38e38e38e38e38full) 0, 5} +# endif +# if BITS_PER_MP_LIMB == 32 + /* 2 */ {SEL1(0ul) 1, 1, {0, 31, 0x80000000ul SEL2(0xfffffffful)}}, + /* 3 */ {SEL1(0xaaaaaaabul) 0, 1, {0, 20, 0xcfd41b91ul SEL2(0x3b563c24ul)}}, + /* 4 */ {SEL1(0ul) 1, 2, {1, 15, 0x40000000ul SEL2(0xfffffffful)}}, + /* 5 */ {SEL1(0xcccccccdul) 0, 2, {1, 13, 0x48c27395ul SEL2(0xc25c2684ul)}}, + /* 6 */ {SEL1(0xaaaaaaabul) 0, 2, {0, 12, 0x81bf1000ul SEL2(0xf91bd1b6ul)}}, + /* 7 */ {SEL1(0x24924925ul) 1, 3, {1, 11, 0x75db9c97ul SEL2(0x1607a2cbul)}}, + /* 8 */ {SEL1(0ul) 1, 3, {1, 10, 0x40000000ul SEL2(0xfffffffful)}}, + /* 9 */ {SEL1(0x38e38e39ul) 0, 1, {0, 10, 0xcfd41b91ul SEL2(0x3b563c24ul)}}, + /* 10 */ {SEL1(0xcccccccdul) 0, 3, {2, 9, 0x3b9aca00ul SEL2(0x12e0be82ul)}}, + /* 11 */ {SEL1(0xba2e8ba3ul) 0, 3, {0, 9, 0x8c8b6d2bul SEL2(0xd24cde04ul)}}, + /* 12 */ {SEL1(0xaaaaaaabul) 0, 3, {3, 8, 0x19a10000ul SEL2(0x3fa39ab5ul)}}, + /* 13 */ {SEL1(0x4ec4ec4ful) 0, 2, {2, 8, 0x309f1021ul SEL2(0x50f8ac5ful)}}, + /* 14 */ {SEL1(0x24924925ul) 1, 4, {1, 8, 0x57f6c100ul SEL2(0x74843b1eul)}}, + /* 15 */ {SEL1(0x88888889ul) 0, 3, {0, 8, 0x98c29b81ul SEL2(0xad0326c2ul)}}, + /* 16 */ {SEL1(0ul) 1, 4, {3, 7, 0x10000000ul SEL2(0xfffffffful)}}, + /* 17 */ {SEL1(0xf0f0f0f1ul) 0, 4, {3, 7, 0x18754571ul SEL2(0x4ef0b6bdul)}}, + /* 18 */ {SEL1(0x38e38e39ul) 0, 2, {2, 7, 0x247dbc80ul SEL2(0xc0fc48a1ul)}}, + /* 19 */ {SEL1(0xaf286bcbul) 1, 5, {2, 7, 0x3547667bul SEL2(0x33838942ul)}}, + /* 20 */ {SEL1(0xcccccccdul) 0, 4, {1, 7, 0x4c4b4000ul SEL2(0xad7f29abul)}}, + /* 21 */ {SEL1(0x86186187ul) 1, 5, {1, 7, 0x6b5a6e1dul SEL2(0x313c3d15ul)}}, + /* 22 */ {SEL1(0xba2e8ba3ul) 0, 4, {0, 7, 0x94ace180ul SEL2(0xb8cca9e0ul)}}, + /* 23 */ {SEL1(0xb21642c9ul) 0, 4, {0, 7, 0xcaf18367ul SEL2(0x42ed6de9ul)}}, + /* 24 */ {SEL1(0xaaaaaaabul) 0, 4, {4, 6, 0x0b640000ul SEL2(0x67980e0bul)}}, + /* 25 */ {SEL1(0x51eb851ful) 0, 3, {4, 6, 0x0e8d4a51ul SEL2(0x19799812ul)}}, + /* 26 */ {SEL1(0x4ec4ec4ful) 0, 3, {3, 6, 0x1269ae40ul SEL2(0xbce85396ul)}}, + /* 27 */ {SEL1(0x2f684bdbul) 1, 5, {3, 6, 0x17179149ul SEL2(0x62c103a9ul)}}, + /* 28 */ {SEL1(0x24924925ul) 1, 5, {3, 6, 0x1cb91000ul SEL2(0x1d353d43ul)}}, + /* 29 */ {SEL1(0x8d3dcb09ul) 0, 4, {2, 6, 0x23744899ul SEL2(0xce1deceaul)}}, + /* 30 */ {SEL1(0x88888889ul) 0, 4, {2, 6, 0x2b73a840ul SEL2(0x790fc511ul)}}, + /* 31 */ {SEL1(0x08421085ul) 1, 5, {2, 6, 0x34e63b41ul SEL2(0x35b865a0ul)}}, + /* 32 */ {SEL1(0ul) 1, 5, {1, 6, 0x40000000ul SEL2(0xfffffffful)}}, + /* 33 */ {SEL1(0x3e0f83e1ul) 0, 3, {1, 6, 0x4cfa3cc1ul SEL2(0xa9aed1b3ul)}}, + /* 34 */ {SEL1(0xf0f0f0f1ul) 0, 5, {1, 6, 0x5c13d840ul SEL2(0x63dfc229ul)}}, + /* 35 */ {SEL1(0xd41d41d5ul) 1, 6, {1, 6, 0x6d91b519ul SEL2(0x2b0fee30ul)}}, + /* 36 */ {SEL1(0x38e38e39ul) 0, 3, {0, 6, 0x81bf1000ul SEL2(0xf91bd1b6ul)}} +# endif +}; +#endif + +char * +_itoa_word (_ITOA_WORD_TYPE value, char *buflim, + unsigned int base, int upper_case) +{ + const char *digits = (upper_case + ? _itoa_upper_digits + : _itoa_lower_digits); + + switch (base) + { +#define SPECIAL(Base) \ + case Base: \ + do \ + *--buflim = digits[value % Base]; \ + while ((value /= Base) != 0); \ + break + + SPECIAL (10); + SPECIAL (16); + SPECIAL (8); + default: + do + *--buflim = digits[value % base]; + while ((value /= base) != 0); + } + return buflim; +} +#undef SPECIAL + + +#if _ITOA_NEEDED +char * +_itoa (unsigned long long int value, char *buflim, unsigned int base, + int upper_case) +{ + const char *digits = (upper_case + ? _itoa_upper_digits + : _itoa_lower_digits); + const struct base_table_t *brec = &_itoa_base_table[base - 2]; + + switch (base) + { +# define RUN_2N(BITS) \ + do \ + { \ + /* `unsigned long long int' always has 64 bits. */ \ + mp_limb_t work_hi = value >> (64 - BITS_PER_MP_LIMB); \ + \ + if (BITS_PER_MP_LIMB == 32) \ + { \ + if (work_hi != 0) \ + { \ + mp_limb_t work_lo; \ + int cnt; \ + \ + work_lo = value & 0xfffffffful; \ + for (cnt = BITS_PER_MP_LIMB / BITS; cnt > 0; --cnt) \ + { \ + *--buflim = digits[work_lo & ((1ul << BITS) - 1)]; \ + work_lo >>= BITS; \ + } \ + if (BITS_PER_MP_LIMB % BITS != 0) \ + { \ + work_lo \ + |= ((work_hi \ + & ((1 << (BITS - BITS_PER_MP_LIMB%BITS)) \ + - 1)) \ + << BITS_PER_MP_LIMB % BITS); \ + work_hi >>= BITS - BITS_PER_MP_LIMB % BITS; \ + if (work_hi == 0) \ + work_hi = work_lo; \ + else \ + *--buflim = digits[work_lo]; \ + } \ + } \ + else \ + work_hi = value & 0xfffffffful; \ + } \ + do \ + { \ + *--buflim = digits[work_hi & ((1 << BITS) - 1)]; \ + work_hi >>= BITS; \ + } \ + while (work_hi != 0); \ + } \ + while (0) + case 8: + RUN_2N (3); + break; + + case 16: + RUN_2N (4); + break; + + default: + { + char *bufend = buflim; +# if BITS_PER_MP_LIMB == 64 + mp_limb_t base_multiplier = brec->base_multiplier; + if (brec->flag) + while (value != 0) + { + mp_limb_t quo, rem, x; + mp_limb_t dummy __attribute__ ((unused)); + + umul_ppmm (x, dummy, value, base_multiplier); + quo = (x + ((value - x) >> 1)) >> (brec->post_shift - 1); + rem = value - quo * base; + *--buflim = digits[rem]; + value = quo; + } + else + while (value != 0) + { + mp_limb_t quo, rem, x; + mp_limb_t dummy __attribute__ ((unused)); + + umul_ppmm (x, dummy, value, base_multiplier); + quo = x >> brec->post_shift; + rem = value - quo * base; + *--buflim = digits[rem]; + value = quo; + } +# endif +# if BITS_PER_MP_LIMB == 32 + mp_limb_t t[3]; + int n; + + /* First convert x0 to 1-3 words in base s->big.base. + Optimize for frequent cases of 32 bit numbers. */ + if ((mp_limb_t) (value >> 32) >= 1) + { +# if UDIV_TIME > 2 * UMUL_TIME || UDIV_NEEDS_NORMALIZATION + int big_normalization_steps = brec->big.normalization_steps; + mp_limb_t big_base_norm + = brec->big.base << big_normalization_steps; +# endif + if ((mp_limb_t) (value >> 32) >= brec->big.base) + { + mp_limb_t x1hi, x1lo, r; + /* If you want to optimize this, take advantage of + that the quotient in the first udiv_qrnnd will + always be very small. It might be faster just to + subtract in a tight loop. */ + +# if UDIV_TIME > 2 * UMUL_TIME + mp_limb_t x, xh, xl; + + if (big_normalization_steps == 0) + xh = 0; + else + xh = (mp_limb_t) (value >> (64 - big_normalization_steps)); + xl = (mp_limb_t) (value >> (32 - big_normalization_steps)); + udiv_qrnnd_preinv (x1hi, r, xh, xl, big_base_norm, + brec->big.base_ninv); + + xl = ((mp_limb_t) value) << big_normalization_steps; + udiv_qrnnd_preinv (x1lo, x, r, xl, big_base_norm, + brec->big.base_ninv); + t[2] = x >> big_normalization_steps; + + if (big_normalization_steps == 0) + xh = x1hi; + else + xh = ((x1hi << big_normalization_steps) + | (x1lo >> (32 - big_normalization_steps))); + xl = x1lo << big_normalization_steps; + udiv_qrnnd_preinv (t[0], x, xh, xl, big_base_norm, + brec->big.base_ninv); + t[1] = x >> big_normalization_steps; +# elif UDIV_NEEDS_NORMALIZATION + mp_limb_t x, xh, xl; + + if (big_normalization_steps == 0) + xh = 0; + else + xh = (mp_limb_t) (value >> 64 - big_normalization_steps); + xl = (mp_limb_t) (value >> 32 - big_normalization_steps); + udiv_qrnnd (x1hi, r, xh, xl, big_base_norm); + + xl = ((mp_limb_t) value) << big_normalization_steps; + udiv_qrnnd (x1lo, x, r, xl, big_base_norm); + t[2] = x >> big_normalization_steps; + + if (big_normalization_steps == 0) + xh = x1hi; + else + xh = ((x1hi << big_normalization_steps) + | (x1lo >> 32 - big_normalization_steps)); + xl = x1lo << big_normalization_steps; + udiv_qrnnd (t[0], x, xh, xl, big_base_norm); + t[1] = x >> big_normalization_steps; +# else + udiv_qrnnd (x1hi, r, 0, (mp_limb_t) (value >> 32), + brec->big.base); + udiv_qrnnd (x1lo, t[2], r, (mp_limb_t) value, brec->big.base); + udiv_qrnnd (t[0], t[1], x1hi, x1lo, brec->big.base); +# endif + n = 3; + } + else + { +# if UDIV_TIME > 2 * UMUL_TIME + mp_limb_t x; + + value <<= brec->big.normalization_steps; + udiv_qrnnd_preinv (t[0], x, (mp_limb_t) (value >> 32), + (mp_limb_t) value, big_base_norm, + brec->big.base_ninv); + t[1] = x >> brec->big.normalization_steps; +# elif UDIV_NEEDS_NORMALIZATION + mp_limb_t x; + + value <<= big_normalization_steps; + udiv_qrnnd (t[0], x, (mp_limb_t) (value >> 32), + (mp_limb_t) value, big_base_norm); + t[1] = x >> big_normalization_steps; +# else + udiv_qrnnd (t[0], t[1], (mp_limb_t) (value >> 32), + (mp_limb_t) value, brec->big.base); +# endif + n = 2; + } + } + else + { + t[0] = value; + n = 1; + } + + /* Convert the 1-3 words in t[], word by word, to ASCII. */ + do + { + mp_limb_t ti = t[--n]; + int ndig_for_this_limb = 0; + +# if UDIV_TIME > 2 * UMUL_TIME + mp_limb_t base_multiplier = brec->base_multiplier; + if (brec->flag) + while (ti != 0) + { + mp_limb_t quo, rem, x; + mp_limb_t dummy __attribute__ ((unused)); + + umul_ppmm (x, dummy, ti, base_multiplier); + quo = (x + ((ti - x) >> 1)) >> (brec->post_shift - 1); + rem = ti - quo * base; + *--buflim = digits[rem]; + ti = quo; + ++ndig_for_this_limb; + } + else + while (ti != 0) + { + mp_limb_t quo, rem, x; + mp_limb_t dummy __attribute__ ((unused)); + + umul_ppmm (x, dummy, ti, base_multiplier); + quo = x >> brec->post_shift; + rem = ti - quo * base; + *--buflim = digits[rem]; + ti = quo; + ++ndig_for_this_limb; + } +# else + while (ti != 0) + { + mp_limb_t quo, rem; + + quo = ti / base; + rem = ti % base; + *--buflim = digits[rem]; + ti = quo; + ++ndig_for_this_limb; + } +# endif + /* If this wasn't the most significant word, pad with zeros. */ + if (n != 0) + while (ndig_for_this_limb < brec->big.ndigits) + { + *--buflim = '0'; + ++ndig_for_this_limb; + } + } + while (n != 0); +# endif + if (buflim == bufend) + *--buflim = '0'; + } + break; + } + + return buflim; +} +#endif + +char * +_fitoa_word (_ITOA_WORD_TYPE value, char *buf, unsigned int base, + int upper_case) +{ + char tmpbuf[sizeof (value) * 4]; /* Worst case length: base 2. */ + char *cp = _itoa_word (value, tmpbuf + sizeof (value) * 4, base, upper_case); + while (cp < tmpbuf + sizeof (value) * 4) + *buf++ = *cp++; + return buf; +} + +#if _ITOA_NEEDED +char * +_fitoa (unsigned long long value, char *buf, unsigned int base, int upper_case) +{ + char tmpbuf[sizeof (value) * 4]; /* Worst case length: base 2. */ + char *cp = _itoa (value, tmpbuf + sizeof (value) * 4, base, upper_case); + while (cp < tmpbuf + sizeof (value) * 4) + *buf++ = *cp++; + return buf; +} +#endif diff --git a/REORG.TODO/stdio-common/_itowa.c b/REORG.TODO/stdio-common/_itowa.c new file mode 100644 index 0000000000..16d27d0e4a --- /dev/null +++ b/REORG.TODO/stdio-common/_itowa.c @@ -0,0 +1,349 @@ +/* Internal function for converting integers to ASCII. + Copyright (C) 1994-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Torbjorn Granlund <tege@matematik.su.se> + and Ulrich Drepper <drepper@gnu.org>. + + 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 <gmp-mparam.h> +#include <gmp.h> +#include <limits.h> +#include <stdlib/gmp-impl.h> +#include <stdlib/longlong.h> + +#include <_itowa.h> + + +/* Canonize environment. For some architectures not all values might + be defined in the GMP header files. */ +#ifndef UMUL_TIME +# define UMUL_TIME 1 +#endif +#ifndef UDIV_TIME +# define UDIV_TIME 3 +#endif + +/* Control memory layout. */ +#ifdef PACK +# undef PACK +# define PACK __attribute__ ((packed)) +#else +# define PACK +#endif + + +/* Declare local types. */ +struct base_table_t +{ +#if (UDIV_TIME > 2 * UMUL_TIME) + mp_limb_t base_multiplier; +#endif + char flag; + char post_shift; +#if BITS_PER_MP_LIMB == 32 + struct + { + char normalization_steps; + char ndigits; + mp_limb_t base PACK; +#if UDIV_TIME > 2 * UMUL_TIME + mp_limb_t base_ninv PACK; +#endif + } big; +#endif +}; + +/* To reduce the memory needed we include some fields of the tables + only conditionally. */ +#if UDIV_TIME > 2 * UMUL_TIME +# define SEL1(X) X, +# define SEL2(X) ,X +#else +# define SEL1(X) +# define SEL2(X) +#endif + +/* Factor table for the different bases. */ +extern const struct base_table_t _itoa_base_table[] attribute_hidden; + +/* Lower-case digits. */ +extern const wchar_t _itowa_lower_digits[] attribute_hidden; +/* Upper-case digits. */ +extern const wchar_t _itowa_upper_digits[] attribute_hidden; + + +#if _ITOA_NEEDED +wchar_t * +_itowa (unsigned long long int value, wchar_t *buflim, unsigned int base, + int upper_case) +{ + const wchar_t *digits = (upper_case + ? _itowa_upper_digits : _itowa_lower_digits); + wchar_t *bp = buflim; + const struct base_table_t *brec = &_itoa_base_table[base - 2]; + + switch (base) + { +# define RUN_2N(BITS) \ + do \ + { \ + /* `unsigned long long int' always has 64 bits. */ \ + mp_limb_t work_hi = value >> (64 - BITS_PER_MP_LIMB); \ + \ + if (BITS_PER_MP_LIMB == 32) \ + { \ + if (work_hi != 0) \ + { \ + mp_limb_t work_lo; \ + int cnt; \ + \ + work_lo = value & 0xfffffffful; \ + for (cnt = BITS_PER_MP_LIMB / BITS; cnt > 0; --cnt) \ + { \ + *--bp = digits[work_lo & ((1ul << BITS) - 1)]; \ + work_lo >>= BITS; \ + } \ + if (BITS_PER_MP_LIMB % BITS != 0) \ + { \ + work_lo \ + |= ((work_hi \ + & ((1 << (BITS - BITS_PER_MP_LIMB%BITS)) \ + - 1)) \ + << BITS_PER_MP_LIMB % BITS); \ + work_hi >>= BITS - BITS_PER_MP_LIMB % BITS; \ + if (work_hi == 0) \ + work_hi = work_lo; \ + else \ + *--bp = digits[work_lo]; \ + } \ + } \ + else \ + work_hi = value & 0xfffffffful; \ + } \ + do \ + { \ + *--bp = digits[work_hi & ((1 << BITS) - 1)]; \ + work_hi >>= BITS; \ + } \ + while (work_hi != 0); \ + } \ + while (0) + case 8: + RUN_2N (3); + break; + + case 16: + RUN_2N (4); + break; + + default: + { +# if BITS_PER_MP_LIMB == 64 + mp_limb_t base_multiplier = brec->base_multiplier; + if (brec->flag) + while (value != 0) + { + mp_limb_t quo, rem, x; + mp_limb_t dummy __attribute__ ((unused)); + + umul_ppmm (x, dummy, value, base_multiplier); + quo = (x + ((value - x) >> 1)) >> (brec->post_shift - 1); + rem = value - quo * base; + *--bp = digits[rem]; + value = quo; + } + else + while (value != 0) + { + mp_limb_t quo, rem, x; + mp_limb_t dummy __attribute__ ((unused)); + + umul_ppmm (x, dummy, value, base_multiplier); + quo = x >> brec->post_shift; + rem = value - quo * base; + *--bp = digits[rem]; + value = quo; + } +# endif +# if BITS_PER_MP_LIMB == 32 + mp_limb_t t[3]; + int n; + + /* First convert x0 to 1-3 words in base s->big.base. + Optimize for frequent cases of 32 bit numbers. */ + if ((mp_limb_t) (value >> 32) >= 1) + { +# if UDIV_TIME > 2 * UMUL_TIME || UDIV_NEEDS_NORMALIZATION + int big_normalization_steps = brec->big.normalization_steps; + mp_limb_t big_base_norm + = brec->big.base << big_normalization_steps; +# endif + if ((mp_limb_t) (value >> 32) >= brec->big.base) + { + mp_limb_t x1hi, x1lo, r; + /* If you want to optimize this, take advantage of + that the quotient in the first udiv_qrnnd will + always be very small. It might be faster just to + subtract in a tight loop. */ + +# if UDIV_TIME > 2 * UMUL_TIME + mp_limb_t x, xh, xl; + + if (big_normalization_steps == 0) + xh = 0; + else + xh = (mp_limb_t) (value >> (64 - big_normalization_steps)); + xl = (mp_limb_t) (value >> (32 - big_normalization_steps)); + udiv_qrnnd_preinv (x1hi, r, xh, xl, big_base_norm, + brec->big.base_ninv); + + xl = ((mp_limb_t) value) << big_normalization_steps; + udiv_qrnnd_preinv (x1lo, x, r, xl, big_base_norm, + brec->big.base_ninv); + t[2] = x >> big_normalization_steps; + + if (big_normalization_steps == 0) + xh = x1hi; + else + xh = ((x1hi << big_normalization_steps) + | (x1lo >> (32 - big_normalization_steps))); + xl = x1lo << big_normalization_steps; + udiv_qrnnd_preinv (t[0], x, xh, xl, big_base_norm, + brec->big.base_ninv); + t[1] = x >> big_normalization_steps; +# elif UDIV_NEEDS_NORMALIZATION + mp_limb_t x, xh, xl; + + if (big_normalization_steps == 0) + xh = 0; + else + xh = (mp_limb_t) (value >> 64 - big_normalization_steps); + xl = (mp_limb_t) (value >> 32 - big_normalization_steps); + udiv_qrnnd (x1hi, r, xh, xl, big_base_norm); + + xl = ((mp_limb_t) value) << big_normalization_steps; + udiv_qrnnd (x1lo, x, r, xl, big_base_norm); + t[2] = x >> big_normalization_steps; + + if (big_normalization_steps == 0) + xh = x1hi; + else + xh = ((x1hi << big_normalization_steps) + | (x1lo >> 32 - big_normalization_steps)); + xl = x1lo << big_normalization_steps; + udiv_qrnnd (t[0], x, xh, xl, big_base_norm); + t[1] = x >> big_normalization_steps; +# else + udiv_qrnnd (x1hi, r, 0, (mp_limb_t) (value >> 32), + brec->big.base); + udiv_qrnnd (x1lo, t[2], r, (mp_limb_t) value, brec->big.base); + udiv_qrnnd (t[0], t[1], x1hi, x1lo, brec->big.base); +# endif + n = 3; + } + else + { +# if UDIV_TIME > 2 * UMUL_TIME + mp_limb_t x; + + value <<= brec->big.normalization_steps; + udiv_qrnnd_preinv (t[0], x, (mp_limb_t) (value >> 32), + (mp_limb_t) value, big_base_norm, + brec->big.base_ninv); + t[1] = x >> brec->big.normalization_steps; +# elif UDIV_NEEDS_NORMALIZATION + mp_limb_t x; + + value <<= big_normalization_steps; + udiv_qrnnd (t[0], x, (mp_limb_t) (value >> 32), + (mp_limb_t) value, big_base_norm); + t[1] = x >> big_normalization_steps; +# else + udiv_qrnnd (t[0], t[1], (mp_limb_t) (value >> 32), + (mp_limb_t) value, brec->big.base); +# endif + n = 2; + } + } + else + { + t[0] = value; + n = 1; + } + + /* Convert the 1-3 words in t[], word by word, to ASCII. */ + do + { + mp_limb_t ti = t[--n]; + int ndig_for_this_limb = 0; + +# if UDIV_TIME > 2 * UMUL_TIME + mp_limb_t base_multiplier = brec->base_multiplier; + if (brec->flag) + while (ti != 0) + { + mp_limb_t quo, rem, x; + mp_limb_t dummy __attribute__ ((unused)); + + umul_ppmm (x, dummy, ti, base_multiplier); + quo = (x + ((ti - x) >> 1)) >> (brec->post_shift - 1); + rem = ti - quo * base; + *--bp = digits[rem]; + ti = quo; + ++ndig_for_this_limb; + } + else + while (ti != 0) + { + mp_limb_t quo, rem, x; + mp_limb_t dummy __attribute__ ((unused)); + + umul_ppmm (x, dummy, ti, base_multiplier); + quo = x >> brec->post_shift; + rem = ti - quo * base; + *--bp = digits[rem]; + ti = quo; + ++ndig_for_this_limb; + } +# else + while (ti != 0) + { + mp_limb_t quo, rem; + + quo = ti / base; + rem = ti % base; + *--bp = digits[rem]; + ti = quo; + ++ndig_for_this_limb; + } +# endif + /* If this wasn't the most significant word, pad with zeros. */ + if (n != 0) + while (ndig_for_this_limb < brec->big.ndigits) + { + *--bp = '0'; + ++ndig_for_this_limb; + } + } + while (n != 0); +# endif + } + break; + } + + return bp; +} +#endif diff --git a/REORG.TODO/stdio-common/_itowa.h b/REORG.TODO/stdio-common/_itowa.h new file mode 100644 index 0000000000..985d5474a5 --- /dev/null +++ b/REORG.TODO/stdio-common/_itowa.h @@ -0,0 +1,71 @@ +/* Internal function for converting integers to ASCII. + Copyright (C) 1994-2017 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 + <http://www.gnu.org/licenses/>. */ + +#ifndef _ITOWA_H +#define _ITOWA_H 1 +#include <features.h> +#include <wchar.h> +#include <_itoa.h> + +/* Convert VALUE into ASCII in base BASE (2..36). + Write backwards starting the character just before BUFLIM. + Return the address of the first (left-to-right) character in the number. + Use upper case letters iff UPPER_CASE is nonzero. */ + +extern wchar_t *_itowa (unsigned long long int value, wchar_t *buflim, + unsigned int base, int upper_case); + +static inline wchar_t * +__attribute__ ((unused, always_inline)) +_itowa_word (_ITOA_WORD_TYPE value, wchar_t *buflim, + unsigned int base, int upper_case) +{ + extern const wchar_t _itowa_upper_digits[] attribute_hidden; + extern const wchar_t _itowa_lower_digits[] attribute_hidden; + const wchar_t *digits = (upper_case + ? _itowa_upper_digits : _itowa_lower_digits); + wchar_t *bp = buflim; + + switch (base) + { +#define SPECIAL(Base) \ + case Base: \ + do \ + *--bp = digits[value % Base]; \ + while ((value /= Base) != 0); \ + break + + SPECIAL (10); + SPECIAL (16); + SPECIAL (8); + default: + do + *--bp = digits[value % base]; + while ((value /= base) != 0); + } + return bp; +} +#undef SPECIAL + +#if !_ITOA_NEEDED +/* No need for special long long versions. */ +# define _itowa(value, buf, base, upper_case) \ + _itowa_word (value, buf, base, upper_case) +#endif + +#endif /* itowa.h */ diff --git a/REORG.TODO/stdio-common/asprintf.c b/REORG.TODO/stdio-common/asprintf.c new file mode 100644 index 0000000000..a61cf64740 --- /dev/null +++ b/REORG.TODO/stdio-common/asprintf.c @@ -0,0 +1,43 @@ +/* Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <stdarg.h> +#include <stdio.h> + +#include <libioP.h> +#define vasprintf(s, f, a) _IO_vasprintf (s, f, a) +#undef __asprintf + +/* Write formatted output from FORMAT to a string which is + allocated with malloc and stored in *STRING_PTR. */ +/* VARARGS2 */ +int +___asprintf (char **string_ptr, const char *format, ...) +{ + va_list arg; + int done; + + va_start (arg, format); + done = vasprintf (string_ptr, format, arg); + va_end (arg); + + return done; +} +ldbl_hidden_def (___asprintf, __asprintf) + +ldbl_strong_alias (___asprintf, __asprintf) +ldbl_weak_alias (___asprintf, asprintf) diff --git a/REORG.TODO/stdio-common/bits/printf-ldbl.h b/REORG.TODO/stdio-common/bits/printf-ldbl.h new file mode 100644 index 0000000000..54008f5467 --- /dev/null +++ b/REORG.TODO/stdio-common/bits/printf-ldbl.h @@ -0,0 +1,23 @@ +/* -mlong-double-64 compatibility mode for <printf.h> functions. + Copyright (C) 2006-2017 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 + <http://www.gnu.org/licenses/>. */ + +#ifndef _PRINTF_H +# error "Never include <bits/printf-ldbl.h> directly; use <printf.h> instead." +#endif + +__LDBL_REDIR_DECL (printf_size) diff --git a/REORG.TODO/stdio-common/bug-vfprintf-nargs.c b/REORG.TODO/stdio-common/bug-vfprintf-nargs.c new file mode 100644 index 0000000000..e1b111248c --- /dev/null +++ b/REORG.TODO/stdio-common/bug-vfprintf-nargs.c @@ -0,0 +1,78 @@ +/* Test for vfprintf nargs allocation overflow (BZ #13656). + Copyright (C) 2012-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Kees Cook <keescook@chromium.org>, 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 <stdio.h> +#include <stdlib.h> +#include <stdint.h> +#include <unistd.h> +#include <inttypes.h> +#include <string.h> +#include <signal.h> + +static int +format_failed (const char *fmt, const char *expected) +{ + char output[80]; + + printf ("%s : ", fmt); + + memset (output, 0, sizeof output); + /* Having sprintf itself detect a failure is good. */ + if (sprintf (output, fmt, 1, 2, 3, "test") > 0 + && strcmp (output, expected) != 0) + { + printf ("FAIL (output '%s' != expected '%s')\n", output, expected); + return 1; + } + puts ("ok"); + return 0; +} + +static int +do_test (void) +{ + int rc = 0; + char buf[64]; + + /* Regular positionals work. */ + if (format_failed ("%1$d", "1") != 0) + rc = 1; + + /* Regular width positionals work. */ + if (format_failed ("%1$*2$d", " 1") != 0) + rc = 1; + + /* Positional arguments are constructed via read_int, so nargs can only + overflow on 32-bit systems. On 64-bit systems, it will attempt to + allocate a giant amount of memory and possibly crash, which is the + expected situation. Since the 64-bit behavior is arch-specific, only + test this on 32-bit systems. */ + if (sizeof (long int) == 4) + { + sprintf (buf, "%%1$d %%%" PRIdPTR "$d", + (intptr_t) (UINT32_MAX / sizeof (int))); + if (format_failed (buf, "1 %$d") != 0) + rc = 1; + } + + return rc; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/bug1.c b/REORG.TODO/stdio-common/bug1.c new file mode 100644 index 0000000000..18e7d4c257 --- /dev/null +++ b/REORG.TODO/stdio-common/bug1.c @@ -0,0 +1,30 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +int +main (void) +{ + char *bp; + size_t size; + FILE *stream; + int lose = 0; + + stream = open_memstream (&bp, &size); + fprintf (stream, "hello"); + fflush (stream); + printf ("buf = %s, size = %Zu\n", bp, size); + lose |= size != 5; + lose |= strncmp (bp, "hello", size); + fprintf (stream, ", world"); + fclose (stream); + printf ("buf = %s, size = %Zu\n", bp, size); + lose |= size != 12; + lose |= strncmp (bp, "hello, world", 12); + + puts (lose ? "Test FAILED!" : "Test succeeded."); + + free (bp); + + return lose; +} diff --git a/REORG.TODO/stdio-common/bug1.input b/REORG.TODO/stdio-common/bug1.input new file mode 100644 index 0000000000..5595fa46c0 --- /dev/null +++ b/REORG.TODO/stdio-common/bug1.input @@ -0,0 +1 @@ +95 diff --git a/REORG.TODO/stdio-common/bug10.c b/REORG.TODO/stdio-common/bug10.c new file mode 100644 index 0000000000..c4f328d4cb --- /dev/null +++ b/REORG.TODO/stdio-common/bug10.c @@ -0,0 +1,25 @@ +#include <stdio.h> + +int +main (int arc, char *argv[]) +{ + int n, res; + unsigned int val; + char s[] = "111"; + int result = 0; + + n = 0; + res = sscanf(s, "%u %n", &val, &n); + + printf("Result of sscanf = %d\n", res); + printf("Scanned format %%u = %u\n", val); + printf("Possibly scanned format %%n = %d\n", n); + result |= res != 1 || val != 111 || n != 3; + + + result |= sscanf ("", " %n", &n) == EOF; + + puts (result ? "Test failed" : "All tests passed"); + + return result; +} diff --git a/REORG.TODO/stdio-common/bug11.c b/REORG.TODO/stdio-common/bug11.c new file mode 100644 index 0000000000..c5af604e44 --- /dev/null +++ b/REORG.TODO/stdio-common/bug11.c @@ -0,0 +1,14 @@ +#include <stdio.h> +#include <string.h> + +int +main (int argc, char *argv[]) +{ + int ret; + char buf [1024] = "Ooops"; + + ret = sscanf ("static char Term_bits[] = {", "static char %s = {", buf); + printf ("ret: %d, name: %s\n", ret, buf); + + return strcmp (buf, "Term_bits[]") != 0 || ret != 1; +} diff --git a/REORG.TODO/stdio-common/bug12.c b/REORG.TODO/stdio-common/bug12.c new file mode 100644 index 0000000000..48610c0e78 --- /dev/null +++ b/REORG.TODO/stdio-common/bug12.c @@ -0,0 +1,46 @@ +#include <stdio.h> +#include <string.h> + +char x[4096], z[4096], b[21], m[4096 * 4]; + +int +main (void) +{ + FILE *f = tmpfile (); + int i, failed = 0; + + memset (x, 'x', 4096); + memset (z, 'z', 4096); + b[20] = 0; + + for (i = 0; i <= 5; i++) + { + fwrite (x, 4096, 1, f); + fwrite (z, 4096, 1, f); + } + rewind (f); + + fread (m, 4096 * 4 - 10, 1, f); + fread (b, 20, 1, f); + printf ("got %s (should be %s)\n", b, "zzzzzzzzzzxxxxxxxxxx"); + if (strcmp (b, "zzzzzzzzzzxxxxxxxxxx")) + failed = 1; + + fseek (f, -40, SEEK_CUR); + fread (b, 20, 1, f); + printf ("got %s (should be %s)\n", b, "zzzzzzzzzzzzzzzzzzzz"); + if (strcmp (b, "zzzzzzzzzzzzzzzzzzzz")) + failed = 1; + + fread (b, 20, 1, f); + printf ("got %s (should be %s)\n", b, "zzzzzzzzzzxxxxxxxxxx"); + if (strcmp (b, "zzzzzzzzzzxxxxxxxxxx")) + failed = 1; + + fread (b, 20, 1, f); + printf ("got %s (should be %s)\n", b, "xxxxxxxxxxxxxxxxxxxx"); + if (strcmp (b, "xxxxxxxxxxxxxxxxxxxx")) + failed = 1; + + return failed; +} diff --git a/REORG.TODO/stdio-common/bug13.c b/REORG.TODO/stdio-common/bug13.c new file mode 100644 index 0000000000..1eca8185ca --- /dev/null +++ b/REORG.TODO/stdio-common/bug13.c @@ -0,0 +1,30 @@ +#include <stdio.h> + + + +int +main (void) +{ + int res = 0; + char buf[100]; + +#define TEST(nr, result, format, args...) \ + if (sprintf (buf, format, ## args) != result) \ + { \ + printf ("test %d failed (\"%s\", %d)\n", nr, buf, result); \ + res = 1; \ + } + + TEST (1, 2, "%d", -1); + TEST (2, 2, "% 2d", 1); + TEST (3, 3, "%#x", 1); + TEST (4, 2, "%+d", 1); + TEST (5, 2, "% d", 1); + TEST (6, 2, "%-d", -1); + TEST (7, 2, "%- 2d", 1); + TEST (8, 3, "%-#x", 1); + TEST (9, 2, "%-+d", 1); + TEST (10, 2, "%- d", 1); + + return res; +} diff --git a/REORG.TODO/stdio-common/bug14.c b/REORG.TODO/stdio-common/bug14.c new file mode 100644 index 0000000000..317d4969d3 --- /dev/null +++ b/REORG.TODO/stdio-common/bug14.c @@ -0,0 +1,29 @@ +/* Test case by Al Viro <aviro@redhat.com>. */ +#include <locale.h> +#include <wchar.h> +#include <stdio.h> +#include <stdlib.h> + +/* MB_CUR_MAX multibyte ones (6 UTF+0080, in this case) */ +static const char string[] = "\ +\xc2\x80\xc2\x80\xc2\x80\xc2\x80\xc2\x80\xc2\x80"; + +int +main (void) +{ + if (setlocale (LC_ALL, "de_DE.UTF-8") == NULL) + { + puts ("cannot set locale"); + exit (1); + } + + wchar_t s[7]; + int n = sscanf (string, "%l[\x80\xc2]", s); + if (n != 1) + { + printf ("return values %d != 1\n", n); + exit (1); + } + + return 0; +} diff --git a/REORG.TODO/stdio-common/bug16.c b/REORG.TODO/stdio-common/bug16.c new file mode 100644 index 0000000000..1112c39d05 --- /dev/null +++ b/REORG.TODO/stdio-common/bug16.c @@ -0,0 +1,43 @@ +#include <stdio.h> +#include <string.h> + +struct +{ + long double val; + const char str[4][7]; +} tests[] = +{ + { 0x0.FFFFp+0L, { "0X1P+0", "0X2P-1", "0X4P-2", "0X8P-3" } }, + { 0x0.FFFFp+1L, { "0X1P+1", "0X2P+0", "0X4P-1", "0X8P-2" } }, + { 0x0.FFFFp+2L, { "0X1P+2", "0X2P+1", "0X4P+0", "0X8P-1" } }, + { 0x0.FFFFp+3L, { "0X1P+3", "0X2P+2", "0X4P+1", "0X8P+0" } } +}; + +static int +do_test (void) +{ + char buf[100]; + int ret = 0; + + for (size_t i = 0; i < sizeof (tests) / sizeof (tests[0]); ++i) + { + snprintf (buf, sizeof (buf), "%.0LA", tests[i].val); + + size_t j; + for (j = 0; j < 4; ++j) + if (strcmp (buf, tests[i].str[j]) == 0) + break; + + if (j == 4) + { + printf ("%zd: got \"%s\", expected \"%s\" or equivalent\n", + i, buf, tests[i].str[0]); + ret = 1; + } + } + + return ret; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/bug17.c b/REORG.TODO/stdio-common/bug17.c new file mode 100644 index 0000000000..2ef398674b --- /dev/null +++ b/REORG.TODO/stdio-common/bug17.c @@ -0,0 +1,31 @@ +#include <stdio.h> +#include <string.h> + +static int +do_test (void) +{ + static const char expect[] = "0, 0, 0"; + char buf[100]; + int status = 0; + + static const char fmt1[] = "%0d, %0ld, %0lld"; + snprintf (buf, sizeof (buf), fmt1, 0, 0L, 0LL); + if (strcmp (buf, expect) != 0) + { + printf ("\"%s\": got \"%s\", expected \"%s\"\n", fmt1, buf, expect); + status = 1; + } + + static const char fmt2[] = "%0u, %0lu, %0llu"; + snprintf (buf, sizeof (buf), fmt2, 0u, 0uL, 0uLL); + if (strcmp (buf, expect) != 0) + { + printf ("\"%s\": got \"%s\", expected \"%s\"\n", fmt2, buf, expect); + status = 1; + } + + return status; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/bug18.c b/REORG.TODO/stdio-common/bug18.c new file mode 100644 index 0000000000..2e4c378c13 --- /dev/null +++ b/REORG.TODO/stdio-common/bug18.c @@ -0,0 +1,48 @@ +#include <assert.h> +#include <errno.h> +#include <stdio.h> + +#ifndef CHAR +# define CHAR char +# define L(str) str +# define SSCANF sscanf +#endif + + +static int +do_test (void) +{ + printf("setting errno to EINTR\n"); + errno = EINTR; + + printf("checking sscanf\n"); + + CHAR str[] = L("7-11"); + int i, j, n; + + i = j = n = 0; + SSCANF (str, L(" %i - %i %n"), &i, &j, &n); + printf ("found %i-%i (length=%i)\n", i, j, n); + + int result = 0; + if (i != 7) + { + printf ("i is %d, expected 7\n", i); + result = 1; + } + if (j != 11) + { + printf ("j is %d, expected 11\n", j); + result = 1; + } + if (n != 4) + { + printf ("n is %d, expected 4\n", j); + result = 1; + } + + return result; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/bug18a.c b/REORG.TODO/stdio-common/bug18a.c new file mode 100644 index 0000000000..663cbf4fb7 --- /dev/null +++ b/REORG.TODO/stdio-common/bug18a.c @@ -0,0 +1,6 @@ +#include <wchar.h> +#define CHAR wchar_t +#define L(str) L##str +#define SSCANF swscanf + +#include "bug18.c" diff --git a/REORG.TODO/stdio-common/bug19.c b/REORG.TODO/stdio-common/bug19.c new file mode 100644 index 0000000000..e083304bda --- /dev/null +++ b/REORG.TODO/stdio-common/bug19.c @@ -0,0 +1,58 @@ +#include <assert.h> +#include <errno.h> +#include <stdio.h> + +#ifndef CHAR +# define CHAR char +# define L(str) str +# define FPUTS fputs +# define FSCANF fscanf +#endif + + +static int +do_test (void) +{ + FILE *fp = tmpfile (); + if (fp == NULL) + { + puts ("cannot open file"); + return 1; + } + + FPUTS (L("7-11"), fp); + rewind (fp); + + printf("setting errno to EINTR\n"); + errno = EINTR; + + printf("checking sscanf\n"); + + int i, j, n; + + i = j = n = 0; + FSCANF (fp, L(" %i - %i %n"), &i, &j, &n); + printf ("found %i-%i (length=%i)\n", i, j, n); + + int result = 0; + if (i != 7) + { + printf ("i is %d, expected 7\n", i); + result = 1; + } + if (j != 11) + { + printf ("j is %d, expected 11\n", j); + result = 1; + } + if (n != 4) + { + printf ("n is %d, expected 4\n", j); + result = 1; + } + + return result; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/bug19a.c b/REORG.TODO/stdio-common/bug19a.c new file mode 100644 index 0000000000..c723398503 --- /dev/null +++ b/REORG.TODO/stdio-common/bug19a.c @@ -0,0 +1,7 @@ +#include <wchar.h> +#define CHAR wchar_t +#define L(str) L##str +#define FPUTS fputws +#define FSCANF fwscanf + +#include "bug19.c" diff --git a/REORG.TODO/stdio-common/bug2.c b/REORG.TODO/stdio-common/bug2.c new file mode 100644 index 0000000000..79b89a4d28 --- /dev/null +++ b/REORG.TODO/stdio-common/bug2.c @@ -0,0 +1,11 @@ +#include <stdio.h> + +int +main (void) +{ + int i; + puts ("This should print \"wow = I\" for I from 0 to 39 inclusive."); + for (i = 0; i < 40; i++) + printf ("%s = %d\n", "wow", i); + return 0; +} diff --git a/REORG.TODO/stdio-common/bug20.c b/REORG.TODO/stdio-common/bug20.c new file mode 100644 index 0000000000..385f6ffbe1 --- /dev/null +++ b/REORG.TODO/stdio-common/bug20.c @@ -0,0 +1,32 @@ +/* BZ #5225 */ +#include <stdio.h> +#include <string.h> +#include <wchar.h> + +static int +do_test (void) +{ + wchar_t in[] = L"123,abc,321"; + /* This is the critical part for this test. format must be in + read-only memory. */ + static const wchar_t format[50] = L"%d,%[^,],%d"; + int out_d1, out_d2; + char out_s[50]; + printf ("in='%ls' format='%ls'\n", in, format); + if (swscanf (in, format, &out_d1, out_s, &out_d2) != 3) + { + puts ("swscanf did not return 3"); + return 1; + } + printf ("in='%ls' format='%ls'\n", in, format); + printf ("out_d1=%d out_s='%s' out_d2=%d\n", out_d1, out_s, out_d2); + if (out_d1 != 123 || strcmp (out_s, "abc") != 0 || out_d2 != 321) + { + puts ("swscanf did not return the correct values"); + return 1; + } + return 0; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/bug21.c b/REORG.TODO/stdio-common/bug21.c new file mode 100644 index 0000000000..7a8c6a3542 --- /dev/null +++ b/REORG.TODO/stdio-common/bug21.c @@ -0,0 +1,25 @@ +#include <stdio.h> +#include <libc-diag.h> + +static int +do_test (void) +{ + static const char buf[] = " "; + char *str; + + /* GCC in C99 mode treats %a as the C99 format expecting float *, + but glibc with _GNU_SOURCE treats %as as the GNU allocation + extension, so resulting in "warning: format '%a' expects argument + of type 'float *', but argument 3 has type 'char **'". This + applies to the other %as, %aS and %a[] formats below as well. */ + DIAG_PUSH_NEEDS_COMMENT; + DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wformat"); + int r = sscanf (buf, "%as", &str); + DIAG_POP_NEEDS_COMMENT; + printf ("%d %p\n", r, str); + + return r != -1 || str != NULL; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/bug22.c b/REORG.TODO/stdio-common/bug22.c new file mode 100644 index 0000000000..b26399acb7 --- /dev/null +++ b/REORG.TODO/stdio-common/bug22.c @@ -0,0 +1,56 @@ +/* BZ #5424 */ +#include <stdio.h> +#include <errno.h> + +/* INT_MAX + 1 */ +#define N 2147483648 + +/* (INT_MAX / 2) + 2 */ +#define N2 1073741825 + +/* INT_MAX - 3 */ +#define N3 2147483644 + +#define STRINGIFY(S) #S +#define MAKE_STR(S) STRINGIFY(S) + +#define SN MAKE_STR(N) +#define SN2 MAKE_STR(N2) +#define SN3 MAKE_STR(N3) + +static int +do_test (void) +{ + int ret; + + FILE *fp = fopen ("/dev/null", "w"); + if (fp == NULL) + { + puts ("cannot open /dev/null"); + return 1; + } + + ret = fprintf (fp, "%" SN "d", 1); + printf ("ret = %d\n", ret); + if (ret != -1 || errno != EOVERFLOW) + return 1; + + ret = fprintf (fp, "%." SN "d", 1); + printf ("ret = %d\n", ret); + if (ret != -1 || errno != EOVERFLOW) + return 1; + + ret = fprintf (fp, "%." SN3 "d", 1); + printf ("ret = %d\n", ret); + if (ret != -1 || errno != EOVERFLOW) + return 1; + + ret = fprintf (fp, "%" SN2 "d%" SN2 "d", 1, 1); + printf ("ret = %d\n", ret); + + return ret != -1 || errno != EOVERFLOW; +} + +#define TIMEOUT 60 +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/bug23-2.c b/REORG.TODO/stdio-common/bug23-2.c new file mode 100644 index 0000000000..9e0cfe6860 --- /dev/null +++ b/REORG.TODO/stdio-common/bug23-2.c @@ -0,0 +1,70 @@ +#include <stdio.h> +#include <string.h> +#include <stdlib.h> + +static const char expected[] = "\ +\n\ +a\n\ +abbcd55\ +\n\ +a\n\ +abbcd55\ +\n\ +a\n\ +abbcd55\ +\n\ +a\n\ +abbcd55\ +\n\ +a\n\ +abbcd55\ +\n\ +a\n\ +abbcd55\ +\n\ +a\n\ +abbcd55\ +\n\ +a\n\ +abbcd55\ +\n\ +a\n\ +abbcd55\ +\n\ +a\n\ +abbcd55\ +\n\ +a\n\ +abbcd55\ +\n\ +a\n\ +abbcd55\ +\n\ +a\n\ +abbcd55%%%%%%%%%%%%%%%%%%%%%%%%%%\n"; + +static int +do_test (void) +{ + char *buf = malloc (strlen (expected) + 1); + snprintf (buf, strlen (expected) + 1, + "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" + "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" + "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" + "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" + "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" + "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" + "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" + "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" + "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" + "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" + "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" + "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" + "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" + "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + "a", "b", "c", "d", 5); + return strcmp (buf, expected) != 0; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/bug23-3.c b/REORG.TODO/stdio-common/bug23-3.c new file mode 100644 index 0000000000..57c8cef195 --- /dev/null +++ b/REORG.TODO/stdio-common/bug23-3.c @@ -0,0 +1,50 @@ +#include <stdio.h> +#include <string.h> +#include <stdlib.h> + +int +do_test (void) +{ + size_t instances = 16384; +#define X0 "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" + const char *item = "\na\nabbcd55"; +#define X3 X0 X0 X0 X0 X0 X0 X0 X0 +#define X6 X3 X3 X3 X3 X3 X3 X3 X3 +#define X9 X6 X6 X6 X6 X6 X6 X6 X6 +#define X12 X9 X9 X9 X9 X9 X9 X9 X9 +#define X14 X12 X12 X12 X12 +#define TRAILER "%%%%%%%%%%%%%%%%%%%%%%%%%%" +#define TRAILER2 TRAILER TRAILER + size_t length = instances * strlen (item) + strlen (TRAILER) + 1; + + char *buf = malloc (length + 1); + snprintf (buf, length + 1, + X14 TRAILER2 "\n", + "a", "b", "c", "d", 5); + + const char *p = buf; + size_t i; + for (i = 0; i < instances; ++i) + { + const char *expected; + for (expected = item; *expected; ++expected) + { + if (*p != *expected) + { + printf ("mismatch at offset %zu (%zu): expected %d, got %d\n", + (size_t) (p - buf), i, *expected & 0xFF, *p & 0xFF); + return 1; + } + ++p; + } + } + if (strcmp (p, TRAILER "\n") != 0) + { + printf ("mismatch at trailer: [%s]\n", p); + return 1; + } + free (buf); + return 0; +} +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/bug23-4.c b/REORG.TODO/stdio-common/bug23-4.c new file mode 100644 index 0000000000..a4785640de --- /dev/null +++ b/REORG.TODO/stdio-common/bug23-4.c @@ -0,0 +1,31 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/resource.h> + +#define LIMIT 1000000 + +int +main (void) +{ + struct rlimit lim; + getrlimit (RLIMIT_STACK, &lim); + lim.rlim_cur = 1048576; + setrlimit (RLIMIT_STACK, &lim); + char *fmtstr = malloc (4 * LIMIT + 1); + if (fmtstr == NULL) + abort (); + char *output = malloc (LIMIT + 1); + if (output == NULL) + abort (); + for (size_t i = 0; i < LIMIT; i++) + memcpy (fmtstr + 4 * i, "%1$d", 4); + fmtstr[4 * LIMIT] = '\0'; + int ret = snprintf (output, LIMIT + 1, fmtstr, 0); + if (ret != LIMIT) + abort (); + for (size_t i = 0; i < LIMIT; i++) + if (output[i] != '0') + abort (); + return 0; +} diff --git a/REORG.TODO/stdio-common/bug23.c b/REORG.TODO/stdio-common/bug23.c new file mode 100644 index 0000000000..dcc5428078 --- /dev/null +++ b/REORG.TODO/stdio-common/bug23.c @@ -0,0 +1,21 @@ +#include <stdio.h> +#include <string.h> + +static char buf[32768]; +static const char expected[] = "\ +\n\ +a\n\ +abbcd55%%%%%%%%%%%%%%%%%%%%%%%%%%\n"; + +static int +do_test (void) +{ + snprintf (buf, sizeof (buf), + "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" + "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + "a", "b", "c", "d", 5); + return strcmp (buf, expected) != 0; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/bug24.c b/REORG.TODO/stdio-common/bug24.c new file mode 100644 index 0000000000..4e6ffcc90b --- /dev/null +++ b/REORG.TODO/stdio-common/bug24.c @@ -0,0 +1,26 @@ +#include <stdio.h> +#include <errno.h> + +static int +do_test (void) +{ + FILE *fp = fopen ("/foobar_does_no_exit", "re"); + if (fp != NULL) + { + /* A joker created this file. Ignore the test. */ + fclose (fp); + return 0; + } + + if (errno == ENOENT) + { + printf ("no bug\n"); + return 0; + } + + printf ("bug : expected ENOENT, got: %m\n"); + return 1; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/bug25.c b/REORG.TODO/stdio-common/bug25.c new file mode 100644 index 0000000000..617f21ab71 --- /dev/null +++ b/REORG.TODO/stdio-common/bug25.c @@ -0,0 +1,71 @@ +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <unistd.h> + +static const char expected[] = "\ +\n\ +a\n\ +abbcd55\ +\n\ +a\n\ +abbcd55\ +\n\ +a\n\ +abbcd55\ +\n\ +a\n\ +abbcd55\ +\n\ +a\n\ +abbcd55\ +\n\ +a\n\ +abbcd55\ +\n\ +a\n\ +abbcd55\ +\n\ +a\n\ +abbcd55\ +\n\ +a\n\ +abbcd55\ +\n\ +a\n\ +abbcd55\ +\n\ +a\n\ +abbcd55\ +\n\ +a\n\ +abbcd55\ +\n\ +a\n\ +abbcd55%%%%%%%%%%%%%%%%%%%%%%%%%%\n"; + +static int +do_test (void) +{ + char *buf = malloc (strlen (expected) + 1); + snprintf (buf, strlen (expected) + 1, + "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" + "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" + "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" + "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" + "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" + "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" + "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" + "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" + "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" + "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" + "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" + "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" + "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d" + "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", + "a", "b", "c", "d", 5); + return strcmp (buf, expected) != 0; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/bug26.c b/REORG.TODO/stdio-common/bug26.c new file mode 100644 index 0000000000..febd90fe5f --- /dev/null +++ b/REORG.TODO/stdio-common/bug26.c @@ -0,0 +1,38 @@ +/* Copyright (C) 2013-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <stdio.h> +#include <string.h> + +int +main (void) +{ + FILE *f; + int lost = 0; + int c; + double d; + char s[] = "+.e"; + + f = fmemopen (s, strlen (s), "r"); + /* This should fail to parse a floating-point number, and leave 'e' in the + input. */ + lost |= (fscanf (f, "%lf", &d) != 0); + c = fgetc (f); + lost |= c != 'e'; + puts (lost ? "Test FAILED!" : "Test succeeded."); + return lost; +} diff --git a/REORG.TODO/stdio-common/bug3.c b/REORG.TODO/stdio-common/bug3.c new file mode 100644 index 0000000000..6b2ed6b8e0 --- /dev/null +++ b/REORG.TODO/stdio-common/bug3.c @@ -0,0 +1,53 @@ +#include <stdio.h> +#include <string.h> + +int +main (void) +{ + FILE *f; + int i; + const char filename[] = "/tmp/bug3.test"; + + f = fopen(filename, "w+"); + for (i=0; i<9000; i++) + putc ('x', f); + fseek (f, 8180L, 0); + fwrite ("Where does this text go?", 1, 24, f); + fflush (f); + + rewind (f); + for (i=0; i<9000; i++) + { + int j; + + if ((j = getc(f)) != 'x') + { + if (i != 8180) + { + printf ("Test FAILED!"); + return 1; + } + else + { + char buf[25]; + + buf[0] = j; + fread (buf + 1, 1, 23, f); + buf[24] = '\0'; + if (strcmp (buf, "Where does this text go?") != 0) + { + printf ("%s\nTest FAILED!\n", buf); + return 1; + } + i += 23; + } + } + } + + fclose(f); + remove(filename); + + puts ("Test succeeded."); + + return 0; +} diff --git a/REORG.TODO/stdio-common/bug4.c b/REORG.TODO/stdio-common/bug4.c new file mode 100644 index 0000000000..a0377862a5 --- /dev/null +++ b/REORG.TODO/stdio-common/bug4.c @@ -0,0 +1,48 @@ +#include <stdio.h> +#include <unistd.h> +#include <string.h> + +int stdio_block_read = 1, stdio_block_write = 1; + +int +main (int argc, char *argv[]) +{ + FILE *f; + int i; + char buffer[31]; + const char filename[] = "/tmp/bug4.test"; + + while ((i = getopt (argc, argv, "rw")) != -1) + switch (i) + { + case 'r': + stdio_block_read = 0; + break; + case 'w': + stdio_block_write = 0; + break; + } + + f = fopen (filename, "w+"); + for (i = 0; i < 9000; ++i) + putc('x', f); + + fseek (f, 8180L, 0); + fwrite ("Where does this text come from?", 1, 31, f); + fseek (f, 8180L, 0); + fread (buffer, 1, 31, f); + fwrite (buffer, 1, 31, stdout); + fclose (f); + remove (filename); + + if (!memcmp (buffer, "Where does this text come from?", 31)) + { + puts ("\nTest succeeded."); + return 0; + } + else + { + puts ("\nTest FAILED!"); + return 1; + } +} diff --git a/REORG.TODO/stdio-common/bug5.c b/REORG.TODO/stdio-common/bug5.c new file mode 100644 index 0000000000..f655845891 --- /dev/null +++ b/REORG.TODO/stdio-common/bug5.c @@ -0,0 +1,69 @@ +/* If stdio is working correctly, after this is run infile and outfile + will have the same contents. If the bug (found in GNU C library 0.3) + exhibits itself, outfile will be missing the 2nd through 1023rd + characters. */ + +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> + +static char buf[8192]; + +int +main (void) +{ + FILE *in; + FILE *out; + static char inname[] = "/tmp/bug5.in"; + static char outname[] = "/tmp/bug5.out"; + char *printbuf; + size_t i; + int result; + + /* Create a test file. */ + in = fopen (inname, "w+"); + if (in == NULL) + { + perror (inname); + return 1; + } + for (i = 0; i < 1000; ++i) + fprintf (in, "%Zu\n", i); + + out = fopen (outname, "w"); + if (out == NULL) + { + perror (outname); + return 1; + } + if (fseek (in, 0L, SEEK_SET) != 0) + abort (); + putc (getc (in), out); + i = fread (buf, 1, sizeof (buf), in); + if (i == 0) + { + perror ("fread"); + return 1; + } + if (fwrite (buf, 1, i, out) != i) + { + perror ("fwrite"); + return 1; + } + fclose (in); + fclose (out); + + puts ("There should be no further output from this test."); + fflush (stdout); + + /* We must remove this entry to assure the `cmp' binary does not use + the perhaps incompatible new shared libraries. */ + unsetenv ("LD_LIBRARY_PATH"); + + asprintf (&printbuf, "cmp %s %s", inname, outname); + result = system (printbuf); + remove (inname); + remove (outname); + + exit ((result != 0)); +} diff --git a/REORG.TODO/stdio-common/bug6.c b/REORG.TODO/stdio-common/bug6.c new file mode 100644 index 0000000000..0db63a3b44 --- /dev/null +++ b/REORG.TODO/stdio-common/bug6.c @@ -0,0 +1,26 @@ +#include <stdio.h> + +int +main (void) +{ + char buf[80]; + int i; + int lost = 0; + + scanf ("%2s", buf); + lost |= (buf[0] != 'X' || buf[1] != 'Y' || buf[2] != '\0'); + if (lost) + puts ("test of %2s failed."); + scanf (" "); + scanf ("%d", &i); + lost |= (i != 1234); + if (lost) + puts ("test of %d failed."); + scanf ("%c", buf); + lost |= (buf[0] != 'L'); + if (lost) + puts ("test of %c failed.\n"); + + puts (lost ? "Test FAILED!" : "Test succeeded."); + return lost; +} diff --git a/REORG.TODO/stdio-common/bug6.input b/REORG.TODO/stdio-common/bug6.input new file mode 100644 index 0000000000..d996e399c3 --- /dev/null +++ b/REORG.TODO/stdio-common/bug6.input @@ -0,0 +1 @@ +XY 1234L diff --git a/REORG.TODO/stdio-common/bug7.c b/REORG.TODO/stdio-common/bug7.c new file mode 100644 index 0000000000..2b1efe3bc6 --- /dev/null +++ b/REORG.TODO/stdio-common/bug7.c @@ -0,0 +1,69 @@ +/* Regression test for fseek and freopen bugs. */ + +#include <stdio.h> + +int +main (int argc, char *argv[]) +{ + int lose = 0; + char filename[L_tmpnam]; + FILE *fp; + + if (tmpnam (filename) == NULL) + { + printf ("tmpnam failed\n"); + lose = 1; + } + else + { + fp = fopen (filename, "w+"); + fprintf (fp, "Hello world!\n"); + fflush (fp); + fseek (fp, 5L, SEEK_SET); + if (fseek (fp, -1L, SEEK_CUR) < 0) + { + printf ("seek failed\n"); + lose = 1; + } + fclose (fp); + remove (filename); + } + + { + FILE *file1; + FILE *file2; + char filename1[L_tmpnam]; + char filename2[L_tmpnam]; + int ch; + + if (tmpnam (filename1) == NULL || tmpnam (filename2) == NULL) + { + printf ("tmpnam failed\n"); + lose = 1; + } + else + { + + file1 = fopen (filename1, "w"); + fclose (file1); + + file2 = fopen (filename2, "w"); + fputc ('x', file2); + fclose (file2); + + file1 = fopen (filename1, "r"); + file2 = freopen (filename2, "r", file1); + if ((ch = fgetc (file2)) != 'x') + { + printf ("wrong character in reopened file, value = %d\n", ch); + lose = 1; + } + fclose (file2); + remove (filename1); + remove (filename2); + } + } + + puts (lose ? "Test FAILED!" : "Test succeeded."); + return lose; +} diff --git a/REORG.TODO/stdio-common/bug8.c b/REORG.TODO/stdio-common/bug8.c new file mode 100644 index 0000000000..77bbfe3435 --- /dev/null +++ b/REORG.TODO/stdio-common/bug8.c @@ -0,0 +1,27 @@ +#include <stdio.h> +#include <string.h> + +int +main(int argc, char *argv[]) +{ + char buf[100]; + int point, x, y; + int status = 0; + + sscanf("0x10 10", "%x %x", &x, &y); + sprintf(buf, "%d %d", x, y); + puts (buf); + status |= strcmp (buf, "16 16"); + sscanf("P012349876", "P%1d%4d%4d", &point, &x, &y); + sprintf(buf, "%d %d %d", point, x, y); + status |= strcmp (buf, "0 1234 9876"); + puts (buf); + sscanf("P112349876", "P%1d%4d%4d", &point, &x, &y); + sprintf(buf, "%d %d %d", point, x, y); + status |= strcmp (buf, "1 1234 9876"); + puts (buf); + + puts (status ? "Test failed" : "Test passed"); + + return status; +} diff --git a/REORG.TODO/stdio-common/bug9.c b/REORG.TODO/stdio-common/bug9.c new file mode 100644 index 0000000000..732904d731 --- /dev/null +++ b/REORG.TODO/stdio-common/bug9.c @@ -0,0 +1,22 @@ +#include <stdio.h> +#include <string.h> + +int +main(int argc, char *argv[]) +{ + char buf[100]; + int a, b; + int status = 0; + + sscanf ("12ab", "%dab%n", &a, &b); + sprintf (buf, "%d, %d", a, b); + puts (buf); + status |= strcmp (buf, "12, 4"); + + sscanf ("12ab100", "%dab%n100", &a, &b); + sprintf (buf, "%d, %d", a, b); + puts (buf); + status |= strcmp (buf, "12, 4"); + + return status; +} diff --git a/REORG.TODO/stdio-common/ctermid.c b/REORG.TODO/stdio-common/ctermid.c new file mode 100644 index 0000000000..559ed50516 --- /dev/null +++ b/REORG.TODO/stdio-common/ctermid.c @@ -0,0 +1,33 @@ +/* Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <errno.h> +#include <stdio.h> + + +/* Return the name of the controlling terminal. + If S is not NULL, the name is copied into it (it should be at + least L_ctermid bytes long), otherwise a static buffer is used. */ +char * +ctermid (char *s) +{ + __set_errno (ENOSYS); + return NULL; +} + + +stub_warning (ctermid) diff --git a/REORG.TODO/stdio-common/cuserid.c b/REORG.TODO/stdio-common/cuserid.c new file mode 100644 index 0000000000..bcff3d76a3 --- /dev/null +++ b/REORG.TODO/stdio-common/cuserid.c @@ -0,0 +1,32 @@ +/* Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <stdio.h> +#include <errno.h> + +/* Return the username of the caller. + If S is not NULL, it points to a buffer of at least L_cuserid bytes + into which the name is copied; otherwise, a static buffer is used. */ +char * +cuserid (char *s) +{ + __set_errno (ENOSYS); + return NULL; +} + + +stub_warning (cuserid) diff --git a/REORG.TODO/stdio-common/dprintf.c b/REORG.TODO/stdio-common/dprintf.c new file mode 100644 index 0000000000..376cb0601c --- /dev/null +++ b/REORG.TODO/stdio-common/dprintf.c @@ -0,0 +1,40 @@ +/* Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <stdarg.h> +#include <stdio.h> + +#include <libioP.h> +#define vdprintf(d, f, a) _IO_vdprintf (d, f, a) + +/* Write formatted output to D, according to the format string FORMAT. */ +/* VARARGS2 */ +int +__dprintf (int d, const char *format, ...) +{ + va_list arg; + int done; + + va_start (arg, format); + done = vdprintf (d, format, arg); + va_end (arg); + + return done; +} +libc_hidden_def (__dprintf) +ldbl_hidden_def (__dprintf, dprintf) +ldbl_weak_alias (__dprintf, dprintf) diff --git a/REORG.TODO/stdio-common/errlist.c b/REORG.TODO/stdio-common/errlist.c new file mode 100644 index 0000000000..0f1b72b37d --- /dev/null +++ b/REORG.TODO/stdio-common/errlist.c @@ -0,0 +1,36 @@ +/* Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <stddef.h> + + +const char *const _sys_errlist[] = + { + "Error 0", /* 0 */ + "Argument out of function's domain", /* 1 = EDOM */ + "Result out of range", /* 2 = ERANGE */ + "Operation not implemented", /* 3 = ENOSYS */ + "Invalid argument", /* 4 = EINVAL */ + "Illegal seek", /* 5 = ESPIPE */ + "Bad file descriptor", /* 6 = EBADF */ + "Cannot allocate memory", /* 7 = ENOMEM */ + "Permission denied", /* 8 = EACCES */ + "Too many open files in system", /* 9 = ENFILE */ + "Too many open files", /* 10 = EMFILE */ + }; + +const int _sys_nerr = sizeof (_sys_errlist) / sizeof (_sys_errlist[0]); diff --git a/REORG.TODO/stdio-common/errnobug.c b/REORG.TODO/stdio-common/errnobug.c new file mode 100644 index 0000000000..9b09a3849e --- /dev/null +++ b/REORG.TODO/stdio-common/errnobug.c @@ -0,0 +1,59 @@ +/* Regression test for reported old bug that errno is clobbered + by the first successful output to a stream on an unseekable object. + Copyright (C) 1995-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <errno.h> +#include <stdio.h> +#include <unistd.h> + +int +main (void) +{ + int fd[2]; + FILE *f; + + /* Get a stream that cannot seek. */ + + if (pipe (fd)) + { + perror ("pipe"); + return 1; + } + f = fdopen (fd[1], "w"); + if (f == NULL) + { + perror ("fdopen"); + return 1; + } + + errno = 0; + if (fputs ("fnord", f) == EOF) + { + perror ("fputs"); + return 1; + } + + if (errno) + { + perror ("errno gratuitously set -- TEST FAILED"); + return 1; + } + + puts ("Test succeeded."); + return 0; +} diff --git a/REORG.TODO/stdio-common/flockfile.c b/REORG.TODO/stdio-common/flockfile.c new file mode 100644 index 0000000000..4080ecfcc8 --- /dev/null +++ b/REORG.TODO/stdio-common/flockfile.c @@ -0,0 +1,29 @@ +/* Lock I/O stream. Singlethreaded version. + Copyright (C) 1996-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <stdio.h> + +#undef _IO_flockfile + +void +__flockfile (FILE *stream) +{ + /* Do nothing. Using this version does not do any locking. */ +} +weak_alias (__flockfile, flockfile); +weak_alias (__flockfile, _IO_flockfile) diff --git a/REORG.TODO/stdio-common/fprintf.c b/REORG.TODO/stdio-common/fprintf.c new file mode 100644 index 0000000000..2bbaba8b99 --- /dev/null +++ b/REORG.TODO/stdio-common/fprintf.c @@ -0,0 +1,43 @@ +/* Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <stdarg.h> +#include <stdio.h> +#include <libioP.h> + + +/* Write formatted output to STREAM from the format string FORMAT. */ +/* VARARGS2 */ +int +__fprintf (FILE *stream, const char *format, ...) +{ + va_list arg; + int done; + + va_start (arg, format); + done = vfprintf (stream, format, arg); + va_end (arg); + + return done; +} +ldbl_hidden_def (__fprintf, fprintf) +ldbl_strong_alias (__fprintf, fprintf) + +/* We define the function with the real name here. But deep down in + libio the original function _IO_fprintf is also needed. So make + an alias. */ +ldbl_weak_alias (__fprintf, _IO_fprintf) diff --git a/REORG.TODO/stdio-common/fscanf.c b/REORG.TODO/stdio-common/fscanf.c new file mode 100644 index 0000000000..019ce899ab --- /dev/null +++ b/REORG.TODO/stdio-common/fscanf.c @@ -0,0 +1,36 @@ +/* Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <libioP.h> +#include <stdarg.h> +#include <stdio.h> + +/* Read formatted input from STREAM according to the format string FORMAT. */ +/* VARARGS2 */ +int +__fscanf (FILE *stream, const char *format, ...) +{ + va_list arg; + int done; + + va_start (arg, format); + done = __vfscanf (stream, format, arg); + va_end (arg); + + return done; +} +ldbl_strong_alias (__fscanf, fscanf) diff --git a/REORG.TODO/stdio-common/ftrylockfile.c b/REORG.TODO/stdio-common/ftrylockfile.c new file mode 100644 index 0000000000..366ad31c6a --- /dev/null +++ b/REORG.TODO/stdio-common/ftrylockfile.c @@ -0,0 +1,30 @@ +/* Try locking I/O stream. Singlethreaded version. + Copyright (C) 1996-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <stdio.h> + +#undef _IO_ftrylockfile + +int +__ftrylockfile (FILE *stream) +{ + /* Do nothing. Using this version does not do any locking. */ + return 1; +} +weak_alias (__ftrylockfile, ftrylockfile); +weak_alias (__ftrylockfile, _IO_ftrylockfile) diff --git a/REORG.TODO/stdio-common/funlockfile.c b/REORG.TODO/stdio-common/funlockfile.c new file mode 100644 index 0000000000..2204fde094 --- /dev/null +++ b/REORG.TODO/stdio-common/funlockfile.c @@ -0,0 +1,29 @@ +/* Unlock I/O stream. Singlethreaded version. + Copyright (C) 1996-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <stdio.h> + +#undef _IO_funlockfile + +void +__funlockfile (FILE *stream) +{ + /* Do nothing. Using this version does not do any locking. */ +} +weak_alias (__funlockfile, _IO_funlockfile) +weak_alias (__funlockfile, funlockfile); diff --git a/REORG.TODO/stdio-common/fxprintf.c b/REORG.TODO/stdio-common/fxprintf.c new file mode 100644 index 0000000000..82d4f2e235 --- /dev/null +++ b/REORG.TODO/stdio-common/fxprintf.c @@ -0,0 +1,99 @@ +/* Copyright (C) 2005-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@gnu.org>. + + 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 <stdarg.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <wchar.h> +#include <libioP.h> + +static int +locked_vfxprintf (FILE *fp, const char *fmt, va_list ap) +{ + if (_IO_fwide (fp, 0) <= 0) + return _IO_vfprintf (fp, fmt, ap); + + /* We must convert the narrow format string to a wide one. + Each byte can produce at most one wide character. */ + wchar_t *wfmt; + mbstate_t mbstate; + int res; + int used_malloc = 0; + size_t len = strlen (fmt) + 1; + + if (__glibc_unlikely (len > SIZE_MAX / sizeof (wchar_t))) + { + __set_errno (EOVERFLOW); + return -1; + } + if (__libc_use_alloca (len * sizeof (wchar_t))) + wfmt = alloca (len * sizeof (wchar_t)); + else if ((wfmt = malloc (len * sizeof (wchar_t))) == NULL) + return -1; + else + used_malloc = 1; + + memset (&mbstate, 0, sizeof mbstate); + res = __mbsrtowcs (wfmt, &fmt, len, &mbstate); + + if (res != -1) + res = _IO_vfwprintf (fp, wfmt, ap); + + if (used_malloc) + free (wfmt); + + return res; +} + +int +__fxprintf (FILE *fp, const char *fmt, ...) +{ + if (fp == NULL) + fp = stderr; + + va_list ap; + va_start (ap, fmt); + _IO_flockfile (fp); + + int res = locked_vfxprintf (fp, fmt, ap); + + _IO_funlockfile (fp); + va_end (ap); + return res; +} + +int +__fxprintf_nocancel (FILE *fp, const char *fmt, ...) +{ + if (fp == NULL) + fp = stderr; + + va_list ap; + va_start (ap, fmt); + _IO_flockfile (fp); + int save_flags2 = ((_IO_FILE *)fp)->_flags2; + ((_IO_FILE *)fp)->_flags2 |= _IO_FLAGS2_NOTCANCEL; + + int res = locked_vfxprintf (fp, fmt, ap); + + ((_IO_FILE *)fp)->_flags2 = save_flags2; + _IO_funlockfile (fp); + va_end (ap); + return res; +} diff --git a/REORG.TODO/stdio-common/getline.c b/REORG.TODO/stdio-common/getline.c new file mode 100644 index 0000000000..1976dd916f --- /dev/null +++ b/REORG.TODO/stdio-common/getline.c @@ -0,0 +1,35 @@ +/* Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <stddef.h> +#include <stdio.h> + +#undef __getline + +#include "../libio/libioP.h" +#undef ssize_t +#define ssize_t _IO_ssize_t +#define __getdelim _IO_getdelim + +/* Like getdelim, but always looks for a newline. */ +ssize_t +__getline (char **lineptr, size_t *n, FILE *stream) +{ + return __getdelim (lineptr, n, '\n', stream); +} + +weak_alias (__getline, getline) diff --git a/REORG.TODO/stdio-common/getw.c b/REORG.TODO/stdio-common/getw.c new file mode 100644 index 0000000000..f698707d2c --- /dev/null +++ b/REORG.TODO/stdio-common/getw.c @@ -0,0 +1,33 @@ +/* Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <stdio.h> + +#include <libio/iolibio.h> +#define fread(p, m, n, s) _IO_fread (p, m, n, s) + +/* Read a word (int) from STREAM. */ +int +getw (FILE *stream) +{ + int w; + + /* Is there a better way? */ + if (fread ((void *) &w, sizeof (w), 1, stream) != 1) + return EOF; + return w; +} diff --git a/REORG.TODO/stdio-common/isoc99_fscanf.c b/REORG.TODO/stdio-common/isoc99_fscanf.c new file mode 100644 index 0000000000..671162fb65 --- /dev/null +++ b/REORG.TODO/stdio-common/isoc99_fscanf.c @@ -0,0 +1,39 @@ +/* Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <libioP.h> +#include <stdarg.h> +#include <stdio.h> + +/* Read formatted input from STREAM according to the format string FORMAT. */ +/* VARARGS2 */ +int +__isoc99_fscanf (FILE *stream, const char *format, ...) +{ + va_list arg; + int done; + + _IO_acquire_lock_clear_flags2 (stream); + stream->_flags2 |= _IO_FLAGS2_SCANF_STD; + + va_start (arg, format); + done = _IO_vfscanf (stream, format, arg, NULL); + va_end (arg); + + _IO_release_lock (stream); + return done; +} diff --git a/REORG.TODO/stdio-common/isoc99_scanf.c b/REORG.TODO/stdio-common/isoc99_scanf.c new file mode 100644 index 0000000000..5a384c9757 --- /dev/null +++ b/REORG.TODO/stdio-common/isoc99_scanf.c @@ -0,0 +1,44 @@ +/* Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <stdarg.h> +#include <stdio.h> +#include <libioP.h> + + +/* Read formatted input from stdin according to the format string FORMAT. */ +/* VARARGS1 */ +int +__isoc99_scanf (const char *format, ...) +{ + va_list arg; + int done; + +#ifdef _IO_MTSAFE_IO + _IO_acquire_lock_clear_flags2 (stdin); +#endif + stdin->_flags2 |= _IO_FLAGS2_SCANF_STD; + + va_start (arg, format); + done = _IO_vfscanf (stdin, format, arg, NULL); + va_end (arg); + +#ifdef _IO_MTSAFE_IO + _IO_release_lock (stdin); +#endif + return done; +} diff --git a/REORG.TODO/stdio-common/isoc99_sscanf.c b/REORG.TODO/stdio-common/isoc99_sscanf.c new file mode 100644 index 0000000000..9242102718 --- /dev/null +++ b/REORG.TODO/stdio-common/isoc99_sscanf.c @@ -0,0 +1,35 @@ +/* Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <stdarg.h> +#include <stdio.h> +#include <libioP.h> + +/* Read formatted input from S, according to the format string FORMAT. */ +/* VARARGS2 */ +int +__isoc99_sscanf (const char *s, const char *format, ...) +{ + va_list arg; + int done; + + va_start (arg, format); + done = __isoc99_vsscanf (s, format, arg); + va_end (arg); + + return done; +} diff --git a/REORG.TODO/stdio-common/isoc99_vfscanf.c b/REORG.TODO/stdio-common/isoc99_vfscanf.c new file mode 100644 index 0000000000..7b5c3670c4 --- /dev/null +++ b/REORG.TODO/stdio-common/isoc99_vfscanf.c @@ -0,0 +1,34 @@ +/* Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <libioP.h> +#include <stdio.h> + +/* Read formatted input from STREAM according to the format string FORMAT. */ +/* VARARGS2 */ +int +__isoc99_vfscanf (FILE *stream, const char *format, _IO_va_list args) +{ + int done; + + _IO_acquire_lock_clear_flags2 (stream); + stream->_flags2 |= _IO_FLAGS2_SCANF_STD; + done = _IO_vfscanf (stream, format, args, NULL); + _IO_release_lock (stream); + return done; +} +libc_hidden_def (__isoc99_vfscanf) diff --git a/REORG.TODO/stdio-common/isoc99_vscanf.c b/REORG.TODO/stdio-common/isoc99_vscanf.c new file mode 100644 index 0000000000..1c713b378c --- /dev/null +++ b/REORG.TODO/stdio-common/isoc99_vscanf.c @@ -0,0 +1,33 @@ +/* Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <libioP.h> +#include <stdio.h> + +/* Read formatted input from STDIN according to the format string FORMAT. */ +/* VARARGS2 */ +int +__isoc99_vscanf (const char *format, _IO_va_list args) +{ + int done; + + _IO_acquire_lock_clear_flags2 (stdin); + stdin->_flags2 |= _IO_FLAGS2_SCANF_STD; + done = _IO_vfscanf (stdin, format, args, NULL); + _IO_release_lock (stdin); + return done; +} diff --git a/REORG.TODO/stdio-common/isoc99_vsscanf.c b/REORG.TODO/stdio-common/isoc99_vsscanf.c new file mode 100644 index 0000000000..a82d9b3111 --- /dev/null +++ b/REORG.TODO/stdio-common/isoc99_vsscanf.c @@ -0,0 +1,46 @@ +/* Copyright (C) 1993-2017 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 + <http://www.gnu.org/licenses/>. + + As a special exception, if you link the code in this file with + files compiled with a GNU compiler to produce an executable, + that does not cause the resulting executable to be covered by + the GNU Lesser General Public License. This exception does not + however invalidate any other reasons why the executable file + might be covered by the GNU Lesser General Public License. + This exception applies to code released by its copyright holders + in files containing the exception. */ + +#include <libioP.h> +#include <stdio.h> +#include "../libio/strfile.h" + +int +__isoc99_vsscanf (const char *string, const char *format, _IO_va_list args) +{ + int ret; + _IO_strfile sf; +#ifdef _IO_MTSAFE_IO + sf._sbf._f._lock = NULL; +#endif + _IO_no_init (&sf._sbf._f, _IO_USER_LOCK, -1, NULL, NULL); + _IO_JUMPS (&sf._sbf) = &_IO_str_jumps; + _IO_str_init_static_internal (&sf, (char*)string, 0, NULL); + sf._sbf._f._flags2 |= _IO_FLAGS2_SCANF_STD; + ret = _IO_vfscanf (&sf._sbf._f, format, args, NULL); + return ret; +} +libc_hidden_def (__isoc99_vsscanf) diff --git a/REORG.TODO/stdio-common/itoa-digits.c b/REORG.TODO/stdio-common/itoa-digits.c new file mode 100644 index 0000000000..1298de81cc --- /dev/null +++ b/REORG.TODO/stdio-common/itoa-digits.c @@ -0,0 +1,24 @@ +/* Digits. + Copyright (C) 1994-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <_itoa.h> + +/* Lower-case digits. */ +const char _itoa_lower_digits[36] + = "0123456789abcdefghijklmnopqrstuvwxyz"; +libc_hidden_data_def (_itoa_lower_digits) diff --git a/REORG.TODO/stdio-common/itoa-udigits.c b/REORG.TODO/stdio-common/itoa-udigits.c new file mode 100644 index 0000000000..914c63b633 --- /dev/null +++ b/REORG.TODO/stdio-common/itoa-udigits.c @@ -0,0 +1,24 @@ +/* Digits. + Copyright (C) 1994-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <_itoa.h> + +/* Upper-case digits. */ +const char _itoa_upper_digits[36] + = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; +libc_hidden_data_def (_itoa_upper_digits) diff --git a/REORG.TODO/stdio-common/itowa-digits.c b/REORG.TODO/stdio-common/itowa-digits.c new file mode 100644 index 0000000000..0b46f35fdd --- /dev/null +++ b/REORG.TODO/stdio-common/itowa-digits.c @@ -0,0 +1,26 @@ +/* Digits. + Copyright (C) 1994-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <wchar.h> + +/* Lower-case digits. */ +const wchar_t _itowa_lower_digits[36] attribute_hidden + = L"0123456789abcdefghijklmnopqrstuvwxyz"; +/* Upper-case digits. */ +const wchar_t _itowa_upper_digits[36] attribute_hidden + = L"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; diff --git a/REORG.TODO/stdio-common/perror.c b/REORG.TODO/stdio-common/perror.c new file mode 100644 index 0000000000..d109c63607 --- /dev/null +++ b/REORG.TODO/stdio-common/perror.c @@ -0,0 +1,83 @@ +/* Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <errno.h> +#include <stdio.h> +#include <string.h> +#include <unistd.h> +#include <wchar.h> +#include "libioP.h" + +static void +perror_internal (FILE *fp, const char *s, int errnum) +{ + char buf[1024]; + const char *colon; + const char *errstring; + + if (s == NULL || *s == '\0') + s = colon = ""; + else + colon = ": "; + + errstring = __strerror_r (errnum, buf, sizeof buf); + + (void) __fxprintf (fp, "%s%s%s\n", s, colon, errstring); +} + + +/* Print a line on stderr consisting of the text in S, a colon, a space, + a message describing the meaning of the contents of `errno' and a newline. + If S is NULL or "", the colon and space are omitted. */ +void +perror (const char *s) +{ + int errnum = errno; + FILE *fp; + int fd = -1; + + + /* The standard says that 'perror' must not change the orientation + of the stream. What is supposed to happen when the stream isn't + oriented yet? In this case we'll create a new stream which is + using the same underlying file descriptor. */ + if (__builtin_expect (_IO_fwide (stderr, 0) != 0, 1) + || (fd = __fileno (stderr)) == -1 + || (fd = __dup (fd)) == -1 + || (fp = fdopen (fd, "w+")) == NULL) + { + if (__glibc_unlikely (fd != -1)) + __close (fd); + + /* Use standard error as is. */ + perror_internal (stderr, s, errnum); + } + else + { + /* We don't have to do any special hacks regarding the file + position. Since the stderr stream wasn't used so far we just + write to the descriptor. */ + perror_internal (fp, s, errnum); + + if (_IO_ferror_unlocked (fp)) + stderr->_flags |= _IO_ERR_SEEN; + + /* Close the stream. */ + fclose (fp); + } +} +libc_hidden_def (perror) diff --git a/REORG.TODO/stdio-common/printf-parse.h b/REORG.TODO/stdio-common/printf-parse.h new file mode 100644 index 0000000000..484ba6010d --- /dev/null +++ b/REORG.TODO/stdio-common/printf-parse.h @@ -0,0 +1,144 @@ +/* Internal header for parsing printf format strings. + Copyright (C) 1995-2017 Free Software Foundation, Inc. + This file is part of th 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 + <http://www.gnu.org/licenses/>. */ + +#include <printf.h> +#include <stdint.h> +#include <stddef.h> +#include <string.h> +#include <wchar.h> + + +struct printf_spec + { + /* Information parsed from the format spec. */ + struct printf_info info; + + /* Pointers into the format string for the end of this format + spec and the next (or to the end of the string if no more). */ + const UCHAR_T *end_of_fmt, *next_fmt; + + /* Position of arguments for precision and width, or -1 if `info' has + the constant value. */ + int prec_arg, width_arg; + + int data_arg; /* Position of data argument. */ + int data_arg_type; /* Type of first argument. */ + /* Number of arguments consumed by this format specifier. */ + size_t ndata_args; + /* Size of the parameter for PA_USER type. */ + int size; + }; + + +/* The various kinds off arguments that can be passed to printf. */ +union printf_arg + { + wchar_t pa_wchar; + int pa_int; + long int pa_long_int; + long long int pa_long_long_int; + unsigned int pa_u_int; + unsigned long int pa_u_long_int; + unsigned long long int pa_u_long_long_int; + double pa_double; + long double pa_long_double; + const char *pa_string; + const wchar_t *pa_wstring; + void *pa_pointer; + void *pa_user; + }; + + +#ifndef DONT_NEED_READ_INT +/* Read a simple integer from a string and update the string pointer. + It is assumed that the first character is a digit. */ +static int +read_int (const UCHAR_T * *pstr) +{ + int retval = **pstr - L_('0'); + + while (ISDIGIT (*++(*pstr))) + if (retval >= 0) + { + if (INT_MAX / 10 < retval) + retval = -1; + else + { + int digit = **pstr - L_('0'); + + retval *= 10; + if (INT_MAX - digit < retval) + retval = -1; + else + retval += digit; + } + } + + return retval; +} +#endif + + +/* These are defined in reg-printf.c. */ +extern printf_arginfo_size_function **__printf_arginfo_table attribute_hidden; +extern printf_function **__printf_function_table attribute_hidden; +extern printf_va_arg_function **__printf_va_arg_table attribute_hidden; + + +/* Find the next spec in FORMAT, or the end of the string. Returns + a pointer into FORMAT, to a '%' or a '\0'. */ +__extern_always_inline const unsigned char * +__find_specmb (const unsigned char *format) +{ + return (const unsigned char *) __strchrnul ((const char *) format, '%'); +} + +__extern_always_inline const unsigned int * +__find_specwc (const unsigned int *format) +{ + return (const unsigned int *) __wcschrnul ((const wchar_t *) format, L'%'); +} + + +/* FORMAT must point to a '%' at the beginning of a spec. Fills in *SPEC + with the parsed details. POSN is the number of arguments already + consumed. At most MAXTYPES - POSN types are filled in TYPES. Return + the number of args consumed by this spec; *MAX_REF_ARG is updated so it + remains the highest argument index used. */ +extern size_t __parse_one_specmb (const unsigned char *format, size_t posn, + struct printf_spec *spec, + size_t *max_ref_arg) attribute_hidden; + +extern size_t __parse_one_specwc (const unsigned int *format, size_t posn, + struct printf_spec *spec, + size_t *max_ref_arg) attribute_hidden; + + + +/* This variable is defined in reg-modifier.c. */ +struct printf_modifier_record; +extern struct printf_modifier_record **__printf_modifier_table + attribute_hidden; + +/* Handle registered modifiers. */ +extern int __handle_registered_modifier_mb (const unsigned char **format, + struct printf_info *info) + attribute_hidden; +extern int __handle_registered_modifier_wc (const unsigned int **format, + struct printf_info *info) + attribute_hidden; diff --git a/REORG.TODO/stdio-common/printf-parsemb.c b/REORG.TODO/stdio-common/printf-parsemb.c new file mode 100644 index 0000000000..a42336c538 --- /dev/null +++ b/REORG.TODO/stdio-common/printf-parsemb.c @@ -0,0 +1,408 @@ +/* Helper functions for parsing printf format strings. + Copyright (C) 1995-2017 Free Software Foundation, Inc. + This file is part of th 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 + <http://www.gnu.org/licenses/>. */ + +#include <ctype.h> +#include <limits.h> +#include <stdlib.h> +#include <string.h> +#include <sys/param.h> +#include <wchar.h> +#include <wctype.h> + +#ifndef COMPILE_WPRINTF +# define CHAR_T char +# define UCHAR_T unsigned char +# define INT_T int +# define L_(Str) Str +# define ISDIGIT(Ch) isdigit (Ch) +# define HANDLE_REGISTERED_MODIFIER __handle_registered_modifier_mb +#else +# define CHAR_T wchar_t +# define UCHAR_T unsigned int +# define INT_T wint_t +# define L_(Str) L##Str +# define ISDIGIT(Ch) iswdigit (Ch) +# define HANDLE_REGISTERED_MODIFIER __handle_registered_modifier_wc +#endif + +#include "printf-parse.h" + +#define NDEBUG 1 +#include <assert.h> + + + +/* FORMAT must point to a '%' at the beginning of a spec. Fills in *SPEC + with the parsed details. POSN is the number of arguments already + consumed. At most MAXTYPES - POSN types are filled in TYPES. Return + the number of args consumed by this spec; *MAX_REF_ARG is updated so it + remains the highest argument index used. */ +size_t +attribute_hidden +#ifdef COMPILE_WPRINTF +__parse_one_specwc (const UCHAR_T *format, size_t posn, + struct printf_spec *spec, size_t *max_ref_arg) +#else +__parse_one_specmb (const UCHAR_T *format, size_t posn, + struct printf_spec *spec, size_t *max_ref_arg) +#endif +{ + unsigned int n; + size_t nargs = 0; + + /* Skip the '%'. */ + ++format; + + /* Clear information structure. */ + spec->data_arg = -1; + spec->info.alt = 0; + spec->info.space = 0; + spec->info.left = 0; + spec->info.showsign = 0; + spec->info.group = 0; + spec->info.i18n = 0; + spec->info.extra = 0; + spec->info.pad = ' '; + spec->info.wide = sizeof (UCHAR_T) > 1; + spec->info.is_binary128 = 0; + + /* Test for positional argument. */ + if (ISDIGIT (*format)) + { + const UCHAR_T *begin = format; + + n = read_int (&format); + + if (n != 0 && *format == L_('$')) + /* Is positional parameter. */ + { + ++format; /* Skip the '$'. */ + if (n != -1) + { + spec->data_arg = n - 1; + *max_ref_arg = MAX (*max_ref_arg, n); + } + } + else + /* Oops; that was actually the width and/or 0 padding flag. + Step back and read it again. */ + format = begin; + } + + /* Check for spec modifiers. */ + do + { + switch (*format) + { + case L_(' '): + /* Output a space in place of a sign, when there is no sign. */ + spec->info.space = 1; + continue; + case L_('+'): + /* Always output + or - for numbers. */ + spec->info.showsign = 1; + continue; + case L_('-'): + /* Left-justify things. */ + spec->info.left = 1; + continue; + case L_('#'): + /* Use the "alternate form": + Hex has 0x or 0X, FP always has a decimal point. */ + spec->info.alt = 1; + continue; + case L_('0'): + /* Pad with 0s. */ + spec->info.pad = '0'; + continue; + case L_('\''): + /* Show grouping in numbers if the locale information + indicates any. */ + spec->info.group = 1; + continue; + case L_('I'): + /* Use the internationalized form of the output. Currently + means to use the `outdigits' of the current locale. */ + spec->info.i18n = 1; + continue; + default: + break; + } + break; + } + while (*++format); + + if (spec->info.left) + spec->info.pad = ' '; + + /* Get the field width. */ + spec->width_arg = -1; + spec->info.width = 0; + if (*format == L_('*')) + { + /* The field width is given in an argument. + A negative field width indicates left justification. */ + const UCHAR_T *begin = ++format; + + if (ISDIGIT (*format)) + { + /* The width argument might be found in a positional parameter. */ + n = read_int (&format); + + if (n != 0 && *format == L_('$')) + { + if (n != -1) + { + spec->width_arg = n - 1; + *max_ref_arg = MAX (*max_ref_arg, n); + } + ++format; /* Skip '$'. */ + } + } + + if (spec->width_arg < 0) + { + /* Not in a positional parameter. Consume one argument. */ + spec->width_arg = posn++; + ++nargs; + format = begin; /* Step back and reread. */ + } + } + else if (ISDIGIT (*format)) + { + int n = read_int (&format); + + /* Constant width specification. */ + if (n != -1) + spec->info.width = n; + } + /* Get the precision. */ + spec->prec_arg = -1; + /* -1 means none given; 0 means explicit 0. */ + spec->info.prec = -1; + if (*format == L_('.')) + { + ++format; + if (*format == L_('*')) + { + /* The precision is given in an argument. */ + const UCHAR_T *begin = ++format; + + if (ISDIGIT (*format)) + { + n = read_int (&format); + + if (n != 0 && *format == L_('$')) + { + if (n != -1) + { + spec->prec_arg = n - 1; + *max_ref_arg = MAX (*max_ref_arg, n); + } + ++format; + } + } + + if (spec->prec_arg < 0) + { + /* Not in a positional parameter. */ + spec->prec_arg = posn++; + ++nargs; + format = begin; + } + } + else if (ISDIGIT (*format)) + { + int n = read_int (&format); + + if (n != -1) + spec->info.prec = n; + } + else + /* "%.?" is treated like "%.0?". */ + spec->info.prec = 0; + } + + /* Check for type modifiers. */ + spec->info.is_long_double = 0; + spec->info.is_short = 0; + spec->info.is_long = 0; + spec->info.is_char = 0; + spec->info.user = 0; + + if (__builtin_expect (__printf_modifier_table == NULL, 1) + || __printf_modifier_table[*format] == NULL + || HANDLE_REGISTERED_MODIFIER (&format, &spec->info) != 0) + switch (*format++) + { + case L_('h'): + /* ints are short ints or chars. */ + if (*format != L_('h')) + spec->info.is_short = 1; + else + { + ++format; + spec->info.is_char = 1; + } + break; + case L_('l'): + /* ints are long ints. */ + spec->info.is_long = 1; + if (*format != L_('l')) + break; + ++format; + /* FALLTHROUGH */ + case L_('L'): + /* doubles are long doubles, and ints are long long ints. */ + case L_('q'): + /* 4.4 uses this for long long. */ + spec->info.is_long_double = 1; + break; + case L_('z'): + case L_('Z'): + /* ints are size_ts. */ + assert (sizeof (size_t) <= sizeof (unsigned long long int)); +#if LONG_MAX != LONG_LONG_MAX + spec->info.is_long_double = (sizeof (size_t) + > sizeof (unsigned long int)); +#endif + spec->info.is_long = sizeof (size_t) > sizeof (unsigned int); + break; + case L_('t'): + assert (sizeof (ptrdiff_t) <= sizeof (long long int)); +#if LONG_MAX != LONG_LONG_MAX + spec->info.is_long_double = (sizeof (ptrdiff_t) > sizeof (long int)); +#endif + spec->info.is_long = sizeof (ptrdiff_t) > sizeof (int); + break; + case L_('j'): + assert (sizeof (uintmax_t) <= sizeof (unsigned long long int)); +#if LONG_MAX != LONG_LONG_MAX + spec->info.is_long_double = (sizeof (uintmax_t) + > sizeof (unsigned long int)); +#endif + spec->info.is_long = sizeof (uintmax_t) > sizeof (unsigned int); + break; + default: + /* Not a recognized modifier. Backup. */ + --format; + break; + } + + /* Get the format specification. */ + spec->info.spec = (wchar_t) *format++; + spec->size = -1; + if (__builtin_expect (__printf_function_table == NULL, 1) + || spec->info.spec > UCHAR_MAX + || __printf_arginfo_table[spec->info.spec] == NULL + /* We don't try to get the types for all arguments if the format + uses more than one. The normal case is covered though. If + the call returns -1 we continue with the normal specifiers. */ + || (int) (spec->ndata_args = (*__printf_arginfo_table[spec->info.spec]) + (&spec->info, 1, &spec->data_arg_type, + &spec->size)) < 0) + { + /* Find the data argument types of a built-in spec. */ + spec->ndata_args = 1; + + switch (spec->info.spec) + { + case L'i': + case L'd': + case L'u': + case L'o': + case L'X': + case L'x': +#if LONG_MAX != LONG_LONG_MAX + if (spec->info.is_long_double) + spec->data_arg_type = PA_INT|PA_FLAG_LONG_LONG; + else +#endif + if (spec->info.is_long) + spec->data_arg_type = PA_INT|PA_FLAG_LONG; + else if (spec->info.is_short) + spec->data_arg_type = PA_INT|PA_FLAG_SHORT; + else if (spec->info.is_char) + spec->data_arg_type = PA_CHAR; + else + spec->data_arg_type = PA_INT; + break; + case L'e': + case L'E': + case L'f': + case L'F': + case L'g': + case L'G': + case L'a': + case L'A': + if (spec->info.is_long_double) + spec->data_arg_type = PA_DOUBLE|PA_FLAG_LONG_DOUBLE; + else + spec->data_arg_type = PA_DOUBLE; + break; + case L'c': + spec->data_arg_type = PA_CHAR; + break; + case L'C': + spec->data_arg_type = PA_WCHAR; + break; + case L's': + spec->data_arg_type = PA_STRING; + break; + case L'S': + spec->data_arg_type = PA_WSTRING; + break; + case L'p': + spec->data_arg_type = PA_POINTER; + break; + case L'n': + spec->data_arg_type = PA_INT|PA_FLAG_PTR; + break; + + case L'm': + default: + /* An unknown spec will consume no args. */ + spec->ndata_args = 0; + break; + } + } + + if (spec->data_arg == -1 && spec->ndata_args > 0) + { + /* There are args consumed, but no positional spec. Use the + next sequential arg position. */ + spec->data_arg = posn; + nargs += spec->ndata_args; + } + + if (spec->info.spec == L'\0') + /* Format ended before this spec was complete. */ + spec->end_of_fmt = spec->next_fmt = format - 1; + else + { + /* Find the next format spec. */ + spec->end_of_fmt = format; +#ifdef COMPILE_WPRINTF + spec->next_fmt = __find_specwc (format); +#else + spec->next_fmt = __find_specmb (format); +#endif + } + + return nargs; +} diff --git a/REORG.TODO/stdio-common/printf-parsewc.c b/REORG.TODO/stdio-common/printf-parsewc.c new file mode 100644 index 0000000000..3de67d8081 --- /dev/null +++ b/REORG.TODO/stdio-common/printf-parsewc.c @@ -0,0 +1,2 @@ +#define COMPILE_WPRINTF 1 +#include "printf-parsemb.c" diff --git a/REORG.TODO/stdio-common/printf-prs.c b/REORG.TODO/stdio-common/printf-prs.c new file mode 100644 index 0000000000..d63855612a --- /dev/null +++ b/REORG.TODO/stdio-common/printf-prs.c @@ -0,0 +1,102 @@ +/* Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <stdio.h> +#include <printf.h> +#include <stdlib.h> +#include <string.h> +#include <wchar.h> +#include <sys/param.h> + +#include "../locale/localeinfo.h" + +#ifndef COMPILE_WPRINTF +# define CHAR_T char +# define UCHAR_T unsigned char +# define INT_T int +# define L_(Str) Str +# define ISDIGIT(Ch) isdigit (Ch) +# define ISASCII(Ch) isascii (Ch) +# define MBRLEN(Cp, L, St) __mbrlen (Cp, L, St) + +# define PUT(F, S, N) _IO_sputn (F, S, N) +# define PAD(Padchar) \ + if (width > 0) \ + done += _IO_padn (s, Padchar, width) +#else +# define vfprintf vfwprintf +# define CHAR_T wchar_t +# define UCHAR_T uwchar_t +# define INT_T wint_t +# define L_(Str) L##Str +# define ISDIGIT(Ch) iswdigit (Ch) + +# define PUT(F, S, N) _IO_sputn (F, S, N) +# define PAD(Padchar) \ + if (width > 0) \ + done += _IO_wpadn (s, Padchar, width) +#endif + +#define DONT_NEED_READ_INT +#include "printf-parse.h" + + +size_t +parse_printf_format (const char *fmt, size_t n, int *argtypes) +{ + size_t nargs; /* Number of arguments. */ + size_t max_ref_arg; /* Highest index used in a positional arg. */ + struct printf_spec spec; + const unsigned char *f = (const unsigned char *) fmt; + + nargs = 0; + max_ref_arg = 0; + + /* Search for format specifications. */ + for (f = __find_specmb (f); *f != '\0'; f = spec.next_fmt) + { + /* Parse this spec. */ + nargs += __parse_one_specmb (f, nargs, &spec, &max_ref_arg); + + /* If the width is determined by an argument this is an int. */ + if (spec.width_arg != -1 && (size_t) spec.width_arg < n) + argtypes[spec.width_arg] = PA_INT; + + /* If the precision is determined by an argument this is an int. */ + if (spec.prec_arg != -1 && (size_t) spec.prec_arg < n) + argtypes[spec.prec_arg] = PA_INT; + + if ((size_t) spec.data_arg < n) + switch (spec.ndata_args) + { + case 0: /* No arguments. */ + break; + case 1: /* One argument; we already have the type. */ + argtypes[spec.data_arg] = spec.data_arg_type; + break; + default: + /* We have more than one argument for this format spec. We must + call the arginfo function again to determine all the types. */ + (void) (*__printf_arginfo_table[spec.info.spec]) + (&spec.info, n - spec.data_arg, &argtypes[spec.data_arg], + &spec.size); + break; + } + } + + return MAX (nargs, max_ref_arg); +} diff --git a/REORG.TODO/stdio-common/printf.c b/REORG.TODO/stdio-common/printf.c new file mode 100644 index 0000000000..ba84064e9e --- /dev/null +++ b/REORG.TODO/stdio-common/printf.c @@ -0,0 +1,42 @@ +/* Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <libioP.h> +#include <stdarg.h> +#include <stdio.h> + +#undef printf + +/* Write formatted output to stdout from the format string FORMAT. */ +/* VARARGS1 */ +int +__printf (const char *format, ...) +{ + va_list arg; + int done; + + va_start (arg, format); + done = vfprintf (stdout, format, arg); + va_end (arg); + + return done; +} + +#undef _IO_printf +ldbl_strong_alias (__printf, printf); +/* This is for libg++. */ +ldbl_strong_alias (__printf, _IO_printf); diff --git a/REORG.TODO/stdio-common/printf.h b/REORG.TODO/stdio-common/printf.h new file mode 100644 index 0000000000..940256445e --- /dev/null +++ b/REORG.TODO/stdio-common/printf.h @@ -0,0 +1,191 @@ +/* Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#ifndef _PRINTF_H + +#define _PRINTF_H 1 +#include <features.h> + +__BEGIN_DECLS + +#include <bits/types/FILE.h> + +#define __need_size_t +#define __need_wchar_t +#include <stddef.h> + +#include <stdarg.h> + + +struct printf_info +{ + int prec; /* Precision. */ + int width; /* Width. */ + wchar_t spec; /* Format letter. */ + unsigned int is_long_double:1;/* L flag. */ + unsigned int is_short:1; /* h flag. */ + unsigned int is_long:1; /* l flag. */ + unsigned int alt:1; /* # flag. */ + unsigned int space:1; /* Space flag. */ + unsigned int left:1; /* - flag. */ + unsigned int showsign:1; /* + flag. */ + unsigned int group:1; /* ' flag. */ + unsigned int extra:1; /* For special use. */ + unsigned int is_char:1; /* hh flag. */ + unsigned int wide:1; /* Nonzero for wide character streams. */ + unsigned int i18n:1; /* I flag. */ + unsigned int is_binary128:1; /* Floating-point argument is ABI-compatible + with IEC 60559 binary128. */ + unsigned int __pad:3; /* Unused so far. */ + unsigned short int user; /* Bits for user-installed modifiers. */ + wchar_t pad; /* Padding character. */ +}; + + +/* Type of a printf specifier-handler function. + STREAM is the FILE on which to write output. + INFO gives information about the format specification. + ARGS is a vector of pointers to the argument data; + the number of pointers will be the number returned + by the associated arginfo function for the same INFO. + + The function should return the number of characters written, + or -1 for errors. */ + +typedef int printf_function (FILE *__stream, + const struct printf_info *__info, + const void *const *__args); + +/* Type of a printf specifier-arginfo function. + INFO gives information about the format specification. + N, ARGTYPES, *SIZE has to contain the size of the parameter for + user-defined types, and return value are as for parse_printf_format + except that -1 should be returned if the handler cannot handle + this case. This allows to partially overwrite the functionality + of existing format specifiers. */ + +typedef int printf_arginfo_size_function (const struct printf_info *__info, + size_t __n, int *__argtypes, + int *__size); + +/* Old version of 'printf_arginfo_function' without a SIZE parameter. */ + +typedef int printf_arginfo_function (const struct printf_info *__info, + size_t __n, int *__argtypes); + +/* Type of a function to get a value of a user-defined from the + variable argument list. */ +typedef void printf_va_arg_function (void *__mem, va_list *__ap); + + +/* Register FUNC to be called to format SPEC specifiers; ARGINFO must be + specified to determine how many arguments a SPEC conversion requires and + what their types are. */ + +extern int register_printf_specifier (int __spec, printf_function __func, + printf_arginfo_size_function __arginfo) + __THROW; + + +/* Obsolete interface similar to register_printf_specifier. It can only + handle basic data types because the ARGINFO callback does not return + information on the size of the user-defined type. */ + +extern int register_printf_function (int __spec, printf_function __func, + printf_arginfo_function __arginfo) + __THROW __attribute_deprecated__; + + +/* Register a new modifier character sequence. If the call succeeds + it returns a positive value representing the bit set in the USER + field in 'struct printf_info'. */ + +extern int register_printf_modifier (const wchar_t *__str) __THROW __wur; + + +/* Register variable argument handler for user type. The return value + is to be used in ARGINFO functions to signal the use of the + type. */ +extern int register_printf_type (printf_va_arg_function __fct) __THROW __wur; + + +/* Parse FMT, and fill in N elements of ARGTYPES with the + types needed for the conversions FMT specifies. Returns + the number of arguments required by FMT. + + The ARGINFO function registered with a user-defined format is passed a + `struct printf_info' describing the format spec being parsed. A width + or precision of INT_MIN means a `*' was used to indicate that the + width/precision will come from an arg. The function should fill in the + array it is passed with the types of the arguments it wants, and return + the number of arguments it wants. */ + +extern size_t parse_printf_format (const char *__restrict __fmt, size_t __n, + int *__restrict __argtypes) __THROW; + + +/* Codes returned by `parse_printf_format' for basic types. + + These values cover all the standard format specifications. + Users can reserve new values after PA_LAST for their own types + using 'register_printf_type'. */ + +enum +{ /* C type: */ + PA_INT, /* int */ + PA_CHAR, /* int, cast to char */ + PA_WCHAR, /* wide char */ + PA_STRING, /* const char *, a '\0'-terminated string */ + PA_WSTRING, /* const wchar_t *, wide character string */ + PA_POINTER, /* void * */ + PA_FLOAT, /* float */ + PA_DOUBLE, /* double */ + PA_LAST +}; + +/* Flag bits that can be set in a type returned by `parse_printf_format'. */ +#define PA_FLAG_MASK 0xff00 +#define PA_FLAG_LONG_LONG (1 << 8) +#define PA_FLAG_LONG_DOUBLE PA_FLAG_LONG_LONG +#define PA_FLAG_LONG (1 << 9) +#define PA_FLAG_SHORT (1 << 10) +#define PA_FLAG_PTR (1 << 11) + + + +/* Function which can be registered as `printf'-handlers. */ + +/* Print floating point value using using abbreviations for the orders + of magnitude used for numbers ('k' for kilo, 'm' for mega etc). If + the format specifier is a uppercase character powers of 1000 are + used. Otherwise powers of 1024. */ +extern int printf_size (FILE *__restrict __fp, + const struct printf_info *__info, + const void *const *__restrict __args) __THROW; + +/* This is the appropriate argument information function for `printf_size'. */ +extern int printf_size_info (const struct printf_info *__restrict + __info, size_t __n, int *__restrict __argtypes) + __THROW; + +#ifdef __LDBL_COMPAT +# include <bits/printf-ldbl.h> +#endif + +__END_DECLS + +#endif /* printf.h */ diff --git a/REORG.TODO/stdio-common/printf_fp.c b/REORG.TODO/stdio-common/printf_fp.c new file mode 100644 index 0000000000..514b698d27 --- /dev/null +++ b/REORG.TODO/stdio-common/printf_fp.c @@ -0,0 +1,1364 @@ +/* Floating point output for `printf'. + Copyright (C) 1995-2017 Free Software Foundation, Inc. + + This file is part of the GNU C Library. + Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. + + 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/>. */ + +/* The gmp headers need some configuration frobs. */ +#define HAVE_ALLOCA 1 + +#include <libioP.h> +#include <alloca.h> +#include <ctype.h> +#include <float.h> +#include <gmp-mparam.h> +#include <gmp.h> +#include <ieee754.h> +#include <stdlib/gmp-impl.h> +#include <stdlib/longlong.h> +#include <stdlib/fpioconst.h> +#include <locale/localeinfo.h> +#include <limits.h> +#include <math.h> +#include <printf.h> +#include <string.h> +#include <unistd.h> +#include <stdlib.h> +#include <wchar.h> +#include <stdbool.h> +#include <rounding-mode.h> + +#ifdef COMPILE_WPRINTF +# define CHAR_T wchar_t +#else +# define CHAR_T char +#endif + +#include "_i18n_number.h" + +#ifndef NDEBUG +# define NDEBUG /* Undefine this for debugging assertions. */ +#endif +#include <assert.h> + +/* This defines make it possible to use the same code for GNU C library and + the GNU I/O library. */ +#define PUT(f, s, n) _IO_sputn (f, s, n) +#define PAD(f, c, n) (wide ? _IO_wpadn (f, c, n) : _IO_padn (f, c, n)) +/* We use this file GNU C library and GNU I/O library. So make + names equal. */ +#undef putc +#define putc(c, f) (wide \ + ? (int)_IO_putwc_unlocked (c, f) : _IO_putc_unlocked (c, f)) +#define size_t _IO_size_t +#define FILE _IO_FILE + +/* Macros for doing the actual output. */ + +#define outchar(ch) \ + do \ + { \ + const int outc = (ch); \ + if (putc (outc, fp) == EOF) \ + { \ + if (buffer_malloced) \ + free (wbuffer); \ + return -1; \ + } \ + ++done; \ + } while (0) + +#define PRINT(ptr, wptr, len) \ + do \ + { \ + size_t outlen = (len); \ + if (len > 20) \ + { \ + if (PUT (fp, wide ? (const char *) wptr : ptr, outlen) != outlen) \ + { \ + if (buffer_malloced) \ + free (wbuffer); \ + return -1; \ + } \ + ptr += outlen; \ + done += outlen; \ + } \ + else \ + { \ + if (wide) \ + while (outlen-- > 0) \ + outchar (*wptr++); \ + else \ + while (outlen-- > 0) \ + outchar (*ptr++); \ + } \ + } while (0) + +#define PADN(ch, len) \ + do \ + { \ + if (PAD (fp, ch, len) != len) \ + { \ + if (buffer_malloced) \ + free (wbuffer); \ + return -1; \ + } \ + done += len; \ + } \ + while (0) + +/* We use the GNU MP library to handle large numbers. + + An MP variable occupies a varying number of entries in its array. We keep + track of this number for efficiency reasons. Otherwise we would always + have to process the whole array. */ +#define MPN_VAR(name) mp_limb_t *name; mp_size_t name##size + +#define MPN_ASSIGN(dst,src) \ + memcpy (dst, src, (dst##size = src##size) * sizeof (mp_limb_t)) +#define MPN_GE(u,v) \ + (u##size > v##size || (u##size == v##size && __mpn_cmp (u, v, u##size) >= 0)) + +extern mp_size_t __mpn_extract_double (mp_ptr res_ptr, mp_size_t size, + int *expt, int *is_neg, + double value); +extern mp_size_t __mpn_extract_long_double (mp_ptr res_ptr, mp_size_t size, + int *expt, int *is_neg, + long double value); +extern unsigned int __guess_grouping (unsigned int intdig_max, + const char *grouping); + + +static wchar_t *group_number (wchar_t *buf, wchar_t *bufend, + unsigned int intdig_no, const char *grouping, + wchar_t thousands_sep, int ngroups) + internal_function; + +struct hack_digit_param +{ + /* Sign of the exponent. */ + int expsign; + /* The type of output format that will be used: 'e'/'E' or 'f'. */ + int type; + /* and the exponent. */ + int exponent; + /* The fraction of the floting-point value in question */ + MPN_VAR(frac); + /* Scaling factor. */ + MPN_VAR(scale); + /* Temporary bignum value. */ + MPN_VAR(tmp); +}; + +static wchar_t +hack_digit (struct hack_digit_param *p) +{ + mp_limb_t hi; + + if (p->expsign != 0 && p->type == 'f' && p->exponent-- > 0) + hi = 0; + else if (p->scalesize == 0) + { + hi = p->frac[p->fracsize - 1]; + p->frac[p->fracsize - 1] = __mpn_mul_1 (p->frac, p->frac, + p->fracsize - 1, 10); + } + else + { + if (p->fracsize < p->scalesize) + hi = 0; + else + { + hi = mpn_divmod (p->tmp, p->frac, p->fracsize, + p->scale, p->scalesize); + p->tmp[p->fracsize - p->scalesize] = hi; + hi = p->tmp[0]; + + p->fracsize = p->scalesize; + while (p->fracsize != 0 && p->frac[p->fracsize - 1] == 0) + --p->fracsize; + if (p->fracsize == 0) + { + /* We're not prepared for an mpn variable with zero + limbs. */ + p->fracsize = 1; + return L'0' + hi; + } + } + + mp_limb_t _cy = __mpn_mul_1 (p->frac, p->frac, p->fracsize, 10); + if (_cy != 0) + p->frac[p->fracsize++] = _cy; + } + + return L'0' + hi; +} + +int +__printf_fp_l (FILE *fp, locale_t loc, + const struct printf_info *info, + const void *const *args) +{ + /* The floating-point value to output. */ + union + { + double dbl; + __long_double_t ldbl; +#if __HAVE_DISTINCT_FLOAT128 + _Float128 f128; +#endif + } + fpnum; + + /* Locale-dependent representation of decimal point. */ + const char *decimal; + wchar_t decimalwc; + + /* Locale-dependent thousands separator and grouping specification. */ + const char *thousands_sep = NULL; + wchar_t thousands_sepwc = 0; + const char *grouping; + + /* "NaN" or "Inf" for the special cases. */ + const char *special = NULL; + const wchar_t *wspecial = NULL; + + /* When _Float128 is enabled in the library and ABI-distinct from long + double, we need mp_limbs enough for any of them. */ +#if __HAVE_DISTINCT_FLOAT128 +# define GREATER_MANT_DIG FLT128_MANT_DIG +#else +# define GREATER_MANT_DIG LDBL_MANT_DIG +#endif + /* We need just a few limbs for the input before shifting to the right + position. */ + mp_limb_t fp_input[(GREATER_MANT_DIG + BITS_PER_MP_LIMB - 1) + / BITS_PER_MP_LIMB]; + /* We need to shift the contents of fp_input by this amount of bits. */ + int to_shift = 0; + + struct hack_digit_param p; + /* Sign of float number. */ + int is_neg = 0; + + /* Counter for number of written characters. */ + int done = 0; + + /* General helper (carry limb). */ + mp_limb_t cy; + + /* Nonzero if this is output on a wide character stream. */ + int wide = info->wide; + + /* Buffer in which we produce the output. */ + wchar_t *wbuffer = NULL; + /* Flag whether wbuffer is malloc'ed or not. */ + int buffer_malloced = 0; + + p.expsign = 0; + + /* Figure out the decimal point character. */ + if (info->extra == 0) + { + decimal = _nl_lookup (loc, LC_NUMERIC, DECIMAL_POINT); + decimalwc = _nl_lookup_word + (loc, LC_NUMERIC, _NL_NUMERIC_DECIMAL_POINT_WC); + } + else + { + decimal = _nl_lookup (loc, LC_MONETARY, MON_DECIMAL_POINT); + if (*decimal == '\0') + decimal = _nl_lookup (loc, LC_NUMERIC, DECIMAL_POINT); + decimalwc = _nl_lookup_word (loc, LC_MONETARY, + _NL_MONETARY_DECIMAL_POINT_WC); + if (decimalwc == L'\0') + decimalwc = _nl_lookup_word (loc, LC_NUMERIC, + _NL_NUMERIC_DECIMAL_POINT_WC); + } + /* The decimal point character must not be zero. */ + assert (*decimal != '\0'); + assert (decimalwc != L'\0'); + + if (info->group) + { + if (info->extra == 0) + grouping = _nl_lookup (loc, LC_NUMERIC, GROUPING); + else + grouping = _nl_lookup (loc, LC_MONETARY, MON_GROUPING); + + if (*grouping <= 0 || *grouping == CHAR_MAX) + grouping = NULL; + else + { + /* Figure out the thousands separator character. */ + if (wide) + { + if (info->extra == 0) + thousands_sepwc = _nl_lookup_word + (loc, LC_NUMERIC, _NL_NUMERIC_THOUSANDS_SEP_WC); + else + thousands_sepwc = + _nl_lookup_word (loc, LC_MONETARY, + _NL_MONETARY_THOUSANDS_SEP_WC); + } + else + { + if (info->extra == 0) + thousands_sep = _nl_lookup (loc, LC_NUMERIC, THOUSANDS_SEP); + else + thousands_sep = _nl_lookup + (loc, LC_MONETARY, MON_THOUSANDS_SEP); + } + + if ((wide && thousands_sepwc == L'\0') + || (! wide && *thousands_sep == '\0')) + grouping = NULL; + else if (thousands_sepwc == L'\0') + /* If we are printing multibyte characters and there is a + multibyte representation for the thousands separator, + we must ensure the wide character thousands separator + is available, even if it is fake. */ + thousands_sepwc = 0xfffffffe; + } + } + else + grouping = NULL; + +#define PRINTF_FP_FETCH(FLOAT, VAR, SUFFIX, MANT_DIG) \ + { \ + (VAR) = *(const FLOAT *) args[0]; \ + \ + /* Check for special values: not a number or infinity. */ \ + if (isnan (VAR)) \ + { \ + is_neg = signbit (VAR); \ + if (isupper (info->spec)) \ + { \ + special = "NAN"; \ + wspecial = L"NAN"; \ + } \ + else \ + { \ + special = "nan"; \ + wspecial = L"nan"; \ + } \ + } \ + else if (isinf (VAR)) \ + { \ + is_neg = signbit (VAR); \ + if (isupper (info->spec)) \ + { \ + special = "INF"; \ + wspecial = L"INF"; \ + } \ + else \ + { \ + special = "inf"; \ + wspecial = L"inf"; \ + } \ + } \ + else \ + { \ + p.fracsize = __mpn_extract_##SUFFIX \ + (fp_input, \ + (sizeof (fp_input) / sizeof (fp_input[0])), \ + &p.exponent, &is_neg, VAR); \ + to_shift = 1 + p.fracsize * BITS_PER_MP_LIMB - MANT_DIG; \ + } \ + } + + /* Fetch the argument value. */ +#if __HAVE_DISTINCT_FLOAT128 + if (info->is_binary128) + PRINTF_FP_FETCH (_Float128, fpnum.f128, float128, FLT128_MANT_DIG) + else +#endif +#ifndef __NO_LONG_DOUBLE_MATH + if (info->is_long_double && sizeof (long double) > sizeof (double)) + PRINTF_FP_FETCH (long double, fpnum.ldbl, long_double, LDBL_MANT_DIG) + else +#endif + PRINTF_FP_FETCH (double, fpnum.dbl, double, DBL_MANT_DIG) + +#undef PRINTF_FP_FETCH + + if (special) + { + int width = info->width; + + if (is_neg || info->showsign || info->space) + --width; + width -= 3; + + if (!info->left && width > 0) + PADN (' ', width); + + if (is_neg) + outchar ('-'); + else if (info->showsign) + outchar ('+'); + else if (info->space) + outchar (' '); + + PRINT (special, wspecial, 3); + + if (info->left && width > 0) + PADN (' ', width); + + return done; + } + + + /* We need three multiprecision variables. Now that we have the p.exponent + of the number we can allocate the needed memory. It would be more + efficient to use variables of the fixed maximum size but because this + would be really big it could lead to memory problems. */ + { + mp_size_t bignum_size = ((abs (p.exponent) + BITS_PER_MP_LIMB - 1) + / BITS_PER_MP_LIMB + + (GREATER_MANT_DIG / BITS_PER_MP_LIMB > 2 + ? 8 : 4)) + * sizeof (mp_limb_t); + p.frac = (mp_limb_t *) alloca (bignum_size); + p.tmp = (mp_limb_t *) alloca (bignum_size); + p.scale = (mp_limb_t *) alloca (bignum_size); + } + + /* We now have to distinguish between numbers with positive and negative + exponents because the method used for the one is not applicable/efficient + for the other. */ + p.scalesize = 0; + if (p.exponent > 2) + { + /* |FP| >= 8.0. */ + int scaleexpo = 0; + int explog; +#if __HAVE_DISTINCT_FLOAT128 + if (info->is_binary128) + explog = FLT128_MAX_10_EXP_LOG; + else + explog = LDBL_MAX_10_EXP_LOG; +#else + explog = LDBL_MAX_10_EXP_LOG; +#endif + int exp10 = 0; + const struct mp_power *powers = &_fpioconst_pow10[explog + 1]; + int cnt_h, cnt_l, i; + + if ((p.exponent + to_shift) % BITS_PER_MP_LIMB == 0) + { + MPN_COPY_DECR (p.frac + (p.exponent + to_shift) / BITS_PER_MP_LIMB, + fp_input, p.fracsize); + p.fracsize += (p.exponent + to_shift) / BITS_PER_MP_LIMB; + } + else + { + cy = __mpn_lshift (p.frac + + (p.exponent + to_shift) / BITS_PER_MP_LIMB, + fp_input, p.fracsize, + (p.exponent + to_shift) % BITS_PER_MP_LIMB); + p.fracsize += (p.exponent + to_shift) / BITS_PER_MP_LIMB; + if (cy) + p.frac[p.fracsize++] = cy; + } + MPN_ZERO (p.frac, (p.exponent + to_shift) / BITS_PER_MP_LIMB); + + assert (powers > &_fpioconst_pow10[0]); + do + { + --powers; + + /* The number of the product of two binary numbers with n and m + bits respectively has m+n or m+n-1 bits. */ + if (p.exponent >= scaleexpo + powers->p_expo - 1) + { + if (p.scalesize == 0) + { +#if __HAVE_DISTINCT_FLOAT128 + if ((FLT128_MANT_DIG + > _FPIO_CONST_OFFSET * BITS_PER_MP_LIMB) + && info->is_binary128) + { +#define _FLT128_FPIO_CONST_SHIFT \ + (((FLT128_MANT_DIG + BITS_PER_MP_LIMB - 1) / BITS_PER_MP_LIMB) \ + - _FPIO_CONST_OFFSET) + /* 64bit const offset is not enough for + IEEE 854 quad long double (_Float128). */ + p.tmpsize = powers->arraysize + _FLT128_FPIO_CONST_SHIFT; + memcpy (p.tmp + _FLT128_FPIO_CONST_SHIFT, + &__tens[powers->arrayoff], + p.tmpsize * sizeof (mp_limb_t)); + MPN_ZERO (p.tmp, _FLT128_FPIO_CONST_SHIFT); + /* Adjust p.exponent, as scaleexpo will be this much + bigger too. */ + p.exponent += _FLT128_FPIO_CONST_SHIFT * BITS_PER_MP_LIMB; + } + else +#endif /* __HAVE_DISTINCT_FLOAT128 */ +#ifndef __NO_LONG_DOUBLE_MATH + if (LDBL_MANT_DIG > _FPIO_CONST_OFFSET * BITS_PER_MP_LIMB + && info->is_long_double) + { +#define _FPIO_CONST_SHIFT \ + (((LDBL_MANT_DIG + BITS_PER_MP_LIMB - 1) / BITS_PER_MP_LIMB) \ + - _FPIO_CONST_OFFSET) + /* 64bit const offset is not enough for + IEEE quad long double. */ + p.tmpsize = powers->arraysize + _FPIO_CONST_SHIFT; + memcpy (p.tmp + _FPIO_CONST_SHIFT, + &__tens[powers->arrayoff], + p.tmpsize * sizeof (mp_limb_t)); + MPN_ZERO (p.tmp, _FPIO_CONST_SHIFT); + /* Adjust p.exponent, as scaleexpo will be this much + bigger too. */ + p.exponent += _FPIO_CONST_SHIFT * BITS_PER_MP_LIMB; + } + else +#endif + { + p.tmpsize = powers->arraysize; + memcpy (p.tmp, &__tens[powers->arrayoff], + p.tmpsize * sizeof (mp_limb_t)); + } + } + else + { + cy = __mpn_mul (p.tmp, p.scale, p.scalesize, + &__tens[powers->arrayoff + + _FPIO_CONST_OFFSET], + powers->arraysize - _FPIO_CONST_OFFSET); + p.tmpsize = p.scalesize + + powers->arraysize - _FPIO_CONST_OFFSET; + if (cy == 0) + --p.tmpsize; + } + + if (MPN_GE (p.frac, p.tmp)) + { + int cnt; + MPN_ASSIGN (p.scale, p.tmp); + count_leading_zeros (cnt, p.scale[p.scalesize - 1]); + scaleexpo = (p.scalesize - 2) * BITS_PER_MP_LIMB - cnt - 1; + exp10 |= 1 << explog; + } + } + --explog; + } + while (powers > &_fpioconst_pow10[0]); + p.exponent = exp10; + + /* Optimize number representations. We want to represent the numbers + with the lowest number of bytes possible without losing any + bytes. Also the highest bit in the scaling factor has to be set + (this is a requirement of the MPN division routines). */ + if (p.scalesize > 0) + { + /* Determine minimum number of zero bits at the end of + both numbers. */ + for (i = 0; p.scale[i] == 0 && p.frac[i] == 0; i++) + ; + + /* Determine number of bits the scaling factor is misplaced. */ + count_leading_zeros (cnt_h, p.scale[p.scalesize - 1]); + + if (cnt_h == 0) + { + /* The highest bit of the scaling factor is already set. So + we only have to remove the trailing empty limbs. */ + if (i > 0) + { + MPN_COPY_INCR (p.scale, p.scale + i, p.scalesize - i); + p.scalesize -= i; + MPN_COPY_INCR (p.frac, p.frac + i, p.fracsize - i); + p.fracsize -= i; + } + } + else + { + if (p.scale[i] != 0) + { + count_trailing_zeros (cnt_l, p.scale[i]); + if (p.frac[i] != 0) + { + int cnt_l2; + count_trailing_zeros (cnt_l2, p.frac[i]); + if (cnt_l2 < cnt_l) + cnt_l = cnt_l2; + } + } + else + count_trailing_zeros (cnt_l, p.frac[i]); + + /* Now shift the numbers to their optimal position. */ + if (i == 0 && BITS_PER_MP_LIMB - cnt_h > cnt_l) + { + /* We cannot save any memory. So just roll both numbers + so that the scaling factor has its highest bit set. */ + + (void) __mpn_lshift (p.scale, p.scale, p.scalesize, cnt_h); + cy = __mpn_lshift (p.frac, p.frac, p.fracsize, cnt_h); + if (cy != 0) + p.frac[p.fracsize++] = cy; + } + else if (BITS_PER_MP_LIMB - cnt_h <= cnt_l) + { + /* We can save memory by removing the trailing zero limbs + and by packing the non-zero limbs which gain another + free one. */ + + (void) __mpn_rshift (p.scale, p.scale + i, p.scalesize - i, + BITS_PER_MP_LIMB - cnt_h); + p.scalesize -= i + 1; + (void) __mpn_rshift (p.frac, p.frac + i, p.fracsize - i, + BITS_PER_MP_LIMB - cnt_h); + p.fracsize -= p.frac[p.fracsize - i - 1] == 0 ? i + 1 : i; + } + else + { + /* We can only save the memory of the limbs which are zero. + The non-zero parts occupy the same number of limbs. */ + + (void) __mpn_rshift (p.scale, p.scale + (i - 1), + p.scalesize - (i - 1), + BITS_PER_MP_LIMB - cnt_h); + p.scalesize -= i; + (void) __mpn_rshift (p.frac, p.frac + (i - 1), + p.fracsize - (i - 1), + BITS_PER_MP_LIMB - cnt_h); + p.fracsize -= + p.frac[p.fracsize - (i - 1) - 1] == 0 ? i : i - 1; + } + } + } + } + else if (p.exponent < 0) + { + /* |FP| < 1.0. */ + int exp10 = 0; + int explog; +#if __HAVE_DISTINCT_FLOAT128 + if (info->is_binary128) + explog = FLT128_MAX_10_EXP_LOG; + else + explog = LDBL_MAX_10_EXP_LOG; +#else + explog = LDBL_MAX_10_EXP_LOG; +#endif + const struct mp_power *powers = &_fpioconst_pow10[explog + 1]; + + /* Now shift the input value to its right place. */ + cy = __mpn_lshift (p.frac, fp_input, p.fracsize, to_shift); + p.frac[p.fracsize++] = cy; + assert (cy == 1 || (p.frac[p.fracsize - 2] == 0 && p.frac[0] == 0)); + + p.expsign = 1; + p.exponent = -p.exponent; + + assert (powers != &_fpioconst_pow10[0]); + do + { + --powers; + + if (p.exponent >= powers->m_expo) + { + int i, incr, cnt_h, cnt_l; + mp_limb_t topval[2]; + + /* The __mpn_mul function expects the first argument to be + bigger than the second. */ + if (p.fracsize < powers->arraysize - _FPIO_CONST_OFFSET) + cy = __mpn_mul (p.tmp, &__tens[powers->arrayoff + + _FPIO_CONST_OFFSET], + powers->arraysize - _FPIO_CONST_OFFSET, + p.frac, p.fracsize); + else + cy = __mpn_mul (p.tmp, p.frac, p.fracsize, + &__tens[powers->arrayoff + _FPIO_CONST_OFFSET], + powers->arraysize - _FPIO_CONST_OFFSET); + p.tmpsize = p.fracsize + powers->arraysize - _FPIO_CONST_OFFSET; + if (cy == 0) + --p.tmpsize; + + count_leading_zeros (cnt_h, p.tmp[p.tmpsize - 1]); + incr = (p.tmpsize - p.fracsize) * BITS_PER_MP_LIMB + + BITS_PER_MP_LIMB - 1 - cnt_h; + + assert (incr <= powers->p_expo); + + /* If we increased the p.exponent by exactly 3 we have to test + for overflow. This is done by comparing with 10 shifted + to the right position. */ + if (incr == p.exponent + 3) + { + if (cnt_h <= BITS_PER_MP_LIMB - 4) + { + topval[0] = 0; + topval[1] + = ((mp_limb_t) 10) << (BITS_PER_MP_LIMB - 4 - cnt_h); + } + else + { + topval[0] = ((mp_limb_t) 10) << (BITS_PER_MP_LIMB - 4); + topval[1] = 0; + (void) __mpn_lshift (topval, topval, 2, + BITS_PER_MP_LIMB - cnt_h); + } + } + + /* We have to be careful when multiplying the last factor. + If the result is greater than 1.0 be have to test it + against 10.0. If it is greater or equal to 10.0 the + multiplication was not valid. This is because we cannot + determine the number of bits in the result in advance. */ + if (incr < p.exponent + 3 + || (incr == p.exponent + 3 && + (p.tmp[p.tmpsize - 1] < topval[1] + || (p.tmp[p.tmpsize - 1] == topval[1] + && p.tmp[p.tmpsize - 2] < topval[0])))) + { + /* The factor is right. Adapt binary and decimal + exponents. */ + p.exponent -= incr; + exp10 |= 1 << explog; + + /* If this factor yields a number greater or equal to + 1.0, we must not shift the non-fractional digits down. */ + if (p.exponent < 0) + cnt_h += -p.exponent; + + /* Now we optimize the number representation. */ + for (i = 0; p.tmp[i] == 0; ++i); + if (cnt_h == BITS_PER_MP_LIMB - 1) + { + MPN_COPY (p.frac, p.tmp + i, p.tmpsize - i); + p.fracsize = p.tmpsize - i; + } + else + { + count_trailing_zeros (cnt_l, p.tmp[i]); + + /* Now shift the numbers to their optimal position. */ + if (i == 0 && BITS_PER_MP_LIMB - 1 - cnt_h > cnt_l) + { + /* We cannot save any memory. Just roll the + number so that the leading digit is in a + separate limb. */ + + cy = __mpn_lshift (p.frac, p.tmp, p.tmpsize, + cnt_h + 1); + p.fracsize = p.tmpsize + 1; + p.frac[p.fracsize - 1] = cy; + } + else if (BITS_PER_MP_LIMB - 1 - cnt_h <= cnt_l) + { + (void) __mpn_rshift (p.frac, p.tmp + i, p.tmpsize - i, + BITS_PER_MP_LIMB - 1 - cnt_h); + p.fracsize = p.tmpsize - i; + } + else + { + /* We can only save the memory of the limbs which + are zero. The non-zero parts occupy the same + number of limbs. */ + + (void) __mpn_rshift (p.frac, p.tmp + (i - 1), + p.tmpsize - (i - 1), + BITS_PER_MP_LIMB - 1 - cnt_h); + p.fracsize = p.tmpsize - (i - 1); + } + } + } + } + --explog; + } + while (powers != &_fpioconst_pow10[1] && p.exponent > 0); + /* All factors but 10^-1 are tested now. */ + if (p.exponent > 0) + { + int cnt_l; + + cy = __mpn_mul_1 (p.tmp, p.frac, p.fracsize, 10); + p.tmpsize = p.fracsize; + assert (cy == 0 || p.tmp[p.tmpsize - 1] < 20); + + count_trailing_zeros (cnt_l, p.tmp[0]); + if (cnt_l < MIN (4, p.exponent)) + { + cy = __mpn_lshift (p.frac, p.tmp, p.tmpsize, + BITS_PER_MP_LIMB - MIN (4, p.exponent)); + if (cy != 0) + p.frac[p.tmpsize++] = cy; + } + else + (void) __mpn_rshift (p.frac, p.tmp, p.tmpsize, MIN (4, p.exponent)); + p.fracsize = p.tmpsize; + exp10 |= 1; + assert (p.frac[p.fracsize - 1] < 10); + } + p.exponent = exp10; + } + else + { + /* This is a special case. We don't need a factor because the + numbers are in the range of 1.0 <= |fp| < 8.0. We simply + shift it to the right place and divide it by 1.0 to get the + leading digit. (Of course this division is not really made.) */ + assert (0 <= p.exponent && p.exponent < 3 && + p.exponent + to_shift < BITS_PER_MP_LIMB); + + /* Now shift the input value to its right place. */ + cy = __mpn_lshift (p.frac, fp_input, p.fracsize, (p.exponent + to_shift)); + p.frac[p.fracsize++] = cy; + p.exponent = 0; + } + + { + int width = info->width; + wchar_t *wstartp, *wcp; + size_t chars_needed; + int expscale; + int intdig_max, intdig_no = 0; + int fracdig_min; + int fracdig_max; + int dig_max; + int significant; + int ngroups = 0; + char spec = _tolower (info->spec); + + if (spec == 'e') + { + p.type = info->spec; + intdig_max = 1; + fracdig_min = fracdig_max = info->prec < 0 ? 6 : info->prec; + chars_needed = 1 + 1 + (size_t) fracdig_max + 1 + 1 + 4; + /* d . ddd e +- ddd */ + dig_max = INT_MAX; /* Unlimited. */ + significant = 1; /* Does not matter here. */ + } + else if (spec == 'f') + { + p.type = 'f'; + fracdig_min = fracdig_max = info->prec < 0 ? 6 : info->prec; + dig_max = INT_MAX; /* Unlimited. */ + significant = 1; /* Does not matter here. */ + if (p.expsign == 0) + { + intdig_max = p.exponent + 1; + /* This can be really big! */ /* XXX Maybe malloc if too big? */ + chars_needed = (size_t) p.exponent + 1 + 1 + (size_t) fracdig_max; + } + else + { + intdig_max = 1; + chars_needed = 1 + 1 + (size_t) fracdig_max; + } + } + else + { + dig_max = info->prec < 0 ? 6 : (info->prec == 0 ? 1 : info->prec); + if ((p.expsign == 0 && p.exponent >= dig_max) + || (p.expsign != 0 && p.exponent > 4)) + { + if ('g' - 'G' == 'e' - 'E') + p.type = 'E' + (info->spec - 'G'); + else + p.type = isupper (info->spec) ? 'E' : 'e'; + fracdig_max = dig_max - 1; + intdig_max = 1; + chars_needed = 1 + 1 + (size_t) fracdig_max + 1 + 1 + 4; + } + else + { + p.type = 'f'; + intdig_max = p.expsign == 0 ? p.exponent + 1 : 0; + fracdig_max = dig_max - intdig_max; + /* We need space for the significant digits and perhaps + for leading zeros when < 1.0. The number of leading + zeros can be as many as would be required for + exponential notation with a negative two-digit + p.exponent, which is 4. */ + chars_needed = (size_t) dig_max + 1 + 4; + } + fracdig_min = info->alt ? fracdig_max : 0; + significant = 0; /* We count significant digits. */ + } + + if (grouping) + { + /* Guess the number of groups we will make, and thus how + many spaces we need for separator characters. */ + ngroups = __guess_grouping (intdig_max, grouping); + /* Allocate one more character in case rounding increases the + number of groups. */ + chars_needed += ngroups + 1; + } + + /* Allocate buffer for output. We need two more because while rounding + it is possible that we need two more characters in front of all the + other output. If the amount of memory we have to allocate is too + large use `malloc' instead of `alloca'. */ + if (__builtin_expect (chars_needed >= (size_t) -1 / sizeof (wchar_t) - 2 + || chars_needed < fracdig_max, 0)) + { + /* Some overflow occurred. */ + __set_errno (ERANGE); + return -1; + } + size_t wbuffer_to_alloc = (2 + chars_needed) * sizeof (wchar_t); + buffer_malloced = ! __libc_use_alloca (wbuffer_to_alloc); + if (__builtin_expect (buffer_malloced, 0)) + { + wbuffer = (wchar_t *) malloc (wbuffer_to_alloc); + if (wbuffer == NULL) + /* Signal an error to the caller. */ + return -1; + } + else + wbuffer = (wchar_t *) alloca (wbuffer_to_alloc); + wcp = wstartp = wbuffer + 2; /* Let room for rounding. */ + + /* Do the real work: put digits in allocated buffer. */ + if (p.expsign == 0 || p.type != 'f') + { + assert (p.expsign == 0 || intdig_max == 1); + while (intdig_no < intdig_max) + { + ++intdig_no; + *wcp++ = hack_digit (&p); + } + significant = 1; + if (info->alt + || fracdig_min > 0 + || (fracdig_max > 0 && (p.fracsize > 1 || p.frac[0] != 0))) + *wcp++ = decimalwc; + } + else + { + /* |fp| < 1.0 and the selected p.type is 'f', so put "0." + in the buffer. */ + *wcp++ = L'0'; + --p.exponent; + *wcp++ = decimalwc; + } + + /* Generate the needed number of fractional digits. */ + int fracdig_no = 0; + int added_zeros = 0; + while (fracdig_no < fracdig_min + added_zeros + || (fracdig_no < fracdig_max && (p.fracsize > 1 || p.frac[0] != 0))) + { + ++fracdig_no; + *wcp = hack_digit (&p); + if (*wcp++ != L'0') + significant = 1; + else if (significant == 0) + { + ++fracdig_max; + if (fracdig_min > 0) + ++added_zeros; + } + } + + /* Do rounding. */ + wchar_t last_digit = wcp[-1] != decimalwc ? wcp[-1] : wcp[-2]; + wchar_t next_digit = hack_digit (&p); + bool more_bits; + if (next_digit != L'0' && next_digit != L'5') + more_bits = true; + else if (p.fracsize == 1 && p.frac[0] == 0) + /* Rest of the number is zero. */ + more_bits = false; + else if (p.scalesize == 0) + { + /* Here we have to see whether all limbs are zero since no + normalization happened. */ + size_t lcnt = p.fracsize; + while (lcnt >= 1 && p.frac[lcnt - 1] == 0) + --lcnt; + more_bits = lcnt > 0; + } + else + more_bits = true; + int rounding_mode = get_rounding_mode (); + if (round_away (is_neg, (last_digit - L'0') & 1, next_digit >= L'5', + more_bits, rounding_mode)) + { + wchar_t *wtp = wcp; + + if (fracdig_no > 0) + { + /* Process fractional digits. Terminate if not rounded or + radix character is reached. */ + int removed = 0; + while (*--wtp != decimalwc && *wtp == L'9') + { + *wtp = L'0'; + ++removed; + } + if (removed == fracdig_min && added_zeros > 0) + --added_zeros; + if (*wtp != decimalwc) + /* Round up. */ + (*wtp)++; + else if (__builtin_expect (spec == 'g' && p.type == 'f' && info->alt + && wtp == wstartp + 1 + && wstartp[0] == L'0', + 0)) + /* This is a special case: the rounded number is 1.0, + the format is 'g' or 'G', and the alternative format + is selected. This means the result must be "1.". */ + --added_zeros; + } + + if (fracdig_no == 0 || *wtp == decimalwc) + { + /* Round the integer digits. */ + if (*(wtp - 1) == decimalwc) + --wtp; + + while (--wtp >= wstartp && *wtp == L'9') + *wtp = L'0'; + + if (wtp >= wstartp) + /* Round up. */ + (*wtp)++; + else + /* It is more critical. All digits were 9's. */ + { + if (p.type != 'f') + { + *wstartp = '1'; + p.exponent += p.expsign == 0 ? 1 : -1; + + /* The above p.exponent adjustment could lead to 1.0e-00, + e.g. for 0.999999999. Make sure p.exponent 0 always + uses + sign. */ + if (p.exponent == 0) + p.expsign = 0; + } + else if (intdig_no == dig_max) + { + /* This is the case where for p.type %g the number fits + really in the range for %f output but after rounding + the number of digits is too big. */ + *--wstartp = decimalwc; + *--wstartp = L'1'; + + if (info->alt || fracdig_no > 0) + { + /* Overwrite the old radix character. */ + wstartp[intdig_no + 2] = L'0'; + ++fracdig_no; + } + + fracdig_no += intdig_no; + intdig_no = 1; + fracdig_max = intdig_max - intdig_no; + ++p.exponent; + /* Now we must print the p.exponent. */ + p.type = isupper (info->spec) ? 'E' : 'e'; + } + else + { + /* We can simply add another another digit before the + radix. */ + *--wstartp = L'1'; + ++intdig_no; + } + + /* While rounding the number of digits can change. + If the number now exceeds the limits remove some + fractional digits. */ + if (intdig_no + fracdig_no > dig_max) + { + wcp -= intdig_no + fracdig_no - dig_max; + fracdig_no -= intdig_no + fracdig_no - dig_max; + } + } + } + } + + /* Now remove unnecessary '0' at the end of the string. */ + while (fracdig_no > fracdig_min + added_zeros && *(wcp - 1) == L'0') + { + --wcp; + --fracdig_no; + } + /* If we eliminate all fractional digits we perhaps also can remove + the radix character. */ + if (fracdig_no == 0 && !info->alt && *(wcp - 1) == decimalwc) + --wcp; + + if (grouping) + { + /* Rounding might have changed the number of groups. We allocated + enough memory but we need here the correct number of groups. */ + if (intdig_no != intdig_max) + ngroups = __guess_grouping (intdig_no, grouping); + + /* Add in separator characters, overwriting the same buffer. */ + wcp = group_number (wstartp, wcp, intdig_no, grouping, thousands_sepwc, + ngroups); + } + + /* Write the p.exponent if it is needed. */ + if (p.type != 'f') + { + if (__glibc_unlikely (p.expsign != 0 && p.exponent == 4 && spec == 'g')) + { + /* This is another special case. The p.exponent of the number is + really smaller than -4, which requires the 'e'/'E' format. + But after rounding the number has an p.exponent of -4. */ + assert (wcp >= wstartp + 1); + assert (wstartp[0] == L'1'); + __wmemcpy (wstartp, L"0.0001", 6); + wstartp[1] = decimalwc; + if (wcp >= wstartp + 2) + { + __wmemset (wstartp + 6, L'0', wcp - (wstartp + 2)); + wcp += 4; + } + else + wcp += 5; + } + else + { + *wcp++ = (wchar_t) p.type; + *wcp++ = p.expsign ? L'-' : L'+'; + + /* Find the magnitude of the p.exponent. */ + expscale = 10; + while (expscale <= p.exponent) + expscale *= 10; + + if (p.exponent < 10) + /* Exponent always has at least two digits. */ + *wcp++ = L'0'; + else + do + { + expscale /= 10; + *wcp++ = L'0' + (p.exponent / expscale); + p.exponent %= expscale; + } + while (expscale > 10); + *wcp++ = L'0' + p.exponent; + } + } + + /* Compute number of characters which must be filled with the padding + character. */ + if (is_neg || info->showsign || info->space) + --width; + width -= wcp - wstartp; + + if (!info->left && info->pad != '0' && width > 0) + PADN (info->pad, width); + + if (is_neg) + outchar ('-'); + else if (info->showsign) + outchar ('+'); + else if (info->space) + outchar (' '); + + if (!info->left && info->pad == '0' && width > 0) + PADN ('0', width); + + { + char *buffer = NULL; + char *buffer_end = NULL; + char *cp = NULL; + char *tmpptr; + + if (! wide) + { + /* Create the single byte string. */ + size_t decimal_len; + size_t thousands_sep_len; + wchar_t *copywc; + size_t factor; + if (info->i18n) + factor = _nl_lookup_word (loc, LC_CTYPE, _NL_CTYPE_MB_CUR_MAX); + else + factor = 1; + + decimal_len = strlen (decimal); + + if (thousands_sep == NULL) + thousands_sep_len = 0; + else + thousands_sep_len = strlen (thousands_sep); + + size_t nbuffer = (2 + chars_needed * factor + decimal_len + + ngroups * thousands_sep_len); + if (__glibc_unlikely (buffer_malloced)) + { + buffer = (char *) malloc (nbuffer); + if (buffer == NULL) + { + /* Signal an error to the caller. */ + free (wbuffer); + return -1; + } + } + else + buffer = (char *) alloca (nbuffer); + buffer_end = buffer + nbuffer; + + /* Now copy the wide character string. Since the character + (except for the decimal point and thousands separator) must + be coming from the ASCII range we can esily convert the + string without mapping tables. */ + for (cp = buffer, copywc = wstartp; copywc < wcp; ++copywc) + if (*copywc == decimalwc) + cp = (char *) __mempcpy (cp, decimal, decimal_len); + else if (*copywc == thousands_sepwc) + cp = (char *) __mempcpy (cp, thousands_sep, thousands_sep_len); + else + *cp++ = (char) *copywc; + } + + tmpptr = buffer; + if (__glibc_unlikely (info->i18n)) + { +#ifdef COMPILE_WPRINTF + wstartp = _i18n_number_rewrite (wstartp, wcp, + wbuffer + wbuffer_to_alloc); + wcp = wbuffer + wbuffer_to_alloc; + assert ((uintptr_t) wbuffer <= (uintptr_t) wstartp); + assert ((uintptr_t) wstartp + < (uintptr_t) wbuffer + wbuffer_to_alloc); +#else + tmpptr = _i18n_number_rewrite (tmpptr, cp, buffer_end); + cp = buffer_end; + assert ((uintptr_t) buffer <= (uintptr_t) tmpptr); + assert ((uintptr_t) tmpptr < (uintptr_t) buffer_end); +#endif + } + + PRINT (tmpptr, wstartp, wide ? wcp - wstartp : cp - tmpptr); + + /* Free the memory if necessary. */ + if (__glibc_unlikely (buffer_malloced)) + { + free (buffer); + free (wbuffer); + } + } + + if (info->left && width > 0) + PADN (info->pad, width); + } + return done; +} +libc_hidden_def (__printf_fp_l) + +int +___printf_fp (FILE *fp, const struct printf_info *info, + const void *const *args) +{ + return __printf_fp_l (fp, _NL_CURRENT_LOCALE, info, args); +} +ldbl_hidden_def (___printf_fp, __printf_fp) +ldbl_strong_alias (___printf_fp, __printf_fp) + + +/* Return the number of extra grouping characters that will be inserted + into a number with INTDIG_MAX integer digits. */ + +unsigned int +__guess_grouping (unsigned int intdig_max, const char *grouping) +{ + unsigned int groups; + + /* We treat all negative values like CHAR_MAX. */ + + if (*grouping == CHAR_MAX || *grouping <= 0) + /* No grouping should be done. */ + return 0; + + groups = 0; + while (intdig_max > (unsigned int) *grouping) + { + ++groups; + intdig_max -= *grouping++; + + if (*grouping == CHAR_MAX +#if CHAR_MIN < 0 + || *grouping < 0 +#endif + ) + /* No more grouping should be done. */ + break; + else if (*grouping == 0) + { + /* Same grouping repeats. */ + groups += (intdig_max - 1) / grouping[-1]; + break; + } + } + + return groups; +} + +/* Group the INTDIG_NO integer digits of the number in [BUF,BUFEND). + There is guaranteed enough space past BUFEND to extend it. + Return the new end of buffer. */ + +static wchar_t * +internal_function +group_number (wchar_t *buf, wchar_t *bufend, unsigned int intdig_no, + const char *grouping, wchar_t thousands_sep, int ngroups) +{ + wchar_t *p; + + if (ngroups == 0) + return bufend; + + /* Move the fractional part down. */ + __wmemmove (buf + intdig_no + ngroups, buf + intdig_no, + bufend - (buf + intdig_no)); + + p = buf + intdig_no + ngroups - 1; + do + { + unsigned int len = *grouping++; + do + *p-- = buf[--intdig_no]; + while (--len > 0); + *p-- = thousands_sep; + + if (*grouping == CHAR_MAX +#if CHAR_MIN < 0 + || *grouping < 0 +#endif + ) + /* No more grouping should be done. */ + break; + else if (*grouping == 0) + /* Same grouping repeats. */ + --grouping; + } while (intdig_no > (unsigned int) *grouping); + + /* Copy the remaining ungrouped digits. */ + do + *p-- = buf[--intdig_no]; + while (p > buf); + + return bufend + ngroups; +} diff --git a/REORG.TODO/stdio-common/printf_fphex.c b/REORG.TODO/stdio-common/printf_fphex.c new file mode 100644 index 0000000000..004d2aa716 --- /dev/null +++ b/REORG.TODO/stdio-common/printf_fphex.c @@ -0,0 +1,487 @@ +/* Print floating point number in hexadecimal notation according to ISO C99. + Copyright (C) 1997-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + + 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 <ctype.h> +#include <ieee754.h> +#include <math.h> +#include <printf.h> +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <wchar.h> +#include <_itoa.h> +#include <_itowa.h> +#include <locale/localeinfo.h> +#include <stdbool.h> +#include <rounding-mode.h> + +#if __HAVE_DISTINCT_FLOAT128 +# include "ieee754_float128.h" +# include <ldbl-128/printf_fphex_macros.h> +# define PRINT_FPHEX_FLOAT128 \ + PRINT_FPHEX (_Float128, fpnum.flt128, ieee854_float128, \ + IEEE854_FLOAT128_BIAS) +#endif + +/* #define NDEBUG 1*/ /* Undefine this for debugging assertions. */ +#include <assert.h> + +/* This defines make it possible to use the same code for GNU C library and + the GNU I/O library. */ +#include <libioP.h> +#define PUT(f, s, n) _IO_sputn (f, s, n) +#define PAD(f, c, n) (wide ? _IO_wpadn (f, c, n) : _IO_padn (f, c, n)) +/* We use this file GNU C library and GNU I/O library. So make + names equal. */ +#undef putc +#define putc(c, f) (wide \ + ? (int)_IO_putwc_unlocked (c, f) : _IO_putc_unlocked (c, f)) +#define size_t _IO_size_t +#define FILE _IO_FILE + +/* Macros for doing the actual output. */ + +#define outchar(ch) \ + do \ + { \ + const int outc = (ch); \ + if (putc (outc, fp) == EOF) \ + return -1; \ + ++done; \ + } while (0) + +#define PRINT(ptr, wptr, len) \ + do \ + { \ + size_t outlen = (len); \ + if (wide) \ + while (outlen-- > 0) \ + outchar (*wptr++); \ + else \ + while (outlen-- > 0) \ + outchar (*ptr++); \ + } while (0) + +#define PADN(ch, len) \ + do \ + { \ + if (PAD (fp, ch, len) != len) \ + return -1; \ + done += len; \ + } \ + while (0) + +#ifndef MIN +# define MIN(a,b) ((a)<(b)?(a):(b)) +#endif + + +int +__printf_fphex (FILE *fp, + const struct printf_info *info, + const void *const *args) +{ + /* The floating-point value to output. */ + union + { + union ieee754_double dbl; + long double ldbl; +#if __HAVE_DISTINCT_FLOAT128 + _Float128 flt128; +#endif + } + fpnum; + + /* Locale-dependent representation of decimal point. */ + const char *decimal; + wchar_t decimalwc; + + /* "NaN" or "Inf" for the special cases. */ + const char *special = NULL; + const wchar_t *wspecial = NULL; + + /* Buffer for the generated number string for the mantissa. The + maximal size for the mantissa is 128 bits. */ + char numbuf[32]; + char *numstr; + char *numend; + wchar_t wnumbuf[32]; + wchar_t *wnumstr; + wchar_t *wnumend; + int negative; + + /* The maximal exponent of two in decimal notation has 5 digits. */ + char expbuf[5]; + char *expstr; + wchar_t wexpbuf[5]; + wchar_t *wexpstr; + int expnegative; + int exponent; + + /* Non-zero is mantissa is zero. */ + int zero_mantissa; + + /* The leading digit before the decimal point. */ + char leading; + + /* Precision. */ + int precision = info->prec; + + /* Width. */ + int width = info->width; + + /* Number of characters written. */ + int done = 0; + + /* Nonzero if this is output on a wide character stream. */ + int wide = info->wide; + + + /* Figure out the decimal point character. */ + if (info->extra == 0) + { + decimal = _NL_CURRENT (LC_NUMERIC, DECIMAL_POINT); + decimalwc = _NL_CURRENT_WORD (LC_NUMERIC, _NL_NUMERIC_DECIMAL_POINT_WC); + } + else + { + decimal = _NL_CURRENT (LC_MONETARY, MON_DECIMAL_POINT); + decimalwc = _NL_CURRENT_WORD (LC_MONETARY, + _NL_MONETARY_DECIMAL_POINT_WC); + } + /* The decimal point character must never be zero. */ + assert (*decimal != '\0' && decimalwc != L'\0'); + +#define PRINTF_FPHEX_FETCH(FLOAT, VAR) \ + { \ + (VAR) = *(const FLOAT *) args[0]; \ + \ + /* Check for special values: not a number or infinity. */ \ + if (isnan (VAR)) \ + { \ + if (isupper (info->spec)) \ + { \ + special = "NAN"; \ + wspecial = L"NAN"; \ + } \ + else \ + { \ + special = "nan"; \ + wspecial = L"nan"; \ + } \ + } \ + else \ + { \ + if (isinf (VAR)) \ + { \ + if (isupper (info->spec)) \ + { \ + special = "INF"; \ + wspecial = L"INF"; \ + } \ + else \ + { \ + special = "inf"; \ + wspecial = L"inf"; \ + } \ + } \ + } \ + negative = signbit (VAR); \ + } + + /* Fetch the argument value. */ +#if __HAVE_DISTINCT_FLOAT128 + if (info->is_binary128) + PRINTF_FPHEX_FETCH (_Float128, fpnum.flt128) + else +#endif +#ifndef __NO_LONG_DOUBLE_MATH + if (info->is_long_double && sizeof (long double) > sizeof (double)) + PRINTF_FPHEX_FETCH (long double, fpnum.ldbl) + else +#endif + PRINTF_FPHEX_FETCH (double, fpnum.dbl.d) + +#undef PRINTF_FPHEX_FETCH + + if (special) + { + int width = info->width; + + if (negative || info->showsign || info->space) + --width; + width -= 3; + + if (!info->left && width > 0) + PADN (' ', width); + + if (negative) + outchar ('-'); + else if (info->showsign) + outchar ('+'); + else if (info->space) + outchar (' '); + + PRINT (special, wspecial, 3); + + if (info->left && width > 0) + PADN (' ', width); + + return done; + } + +#if __HAVE_DISTINCT_FLOAT128 + if (info->is_binary128) + PRINT_FPHEX_FLOAT128; + else +#endif + if (info->is_long_double == 0 || sizeof (double) == sizeof (long double)) + { + /* We have 52 bits of mantissa plus one implicit digit. Since + 52 bits are representable without rest using hexadecimal + digits we use only the implicit digits for the number before + the decimal point. */ + unsigned long long int num; + + num = (((unsigned long long int) fpnum.dbl.ieee.mantissa0) << 32 + | fpnum.dbl.ieee.mantissa1); + + zero_mantissa = num == 0; + + if (sizeof (unsigned long int) > 6) + { + wnumstr = _itowa_word (num, wnumbuf + (sizeof wnumbuf) / sizeof (wchar_t), 16, + info->spec == 'A'); + numstr = _itoa_word (num, numbuf + sizeof numbuf, 16, + info->spec == 'A'); + } + else + { + wnumstr = _itowa (num, wnumbuf + sizeof wnumbuf / sizeof (wchar_t), 16, + info->spec == 'A'); + numstr = _itoa (num, numbuf + sizeof numbuf, 16, + info->spec == 'A'); + } + + /* Fill with zeroes. */ + while (wnumstr > wnumbuf + (sizeof wnumbuf - 52) / sizeof (wchar_t)) + { + *--wnumstr = L'0'; + *--numstr = '0'; + } + + leading = fpnum.dbl.ieee.exponent == 0 ? '0' : '1'; + + exponent = fpnum.dbl.ieee.exponent; + + if (exponent == 0) + { + if (zero_mantissa) + expnegative = 0; + else + { + /* This is a denormalized number. */ + expnegative = 1; + exponent = IEEE754_DOUBLE_BIAS - 1; + } + } + else if (exponent >= IEEE754_DOUBLE_BIAS) + { + expnegative = 0; + exponent -= IEEE754_DOUBLE_BIAS; + } + else + { + expnegative = 1; + exponent = -(exponent - IEEE754_DOUBLE_BIAS); + } + } +#ifdef PRINT_FPHEX_LONG_DOUBLE + else + PRINT_FPHEX_LONG_DOUBLE; +#endif + + /* Look for trailing zeroes. */ + if (! zero_mantissa) + { + wnumend = &wnumbuf[sizeof wnumbuf / sizeof wnumbuf[0]]; + numend = &numbuf[sizeof numbuf / sizeof numbuf[0]]; + while (wnumend[-1] == L'0') + { + --wnumend; + --numend; + } + + bool do_round_away = false; + + if (precision != -1 && precision < numend - numstr) + { + char last_digit = precision > 0 ? numstr[precision - 1] : leading; + char next_digit = numstr[precision]; + int last_digit_value = (last_digit >= 'A' && last_digit <= 'F' + ? last_digit - 'A' + 10 + : (last_digit >= 'a' && last_digit <= 'f' + ? last_digit - 'a' + 10 + : last_digit - '0')); + int next_digit_value = (next_digit >= 'A' && next_digit <= 'F' + ? next_digit - 'A' + 10 + : (next_digit >= 'a' && next_digit <= 'f' + ? next_digit - 'a' + 10 + : next_digit - '0')); + bool more_bits = ((next_digit_value & 7) != 0 + || precision + 1 < numend - numstr); + int rounding_mode = get_rounding_mode (); + do_round_away = round_away (negative, last_digit_value & 1, + next_digit_value >= 8, more_bits, + rounding_mode); + } + + if (precision == -1) + precision = numend - numstr; + else if (do_round_away) + { + /* Round up. */ + int cnt = precision; + while (--cnt >= 0) + { + char ch = numstr[cnt]; + /* We assume that the digits and the letters are ordered + like in ASCII. This is true for the rest of GNU, too. */ + if (ch == '9') + { + wnumstr[cnt] = (wchar_t) info->spec; + numstr[cnt] = info->spec; /* This is tricky, + think about it! */ + break; + } + else if (tolower (ch) < 'f') + { + ++numstr[cnt]; + ++wnumstr[cnt]; + break; + } + else + { + numstr[cnt] = '0'; + wnumstr[cnt] = L'0'; + } + } + if (cnt < 0) + { + /* The mantissa so far was fff...f Now increment the + leading digit. Here it is again possible that we + get an overflow. */ + if (leading == '9') + leading = info->spec; + else if (tolower (leading) < 'f') + ++leading; + else + { + leading = '1'; + if (expnegative) + { + exponent -= 4; + if (exponent <= 0) + { + exponent = -exponent; + expnegative = 0; + } + } + else + exponent += 4; + } + } + } + } + else + { + if (precision == -1) + precision = 0; + numend = numstr; + wnumend = wnumstr; + } + + /* Now we can compute the exponent string. */ + expstr = _itoa_word (exponent, expbuf + sizeof expbuf, 10, 0); + wexpstr = _itowa_word (exponent, + wexpbuf + sizeof wexpbuf / sizeof (wchar_t), 10, 0); + + /* Now we have all information to compute the size. */ + width -= ((negative || info->showsign || info->space) + /* Sign. */ + + 2 + 1 + 0 + precision + 1 + 1 + /* 0x h . hhh P ExpoSign. */ + + ((expbuf + sizeof expbuf) - expstr)); + /* Exponent. */ + + /* Count the decimal point. + A special case when the mantissa or the precision is zero and the `#' + is not given. In this case we must not print the decimal point. */ + if (precision > 0 || info->alt) + width -= wide ? 1 : strlen (decimal); + + if (!info->left && info->pad != '0' && width > 0) + PADN (' ', width); + + if (negative) + outchar ('-'); + else if (info->showsign) + outchar ('+'); + else if (info->space) + outchar (' '); + + outchar ('0'); + if ('X' - 'A' == 'x' - 'a') + outchar (info->spec + ('x' - 'a')); + else + outchar (info->spec == 'A' ? 'X' : 'x'); + + if (!info->left && info->pad == '0' && width > 0) + PADN ('0', width); + + outchar (leading); + + if (precision > 0 || info->alt) + { + const wchar_t *wtmp = &decimalwc; + PRINT (decimal, wtmp, wide ? 1 : strlen (decimal)); + } + + if (precision > 0) + { + ssize_t tofill = precision - (numend - numstr); + PRINT (numstr, wnumstr, MIN (numend - numstr, precision)); + if (tofill > 0) + PADN ('0', tofill); + } + + if ('P' - 'A' == 'p' - 'a') + outchar (info->spec + ('p' - 'a')); + else + outchar (info->spec == 'A' ? 'P' : 'p'); + + outchar (expnegative ? '-' : '+'); + + PRINT (expstr, wexpstr, (expbuf + sizeof expbuf) - expstr); + + if (info->left && info->pad != '0' && width > 0) + PADN (info->pad, width); + + return done; +} diff --git a/REORG.TODO/stdio-common/printf_size.c b/REORG.TODO/stdio-common/printf_size.c new file mode 100644 index 0000000000..e20b76cf91 --- /dev/null +++ b/REORG.TODO/stdio-common/printf_size.c @@ -0,0 +1,236 @@ +/* Print size value using units for orders of magnitude. + Copyright (C) 1997-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. + Based on a proposal by Larry McVoy <lm@sgi.com>. + + 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 <ctype.h> +#include <ieee754.h> +#include <math.h> +#include <printf.h> +#include <libioP.h> + + +/* This defines make it possible to use the same code for GNU C library and + the GNU I/O library. */ +#define PUT(f, s, n) _IO_sputn (f, s, n) +#define PAD(f, c, n) (wide ? _IO_wpadn (f, c, n) : _IO_padn (f, c, n)) +/* We use this file GNU C library and GNU I/O library. So make + names equal. */ +#undef putc +#define putc(c, f) (wide \ + ? (int)_IO_putwc_unlocked (c, f) : _IO_putc_unlocked (c, f)) +#define size_t _IO_size_t +#define FILE _IO_FILE + +/* Macros for doing the actual output. */ + +#define outchar(ch) \ + do \ + { \ + const int outc = (ch); \ + if (putc (outc, fp) == EOF) \ + return -1; \ + ++done; \ + } while (0) + +#define PRINT(ptr, wptr, len) \ + do \ + { \ + size_t outlen = (len); \ + if (len > 20) \ + { \ + if (PUT (fp, wide ? (const char *) wptr : ptr, outlen) != outlen) \ + return -1; \ + ptr += outlen; \ + done += outlen; \ + } \ + else \ + { \ + if (wide) \ + while (outlen-- > 0) \ + outchar (*wptr++); \ + else \ + while (outlen-- > 0) \ + outchar (*ptr++); \ + } \ + } while (0) + +#define PADN(ch, len) \ + do \ + { \ + if (PAD (fp, ch, len) != len) \ + return -1; \ + done += len; \ + } \ + while (0) + +/* Prototype for helper functions. */ +extern int __printf_fp (FILE *fp, const struct printf_info *info, + const void *const *args); + + +int +__printf_size (FILE *fp, const struct printf_info *info, + const void *const *args) +{ + /* Units for the both formats. */ +#define BINARY_UNITS " kmgtpezy" +#define DECIMAL_UNITS " KMGTPEZY" + static const char units[2][sizeof (BINARY_UNITS)] = + { + BINARY_UNITS, /* For binary format. */ + DECIMAL_UNITS /* For decimal format. */ + }; + const char *tag = units[isupper (info->spec) != 0]; + int divisor = isupper (info->spec) ? 1000 : 1024; + + /* The floating-point value to output. */ + union + { + union ieee754_double dbl; + long double ldbl; +#if __HAVE_DISTINCT_FLOAT128 + _Float128 f128; +#endif + } + fpnum; + const void *ptr = &fpnum; + + int is_neg = 0; + + /* "NaN" or "Inf" for the special cases. */ + const char *special = NULL; + const wchar_t *wspecial = NULL; + + struct printf_info fp_info; + int done = 0; + int wide = info->wide; + +#define PRINTF_SIZE_FETCH(FLOAT, VAR) \ + { \ + (VAR) = *(const FLOAT *) args[0]; \ + \ + /* Check for special values: not a number or infinity. */ \ + if (isnan (VAR)) \ + { \ + special = "nan"; \ + wspecial = L"nan"; \ + /* is_neg = 0; Already zero */ \ + } \ + else if (isinf (VAR)) \ + { \ + is_neg = signbit (VAR); \ + special = "inf"; \ + wspecial = L"inf"; \ + } \ + else \ + while ((VAR) >= divisor && tag[1] != '\0') \ + { \ + (VAR) /= divisor; \ + ++tag; \ + } \ + } + + /* Fetch the argument value. */ +#if __HAVE_DISTINCT_FLOAT128 + if (info->is_binary128) + PRINTF_SIZE_FETCH (_Float128, fpnum.f128) + else +#endif +#ifndef __NO_LONG_DOUBLE_MATH + if (info->is_long_double && sizeof (long double) > sizeof (double)) + PRINTF_SIZE_FETCH (long double, fpnum.ldbl) + else +#endif + PRINTF_SIZE_FETCH (double, fpnum.dbl.d) + +#undef PRINTF_SIZE_FETCH + + if (special) + { + int width = info->prec > info->width ? info->prec : info->width; + + if (is_neg || info->showsign || info->space) + --width; + width -= 3; + + if (!info->left && width > 0) + PADN (' ', width); + + if (is_neg) + outchar ('-'); + else if (info->showsign) + outchar ('+'); + else if (info->space) + outchar (' '); + + PRINT (special, wspecial, 3); + + if (info->left && width > 0) + PADN (' ', width); + + return done; + } + + /* Prepare to print the number. We want to use `__printf_fp' so we + have to prepare a `printf_info' structure. */ + fp_info = *info; + fp_info.spec = 'f'; + fp_info.prec = info->prec < 0 ? 3 : info->prec; + fp_info.wide = wide; + + if (fp_info.left && fp_info.pad == L' ') + { + /* We must do the padding ourself since the unit character must + be placed before the padding spaces. */ + fp_info.width = 0; + + done = __printf_fp (fp, &fp_info, &ptr); + if (done > 0) + { + outchar (*tag); + if (info->width > done) + PADN (' ', info->width - done); + } + } + else + { + /* We can let __printf_fp do all the printing and just add our + unit character afterwards. */ + fp_info.width = info->width - 1; + + done = __printf_fp (fp, &fp_info, &ptr); + if (done > 0) + outchar (*tag); + } + + return done; +} +ldbl_strong_alias (__printf_size, printf_size); + +/* This is the function used by `vfprintf' to determine number and + type of the arguments. */ +int +printf_size_info (const struct printf_info *info, size_t n, int *argtypes) +{ + /* We need only one double or long double argument. */ + if (n >= 1) + argtypes[0] = PA_DOUBLE | (info->is_long_double ? PA_FLAG_LONG_DOUBLE : 0); + + return 1; +} diff --git a/REORG.TODO/stdio-common/psiginfo-data.h b/REORG.TODO/stdio-common/psiginfo-data.h new file mode 100644 index 0000000000..05bb76c179 --- /dev/null +++ b/REORG.TODO/stdio-common/psiginfo-data.h @@ -0,0 +1,50 @@ +#if NOW == SIGILL +P (ILL_ILLOPC, N_("Illegal opcode")) +P (ILL_ILLOPN, N_("Illegal operand")) +P (ILL_ILLADR, N_("Illegal addressing mode")) +P (ILL_ILLTRP, N_("Illegal trap")) +P (ILL_PRVOPC, N_("Privileged opcode")) +P (ILL_PRVREG, N_("Privileged register")) +P (ILL_COPROC, N_("Coprocessor error")) +P (ILL_BADSTK, N_("Internal stack error")) +#endif +#if NOW == SIGFPE +P (FPE_INTDIV, N_("Integer divide by zero")) +P (FPE_INTOVF, N_("Integer overflow")) +P (FPE_FLTDIV, N_("Floating-point divide by zero")) +P (FPE_FLTOVF, N_("Floating-point overflow")) +P (FPE_FLTUND, N_("Floating-point underflow")) +P (FPE_FLTRES, N_("Floating-poing inexact result")) +P (FPE_FLTINV, N_("Invalid floating-point operation")) +P (FPE_FLTSUB, N_("Subscript out of range")) +#endif +#if NOW == SIGSEGV +P (SEGV_MAPERR, N_("Address not mapped to object")) +P (SEGV_ACCERR, N_("Invalid permissions for mapped object")) +#endif +#if NOW == SIGBUS +P (BUS_ADRALN, N_("Invalid address alignment")) +P (BUS_ADRERR, N_("Nonexisting physical address")) +P (BUS_OBJERR, N_("Object-specific hardware error")) +#endif +#if NOW == SIGTRAP +P (TRAP_BRKPT, N_("Process breakpoint")) +P (TRAP_TRACE, N_("Process trace trap")) +#endif +#if NOW == SIGCLD +P (CLD_EXITED, N_("Child has exited")) +P (CLD_KILLED, N_("Child has terminated abnormally and did not create a core file")) +P (CLD_DUMPED, N_("Child has terminated abnormally and created a core file")) +P (CLD_TRAPPED, N_("Traced child has trapped")) +P (CLD_STOPPED, N_("Child has stopped")) +P (CLD_CONTINUED, N_("Stopped child has continued")) +#endif +#if NOW == SIGPOLL +P (POLL_IN, N_("Data input available")) +P (POLL_OUT, N_("Output buffers available")) +P (POLL_MSG, N_("Input message available")) +P (POLL_ERR, N_("I/O error")) +P (POLL_PRI, N_("High priority input available")) +P (POLL_HUP, N_("Device disconnected")) +#endif +#undef P diff --git a/REORG.TODO/stdio-common/psiginfo-define.h b/REORG.TODO/stdio-common/psiginfo-define.h new file mode 100644 index 0000000000..e1d1a351f8 --- /dev/null +++ b/REORG.TODO/stdio-common/psiginfo-define.h @@ -0,0 +1,15 @@ +static const union C(codestrs_t_, NOW) { + struct { +#define P(n, s) char MF(__LINE__)[sizeof (s)]; +#include "psiginfo-data.h" + }; + char str[0]; +} C(codestrs_, NOW) = { { +#define P(n, s) s, +#include "psiginfo-data.h" + } }; +static const uint8_t C(codes_, NOW)[] = { +#define P(n, s) [(n) - 1] = offsetof (union C(codestrs_t_, NOW), MF(__LINE__)), +#include "psiginfo-data.h" +}; +#undef NOW diff --git a/REORG.TODO/stdio-common/psiginfo.c b/REORG.TODO/stdio-common/psiginfo.c new file mode 100644 index 0000000000..6954a42458 --- /dev/null +++ b/REORG.TODO/stdio-common/psiginfo.c @@ -0,0 +1,203 @@ +/* Copyright (C) 2009-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <errno.h> +#include <libintl.h> +#include <signal.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <not-cancel.h> + + +#define MF(l) MF1 (l) +#define MF1(l) str_##l +#define C(s1, s2) C1 (s1, s2) +#define C1(s1, s2) s1##s2 + +#define NOW SIGILL +#include "psiginfo-define.h" + +#define NOW SIGFPE +#include "psiginfo-define.h" + +#define NOW SIGSEGV +#include "psiginfo-define.h" + +#define NOW SIGBUS +#include "psiginfo-define.h" + +#define NOW SIGTRAP +#include "psiginfo-define.h" + +#define NOW SIGCLD +#include "psiginfo-define.h" + +#define NOW SIGPOLL +#include "psiginfo-define.h" + + +/* Print out on stderr a line consisting of the test in S, a colon, a space, + a message describing the meaning of the signal number PINFO and a newline. + If S is NULL or "", the colon and space are omitted. */ +void +psiginfo (const siginfo_t *pinfo, const char *s) +{ + char buf[512]; + FILE *fp = __fmemopen (buf, sizeof (buf), "w"); + if (fp == NULL) + { + const char *colon; + + if (s == NULL || *s == '\0') + s = colon = ""; + else + colon = ": "; + + __fxprintf (NULL, "%s%ssignal %d\n", s, colon, pinfo->si_signo); + return; + } + + if (s != NULL && *s != '\0') + fprintf (fp, "%s: ", s); + + const char *desc; + if (pinfo->si_signo >= 0 && pinfo->si_signo < NSIG + && ((desc = _sys_siglist[pinfo->si_signo]) != NULL +#ifdef SIGRTMIN + || (pinfo->si_signo >= SIGRTMIN && pinfo->si_signo < SIGRTMAX) +#endif + )) + { +#ifdef SIGRTMIN + if (desc == NULL) + { + if (pinfo->si_signo - SIGRTMIN < SIGRTMAX - pinfo->si_signo) + { + if (pinfo->si_signo == SIGRTMIN) + fprintf (fp, "SIGRTMIN ("); + else + fprintf (fp, "SIGRTMIN+%d (", pinfo->si_signo - SIGRTMIN); + } + else + { + if (pinfo->si_signo == SIGRTMAX) + fprintf (fp, "SIGRTMAX ("); + else + fprintf (fp, "SIGRTMAX-%d (", SIGRTMAX - pinfo->si_signo); + } + } + else +#endif + fprintf (fp, "%s (", _(desc)); + + const char *base = NULL; + const uint8_t *offarr = NULL; + size_t offarr_len = 0; + switch (pinfo->si_signo) + { +#define H(sig) \ + case sig: \ + base = C(codestrs_, sig).str; \ + offarr = C (codes_, sig); \ + offarr_len = sizeof (C (codes_, sig)) / sizeof (C (codes_, sig)[0]);\ + break + + H (SIGILL); + H (SIGFPE); + H (SIGSEGV); + H (SIGBUS); + H (SIGTRAP); + H (SIGCHLD); + H (SIGPOLL); + } + + const char *str = NULL; + if (offarr != NULL + && pinfo->si_code >= 1 && pinfo->si_code <= offarr_len) + str = base + offarr[pinfo->si_code - 1]; + else + switch (pinfo->si_code) + { + case SI_USER: + str = N_("Signal sent by kill()"); + break; + case SI_QUEUE: + str = N_("Signal sent by sigqueue()"); + break; + case SI_TIMER: + str = N_("Signal generated by the expiration of a timer"); + break; + case SI_ASYNCIO: + str = N_("\ +Signal generated by the completion of an asynchronous I/O request"); + break; + case SI_MESGQ: + str = N_("\ +Signal generated by the arrival of a message on an empty message queue"); + break; +#ifdef SI_TKILL + case SI_TKILL: + str = N_("Signal sent by tkill()"); + break; +#endif +#ifdef SI_ASYNCNL + case SI_ASYNCNL: + str = N_("\ +Signal generated by the completion of an asynchronous name lookup request"); + break; +#endif +#ifdef SI_SIGIO + case SI_SIGIO: + str = N_("\ +Signal generated by the completion of an I/O request"); + break; +#endif +#ifdef SI_KERNEL + case SI_KERNEL: + str = N_("Signal sent by the kernel"); + break; +#endif + } + + if (str != NULL) + fprintf (fp, "%s ", _(str)); + else + fprintf (fp, "%d ", pinfo->si_code); + + if (pinfo->si_signo == SIGILL || pinfo->si_signo == SIGFPE + || pinfo->si_signo == SIGSEGV || pinfo->si_signo == SIGBUS) + fprintf (fp, "[%p])\n", pinfo->si_addr); + else if (pinfo->si_signo == SIGCHLD) + fprintf (fp, "%ld %d %ld)\n", + (long int) pinfo->si_pid, pinfo->si_status, + (long int) pinfo->si_uid); + else if (pinfo->si_signo == SIGPOLL) + fprintf (fp, "%ld)\n", (long int) pinfo->si_band); + else + fprintf (fp, "%ld %ld)\n", + (long int) pinfo->si_pid, (long int) pinfo->si_uid); + } + else + fprintf (fp, _("Unknown signal %d\n"), pinfo->si_signo); + + fclose (fp); + + write_not_cancel (STDERR_FILENO, buf, strlen (buf)); +} diff --git a/REORG.TODO/stdio-common/psignal.c b/REORG.TODO/stdio-common/psignal.c new file mode 100644 index 0000000000..71c56a78a9 --- /dev/null +++ b/REORG.TODO/stdio-common/psignal.c @@ -0,0 +1,52 @@ +/* Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <stdio.h> +#include <signal.h> +#include <stdlib.h> +#include <libintl.h> +#include <wchar.h> + +/* Print out on stderr a line consisting of the test in S, a colon, a space, + a message describing the meaning of the signal number SIG and a newline. + If S is NULL or "", the colon and space are omitted. */ +void +psignal (int sig, const char *s) +{ + const char *colon, *desc; + + if (s == NULL || *s == '\0') + s = colon = ""; + else + colon = ": "; + + if (sig >= 0 && sig < NSIG && (desc = _sys_siglist[sig]) != NULL) + (void) __fxprintf (NULL, "%s%s%s\n", s, colon, _(desc)); + else + { + char *buf; + + if (__asprintf (&buf, _("%s%sUnknown signal %d\n"), s, colon, sig) < 0) + (void) __fxprintf (NULL, "%s%s%s\n", s, colon, _("Unknown signal")); + else + { + (void) __fxprintf (NULL, "%s", buf); + + free (buf); + } + } +} diff --git a/REORG.TODO/stdio-common/putw.c b/REORG.TODO/stdio-common/putw.c new file mode 100644 index 0000000000..2b0e6ad3d7 --- /dev/null +++ b/REORG.TODO/stdio-common/putw.c @@ -0,0 +1,30 @@ +/* Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <stdio.h> +#include <libio/iolibio.h> +#define fwrite(p, n, m, s) _IO_fwrite (p, n, m, s) + +/* Write the word (int) W to STREAM. */ +int +putw (int w, FILE *stream) +{ + /* Is there a better way? */ + if (fwrite ((const void *) &w, sizeof (w), 1, stream) < 1) + return EOF; + return 0; +} diff --git a/REORG.TODO/stdio-common/reg-modifier.c b/REORG.TODO/stdio-common/reg-modifier.c new file mode 100644 index 0000000000..783dcd3273 --- /dev/null +++ b/REORG.TODO/stdio-common/reg-modifier.c @@ -0,0 +1,202 @@ +/* Copyright (C) 2009-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <errno.h> +#include <limits.h> +#include <printf.h> +#include <stdlib.h> +#include <wchar.h> +#include <libc-lock.h> + + +struct printf_modifier_record +{ + struct printf_modifier_record *next; + int bit; + wchar_t str[0]; +}; + +struct printf_modifier_record **__printf_modifier_table attribute_hidden; + +__libc_lock_define_initialized (static, lock) + +/* Bits to hand out. */ +static int next_bit; + + +int +__register_printf_modifier (const wchar_t *str) +{ + if (str[0] == L'\0') + { + einval: + __set_errno (EINVAL); + return -1; + } + + const wchar_t *wc = str; + while (*wc != L'\0') + if (*wc < 0 || *wc > (wchar_t) UCHAR_MAX) + goto einval; + else + ++wc; + + if (next_bit / 8 == sizeof (((struct printf_info *) NULL)->user)) + { + __set_errno (ENOSPC); + return -1; + } + + int result = -1; + __libc_lock_lock (lock); + + if (__printf_modifier_table == NULL) + { + __printf_modifier_table = calloc (UCHAR_MAX, + sizeof (*__printf_modifier_table)); + if (__printf_modifier_table == NULL) + goto out; + } + + /* Create enough room for the string. But we don't need the first + character. */ + struct printf_modifier_record *newp = malloc (sizeof (*newp) + + ((wc - str) + * sizeof (wchar_t))); + if (newp == NULL) + goto out; + + newp->next = __printf_modifier_table[(unsigned char) *str]; + newp->bit = 1 << next_bit++; + __wmemcpy (newp->str, str + 1, wc - str); + + __printf_modifier_table[(unsigned char) *str] = newp; + + result = newp->bit; + + out: + __libc_lock_unlock (lock); + + return result; +} +weak_alias (__register_printf_modifier, register_printf_modifier) + + +#include <stdio.h> +int +attribute_hidden +__handle_registered_modifier_mb (const unsigned char **format, + struct printf_info *info) +{ + struct printf_modifier_record *runp = __printf_modifier_table[**format]; + + int best_bit = 0; + int best_len = 0; + const unsigned char *best_cp = NULL; + + while (runp != NULL) + { + const unsigned char *cp = *format + 1; + wchar_t *fcp = runp->str; + + while (*cp != '\0' && *fcp != L'\0') + if (*cp != *fcp) + break; + else + ++cp, ++fcp; + + if (*fcp == L'\0' && cp - *format > best_len) + { + best_cp = cp; + best_len = cp - *format; + best_bit = runp->bit; + } + + runp = runp->next; + } + + if (best_bit != 0) + { + info->user |= best_bit; + *format = best_cp; + return 0; + } + + return 1; +} + + +int +attribute_hidden +__handle_registered_modifier_wc (const unsigned int **format, + struct printf_info *info) +{ + struct printf_modifier_record *runp = __printf_modifier_table[**format]; + + int best_bit = 0; + int best_len = 0; + const unsigned int *best_cp = NULL; + + while (runp != NULL) + { + const unsigned int *cp = *format + 1; + wchar_t *fcp = runp->str; + + while (*cp != '\0' && *fcp != L'\0') + if (*cp != *fcp) + break; + else + ++cp, ++fcp; + + if (*fcp == L'\0' && cp - *format > best_len) + { + best_cp = cp; + best_len = cp - *format; + best_bit = runp->bit; + } + + runp = runp->next; + } + + if (best_bit != 0) + { + info->user |= best_bit; + *format = best_cp; + return 0; + } + + return 1; +} + + +libc_freeres_fn (free_mem) +{ + if (__printf_modifier_table != NULL) + { + for (int i = 0; i < UCHAR_MAX; ++i) + { + struct printf_modifier_record *runp = __printf_modifier_table[i]; + while (runp != NULL) + { + struct printf_modifier_record *oldp = runp; + runp = runp->next; + free (oldp); + } + } + free (__printf_modifier_table); + } +} diff --git a/REORG.TODO/stdio-common/reg-printf.c b/REORG.TODO/stdio-common/reg-printf.c new file mode 100644 index 0000000000..cbb9307795 --- /dev/null +++ b/REORG.TODO/stdio-common/reg-printf.c @@ -0,0 +1,86 @@ +/* Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <errno.h> +#include <limits.h> +#include <printf.h> +#include <stddef.h> +#include <stdlib.h> +#include <libc-lock.h> + + +/* Array of functions indexed by format character. */ +libc_freeres_ptr (printf_arginfo_size_function **__printf_arginfo_table) + attribute_hidden; +printf_function **__printf_function_table attribute_hidden; + +__libc_lock_define_initialized (static, lock) + +int __register_printf_specifier (int, printf_function, + printf_arginfo_size_function); +int __register_printf_function (int, printf_function, + printf_arginfo_function); + + +/* Register FUNC to be called to format SPEC specifiers. */ +int +__register_printf_specifier (int spec, printf_function converter, + printf_arginfo_size_function arginfo) +{ + if (spec < 0 || spec > (int) UCHAR_MAX) + { + __set_errno (EINVAL); + return -1; + } + + int result = 0; + __libc_lock_lock (lock); + + if (__printf_function_table == NULL) + { + __printf_arginfo_table = (printf_arginfo_size_function **) + calloc (UCHAR_MAX + 1, sizeof (void *) * 2); + if (__printf_arginfo_table == NULL) + { + result = -1; + goto out; + } + + __printf_function_table = (printf_function **) + (__printf_arginfo_table + UCHAR_MAX + 1); + } + + __printf_function_table[spec] = converter; + __printf_arginfo_table[spec] = arginfo; + + out: + __libc_lock_unlock (lock); + + return result; +} +weak_alias (__register_printf_specifier, register_printf_specifier) + + +/* Register FUNC to be called to format SPEC specifiers. */ +int +__register_printf_function (int spec, printf_function converter, + printf_arginfo_function arginfo) +{ + return __register_printf_specifier (spec, converter, + (printf_arginfo_size_function*) arginfo); +} +weak_alias (__register_printf_function, register_printf_function) diff --git a/REORG.TODO/stdio-common/reg-type.c b/REORG.TODO/stdio-common/reg-type.c new file mode 100644 index 0000000000..cc8952754a --- /dev/null +++ b/REORG.TODO/stdio-common/reg-type.c @@ -0,0 +1,61 @@ +/* Copyright (C) 2009-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <errno.h> +#include <printf.h> +#include <stdlib.h> +#include <libc-lock.h> + + +/* Array of functions indexed by format character. */ +libc_freeres_ptr (printf_va_arg_function **__printf_va_arg_table) + attribute_hidden; + +__libc_lock_define_initialized (static, lock); + +/* Last type allocated. */ +static int pa_next_type = PA_LAST; + + +int +__register_printf_type (printf_va_arg_function fct) +{ + int result = -1; + __libc_lock_lock (lock); + + if (__printf_va_arg_table == NULL) + { + __printf_va_arg_table = (printf_va_arg_function **) + calloc (0x100 - PA_LAST, sizeof (void *)); + if (__printf_va_arg_table == NULL) + goto out; + } + + if (pa_next_type == 0x100) + __set_errno (ENOSPC); + else + { + result = pa_next_type++; + __printf_va_arg_table[result - PA_LAST] = fct; + } + + out: + __libc_lock_unlock (lock); + + return result; +} +weak_alias (__register_printf_type, register_printf_type) diff --git a/REORG.TODO/stdio-common/remove.c b/REORG.TODO/stdio-common/remove.c new file mode 100644 index 0000000000..75a212ff74 --- /dev/null +++ b/REORG.TODO/stdio-common/remove.c @@ -0,0 +1,30 @@ +/* ANSI C `remove' function to delete a file or directory. Stub version. + Copyright (C) 1995-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <errno.h> +#include <stdio.h> + +int +remove (const char *file) +{ + __set_errno (ENOSYS); + return -1; +} +libc_hidden_def (remove) + +stub_warning (remove) diff --git a/REORG.TODO/stdio-common/rename.c b/REORG.TODO/stdio-common/rename.c new file mode 100644 index 0000000000..a71e3420b4 --- /dev/null +++ b/REORG.TODO/stdio-common/rename.c @@ -0,0 +1,37 @@ +/* Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <stdio.h> +#include <errno.h> + + +/* Rename the file OLD to NEW. */ +int +rename (const char *old, const char *new) +{ + if (old == NULL || new == NULL) + { + __set_errno (EINVAL); + return -1; + } + + __set_errno (ENOSYS); + return -1; +} + + +stub_warning (rename) diff --git a/REORG.TODO/stdio-common/renameat.c b/REORG.TODO/stdio-common/renameat.c new file mode 100644 index 0000000000..5bfbfb6f04 --- /dev/null +++ b/REORG.TODO/stdio-common/renameat.c @@ -0,0 +1,44 @@ +/* Copyright (C) 2005-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <errno.h> +#include <fcntl.h> +#include <stdio.h> + + +/* Rename the file OLD relative to OLDFD to NEW relative to NEWFD. */ +int +renameat (int oldfd, const char *old, int newfd, const char *new) +{ + if ((oldfd < 0 && oldfd != AT_FDCWD) || (newfd < 0 && newfd != AT_FDCWD)) + { + __set_errno (EBADF); + return -1; + } + + if (old == NULL || new == NULL) + { + __set_errno (EINVAL); + return -1; + } + + __set_errno (ENOSYS); + return -1; +} + + +stub_warning (renameat) diff --git a/REORG.TODO/stdio-common/scanf.c b/REORG.TODO/stdio-common/scanf.c new file mode 100644 index 0000000000..3caddcb5aa --- /dev/null +++ b/REORG.TODO/stdio-common/scanf.c @@ -0,0 +1,38 @@ +/* Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <stdarg.h> +#include <stdio.h> + +#include <libioP.h> + + +/* Read formatted input from stdin according to the format string FORMAT. */ +/* VARARGS1 */ +int +__scanf (const char *format, ...) +{ + va_list arg; + int done; + + va_start (arg, format); + done = _IO_vfscanf (stdin, format, arg, NULL); + va_end (arg); + + return done; +} +ldbl_strong_alias (__scanf, scanf) diff --git a/REORG.TODO/stdio-common/scanf1.c b/REORG.TODO/stdio-common/scanf1.c new file mode 100644 index 0000000000..be6d63e997 --- /dev/null +++ b/REORG.TODO/stdio-common/scanf1.c @@ -0,0 +1,15 @@ +#include <stdio.h> +#include <stdlib.h> + +int +main (int argc, char *argv[]) +{ + int i,n,r; + + n = i = r = -1; + r = sscanf ("1234:567", "%d%n", &i, &n); + printf ("%d %d %d\n", r, n, i); + if (r != 1 || i != 1234 || n != 4) + abort (); + return 0; +} diff --git a/REORG.TODO/stdio-common/scanf10.c b/REORG.TODO/stdio-common/scanf10.c new file mode 100644 index 0000000000..f8961378ef --- /dev/null +++ b/REORG.TODO/stdio-common/scanf10.c @@ -0,0 +1,15 @@ +#include <stdio.h> +#include <string.h> + +int +main (int argc, char *argv[]) +{ + const char teststring[] = "<tag `word'>"; + int retc, a, b; + + retc = sscanf (teststring, "<%*s `%n%*s%n'>", &a, &b); + + printf ("retc=%d a=%d b=%d\n", retc, a, b); + + return retc == -1 && a == 6 && b == 12 ? 0 : 1; +} diff --git a/REORG.TODO/stdio-common/scanf11.c b/REORG.TODO/stdio-common/scanf11.c new file mode 100644 index 0000000000..f456a0b13d --- /dev/null +++ b/REORG.TODO/stdio-common/scanf11.c @@ -0,0 +1,46 @@ +/* Copyright (C) 2001-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@redhat.com>, 2001. + + 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 <ctype.h> +#include <stdio.h> + +int +main (int argc, char *argv[]) +{ + int exc = 0; + int retc; + float f; + int d; + char str[] = "x 1"; + int c; + + for (c = 1; c < 127; ++c) + if (! isdigit (c) && ! isspace (c)) + { + str[0] = c; + retc = sscanf (str, "%e %d", &f, &d); + if (retc != 0) + { + printf ("sscanf (\"%s\", \"%%e %%d\", ...) == %d, not 0\n", + str, retc); + exc = 1; + } + } + + return exc; +} diff --git a/REORG.TODO/stdio-common/scanf12.c b/REORG.TODO/stdio-common/scanf12.c new file mode 100644 index 0000000000..db37e2fedc --- /dev/null +++ b/REORG.TODO/stdio-common/scanf12.c @@ -0,0 +1,23 @@ +#include <stdio.h> +#include <stdlib.h> + +int +main (void) +{ + double d; + int c; + + if (scanf ("%lg", &d) != 0) + { + printf ("scanf didn't failed\n"); + exit (1); + } + c = getchar (); + if (c != ' ') + { + printf ("c is `%c', not ` '\n", c); + exit (1); + } + + return 0; +} diff --git a/REORG.TODO/stdio-common/scanf12.input b/REORG.TODO/stdio-common/scanf12.input new file mode 100644 index 0000000000..41aa98aa8b --- /dev/null +++ b/REORG.TODO/stdio-common/scanf12.input @@ -0,0 +1 @@ ++ foo diff --git a/REORG.TODO/stdio-common/scanf13.c b/REORG.TODO/stdio-common/scanf13.c new file mode 100644 index 0000000000..720224aa05 --- /dev/null +++ b/REORG.TODO/stdio-common/scanf13.c @@ -0,0 +1,186 @@ +#include <locale.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <wchar.h> + +int +main (void) +{ + char *sp1, *sp2, *sp3, *sp4; + wchar_t *lsp1, *lsp2, *lsp3, *lsp4; + int result = 0; + char buf[2048+64]; + size_t i; + +#define FAIL() \ + do { \ + result = 1; \ + printf ("test at line %d failed\n", __LINE__); \ + } while (0) + + setlocale (LC_ALL, "de_DE.UTF-8"); + if (sscanf ("A \xc3\x84-\t\t\xc3\x84-abcdefbcd\t\xc3\x84-B", + "A%ms%10ms%4m[bcd]%4mcB", &sp1, &sp2, &sp3, &sp4) != 4) + FAIL (); + else + { + if (strcmp (sp1, "\xc3\x84-") != 0) + FAIL (); + free (sp1); + if (strcmp (sp2, "\xc3\x84-abcdefb") != 0) + FAIL (); + free (sp2); + if (strcmp (sp3, "cd") != 0) + FAIL (); + free (sp3); + if (memcmp (sp4, "\t\xc3\x84-", 4) != 0) + FAIL (); + free (sp4); + } + + if (sscanf ("A \xc3\x84-\t\t\xc3\x84-abcdefbcd\t\xc3\x84-BB", + "A%mS%10mls%4ml[bcd]%4mCB", &lsp1, &lsp2, &lsp3, &lsp4) != 4) + FAIL (); + else + { + if (wcscmp (lsp1, L"\xc4-") != 0) + FAIL (); + free (lsp1); + if (wcscmp (lsp2, L"\xc4-abcdefbc") != 0) + FAIL (); + free (lsp2); + if (wcscmp (lsp3, L"d") != 0) + FAIL (); + free (lsp3); + if (memcmp (lsp4, L"\t\xc4-B", 4 * sizeof (wchar_t)) != 0) + FAIL (); + free (lsp4); + } + + memset (buf, '/', sizeof (buf)); + buf[0] = '\t'; + buf[1] = ' '; + buf[2] = 0xc3; + buf[3] = 0x84; + buf[2048] = 0xc3; + buf[2049] = 0x84; + buf[2058] = '\t'; + buf[2059] = 'a'; + if (sscanf (buf, "%ms%mc", &sp1, &sp2) != 2) + FAIL (); + else + { + if (sp1[0] != '\xc3' || sp1[1] != '\x84' + || sp1[2046] != '\xc3' || sp1[2047] != '\x84' + || sp1[2056] != '\0') + FAIL (); + sp1[2046] = '/'; + sp1[2047] = '/'; + for (i = 2; i < 2056; i++) + if (sp1[i] != '/') + FAIL (); + free (sp1); + if (sp2[0] != '\t') + FAIL (); + free (sp2); + } + if (sscanf (buf, "%2048ms%mc", &sp3, &sp4) != 2) + FAIL (); + else + { + if (sp3[0] != '\xc3' || sp3[1] != '\x84' + || sp3[2046] != '\xc3' || sp3[2047] != '\x84' + || sp3[2048] != '\0') + FAIL (); + for (i = 2; i < 2046; i++) + if (sp3[i] != '/') + FAIL (); + free (sp3); + if (sp4[0] != '/') + FAIL (); + free (sp4); + } + if (sscanf (buf, "%4mc%1500m[dr/]%548m[abc/d]%3mc", &sp1, &sp2, &sp3, &sp4) + != 4) + FAIL (); + else + { + if (memcmp (sp1, "\t \xc3\x84", 4) != 0) + FAIL (); + free (sp1); + for (i = 0; i < 1500; i++) + if (sp2[i] != '/') + FAIL (); + if (sp2[1500] != '\0') + FAIL (); + free (sp2); + for (i = 0; i < 544; i++) + if (sp3[i] != '/') + FAIL (); + if (sp3[544] != '\0') + FAIL (); + free (sp3); + if (memcmp (sp4, "\xc3\x84/", 3) != 0) + FAIL (); + free (sp4); + } + if (sscanf (buf, "%mS%mC", &lsp1, &lsp2) != 2) + FAIL (); + else + { + if (lsp1[0] != L'\xc4' || lsp1[2045] != L'\xc4' + || lsp1[2054] != L'\0') + FAIL (); + lsp1[2045] = L'/'; + for (i = 1; i < 2054; i++) + if (lsp1[i] != L'/') + FAIL (); + free (lsp1); + if (lsp2[0] != L'\t') + FAIL (); + free (lsp2); + } + if (sscanf (buf, "%2048mls%mlc", &lsp3, &lsp4) != 2) + FAIL (); + else + { + if (lsp3[0] != L'\xc4' || lsp3[2045] != L'\xc4' + || lsp3[2048] != L'\0') + FAIL (); + lsp3[2045] = L'/'; + for (i = 1; i < 2048; i++) + if (lsp3[i] != L'/') + FAIL (); + free (lsp3); + if (lsp4[0] != L'/') + FAIL (); + free (lsp4); + } + if (sscanf (buf, "%4mC%1500ml[dr/]%548ml[abc/d]%3mlc", + &lsp1, &lsp2, &lsp3, &lsp4) != 4) + FAIL (); + else + { + if (memcmp (lsp1, L"\t \xc4/", 4 * sizeof (wchar_t)) != 0) + FAIL (); + free (lsp1); + for (i = 0; i < 1500; i++) + if (lsp2[i] != L'/') + FAIL (); + if (lsp2[1500] != L'\0') + FAIL (); + free (lsp2); + for (i = 0; i < 543; i++) + if (lsp3[i] != L'/') + FAIL (); + if (lsp3[543] != L'\0') + FAIL (); + free (lsp3); + if (memcmp (lsp4, L"\xc4//", 3 * sizeof (wchar_t)) != 0) + FAIL (); + free (lsp4); + } + + return result; +} diff --git a/REORG.TODO/stdio-common/scanf14.c b/REORG.TODO/stdio-common/scanf14.c new file mode 100644 index 0000000000..2bcd9c9893 --- /dev/null +++ b/REORG.TODO/stdio-common/scanf14.c @@ -0,0 +1,137 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <wchar.h> +#include <libc-diag.h> + +#define FAIL() \ + do { \ + result = 1; \ + printf ("test at line %d failed\n", __LINE__); \ + } while (0) + +int +main (void) +{ + wchar_t *lsp; + char *sp; + float f; + double d; + char c[8]; + int result = 0; + + if (sscanf (" 0.25s x", "%e%3c", &f, c) != 2) + FAIL (); + else if (f != 0.25 || memcmp (c, "s x", 3) != 0) + FAIL (); + /* GCC in C99 mode treats %a as the C99 format expecting float *, + but glibc with _GNU_SOURCE treats %as as the GNU allocation + extension, so resulting in "warning: format '%a' expects argument + of type 'float *', but argument 3 has type 'char **'". This + applies to the other %as, %aS and %a[] formats below as well. */ + DIAG_PUSH_NEEDS_COMMENT; + DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wformat"); + if (sscanf (" 1.25s x", "%as%2c", &sp, c) != 2) + FAIL (); + else + { + if (strcmp (sp, "1.25s") != 0 || memcmp (c, " x", 2) != 0) + FAIL (); + memset (sp, 'x', sizeof "1.25s"); + free (sp); + } + DIAG_POP_NEEDS_COMMENT; + if (sscanf (" 2.25s x", "%las%2c", &d, c) != 2) + FAIL (); + else if (d != 2.25 || memcmp (c, " x", 2) != 0) + FAIL (); + /* See explanation above. */ + DIAG_PUSH_NEEDS_COMMENT; + DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wformat"); + if (sscanf (" 3.25S x", "%4aS%3c", &lsp, c) != 2) + FAIL (); + else + { + if (wcscmp (lsp, L"3.25") != 0 || memcmp (c, "S x", 3) != 0) + FAIL (); + memset (lsp, 'x', sizeof L"3.25"); + free (lsp); + } + if (sscanf ("4.25[0-9.] x", "%a[0-9.]%8c", &sp, c) != 2) + FAIL (); + else + { + if (strcmp (sp, "4.25") != 0 || memcmp (c, "[0-9.] x", 8) != 0) + FAIL (); + memset (sp, 'x', sizeof "4.25"); + free (sp); + } + DIAG_POP_NEEDS_COMMENT; + if (sscanf ("5.25[0-9.] x", "%la[0-9.]%2c", &d, c) != 2) + FAIL (); + else if (d != 5.25 || memcmp (c, " x", 2) != 0) + FAIL (); + + const char *tmpdir = getenv ("TMPDIR"); + if (tmpdir == NULL || tmpdir[0] == '\0') + tmpdir = "/tmp"; + + char fname[strlen (tmpdir) + sizeof "/tst-scanf14.XXXXXX"]; + sprintf (fname, "%s/tst-scanf14.XXXXXX", tmpdir); + if (fname == NULL) + FAIL (); + + /* Create a temporary file. */ + int fd = mkstemp (fname); + if (fd == -1) + FAIL (); + + FILE *fp = fdopen (fd, "w+"); + if (fp == NULL) + FAIL (); + else + { + if (fputs (" 1.25s x", fp) == EOF) + FAIL (); + if (fseek (fp, 0, SEEK_SET) != 0) + FAIL (); + /* See explanation above. */ + DIAG_PUSH_NEEDS_COMMENT; + DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wformat"); + if (fscanf (fp, "%as%2c", &sp, c) != 2) + FAIL (); + else + { + if (strcmp (sp, "1.25s") != 0 || memcmp (c, " x", 2) != 0) + FAIL (); + memset (sp, 'x', sizeof "1.25s"); + free (sp); + } + DIAG_POP_NEEDS_COMMENT; + + if (freopen (fname, "r", stdin) == NULL) + FAIL (); + else + { + /* See explanation above. */ + DIAG_PUSH_NEEDS_COMMENT; + DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wformat"); + if (scanf ("%as%2c", &sp, c) != 2) + FAIL (); + else + { + if (strcmp (sp, "1.25s") != 0 || memcmp (c, " x", 2) != 0) + FAIL (); + memset (sp, 'x', sizeof "1.25s"); + free (sp); + } + DIAG_POP_NEEDS_COMMENT; + } + + fclose (fp); + } + + remove (fname); + + return result; +} diff --git a/REORG.TODO/stdio-common/scanf15.c b/REORG.TODO/stdio-common/scanf15.c new file mode 100644 index 0000000000..a3ab15dea2 --- /dev/null +++ b/REORG.TODO/stdio-common/scanf15.c @@ -0,0 +1,99 @@ +#undef _GNU_SOURCE +#define _XOPEN_SOURCE 600 +#undef _LIBC +#undef _IO_MTSAFE_IO +/* The following macro definitions are a hack. They word around disabling + the GNU extension while still using a few internal headers. */ +#define u_char unsigned char +#define u_short unsigned short +#define u_int unsigned int +#define u_long unsigned long +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <wchar.h> + +#define FAIL() \ + do { \ + result = 1; \ + printf ("test at line %d failed\n", __LINE__); \ + } while (0) + +int +main (void) +{ + float f; + double d; + char c[8]; + int result = 0; + + if (sscanf (" 0.25s x", "%e%3c", &f, c) != 2) + FAIL (); + else if (f != 0.25 || memcmp (c, "s x", 3) != 0) + FAIL (); + if (sscanf (" 1.25s x", "%as%2c", &f, c) != 2) + FAIL (); + else if (f != 1.25 || memcmp (c, " x", 2) != 0) + FAIL (); + if (sscanf (" 2.25s x", "%las%2c", &d, c) != 2) + FAIL (); + else if (d != 2.25 || memcmp (c, " x", 2) != 0) + FAIL (); + if (sscanf (" 3.25S x", "%4aS%2c", &f, c) != 2) + FAIL (); + else if (f != 3.25 || memcmp (c, " x", 2) != 0) + FAIL (); + if (sscanf (" 4.25[0-9.] x", "%a[0-9.]%2c", &f, c) != 2) + FAIL (); + else if (f != 4.25 || memcmp (c, " x", 2) != 0) + FAIL (); + if (sscanf (" 5.25[0-9.] x", "%la[0-9.]%2c", &d, c) != 2) + FAIL (); + else if (d != 5.25 || memcmp (c, " x", 2) != 0) + FAIL (); + + const char *tmpdir = getenv ("TMPDIR"); + if (tmpdir == NULL || tmpdir[0] == '\0') + tmpdir = "/tmp"; + + char fname[strlen (tmpdir) + sizeof "/tst-scanf15.XXXXXX"]; + sprintf (fname, "%s/tst-scanf15.XXXXXX", tmpdir); + if (fname == NULL) + FAIL (); + + /* Create a temporary file. */ + int fd = mkstemp (fname); + if (fd == -1) + FAIL (); + + FILE *fp = fdopen (fd, "w+"); + if (fp == NULL) + FAIL (); + else + { + if (fputs (" 1.25s x", fp) == EOF) + FAIL (); + if (fseek (fp, 0, SEEK_SET) != 0) + FAIL (); + if (fscanf (fp, "%as%2c", &f, c) != 2) + FAIL (); + else if (f != 1.25 || memcmp (c, " x", 2) != 0) + FAIL (); + + if (freopen (fname, "r", stdin) == NULL) + FAIL (); + else + { + if (scanf ("%as%2c", &f, c) != 2) + FAIL (); + else if (f != 1.25 || memcmp (c, " x", 2) != 0) + FAIL (); + } + + fclose (fp); + } + + remove (fname); + + return result; +} diff --git a/REORG.TODO/stdio-common/scanf16.c b/REORG.TODO/stdio-common/scanf16.c new file mode 100644 index 0000000000..3e3cb417f2 --- /dev/null +++ b/REORG.TODO/stdio-common/scanf16.c @@ -0,0 +1,147 @@ +#include <stdarg.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <wchar.h> + +#define FAIL() \ + do { \ + result = 1; \ + printf ("test at line %d failed\n", __LINE__); \ + } while (0) + +static int +xsscanf (const char *str, const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + int ret = vsscanf (str, fmt, ap); + va_end (ap); + return ret; +} + +static int +xscanf (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + int ret = vscanf (fmt, ap); + va_end (ap); + return ret; +} + +static int +xfscanf (FILE *f, const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + int ret = vfscanf (f, fmt, ap); + va_end (ap); + return ret; +} + +int +main (void) +{ + wchar_t *lsp; + char *sp; + float f; + double d; + char c[8]; + int result = 0; + + if (xsscanf (" 0.25s x", "%e%3c", &f, c) != 2) + FAIL (); + else if (f != 0.25 || memcmp (c, "s x", 3) != 0) + FAIL (); + if (xsscanf (" 1.25s x", "%as%2c", &sp, c) != 2) + FAIL (); + else + { + if (strcmp (sp, "1.25s") != 0 || memcmp (c, " x", 2) != 0) + FAIL (); + memset (sp, 'x', sizeof "1.25s"); + free (sp); + } + if (xsscanf (" 2.25s x", "%las%2c", &d, c) != 2) + FAIL (); + else if (d != 2.25 || memcmp (c, " x", 2) != 0) + FAIL (); + if (xsscanf (" 3.25S x", "%4aS%3c", &lsp, c) != 2) + FAIL (); + else + { + if (wcscmp (lsp, L"3.25") != 0 || memcmp (c, "S x", 3) != 0) + FAIL (); + memset (lsp, 'x', sizeof L"3.25"); + free (lsp); + } + if (xsscanf ("4.25[0-9.] x", "%a[0-9.]%8c", &sp, c) != 2) + FAIL (); + else + { + if (strcmp (sp, "4.25") != 0 || memcmp (c, "[0-9.] x", 8) != 0) + FAIL (); + memset (sp, 'x', sizeof "4.25"); + free (sp); + } + if (xsscanf ("5.25[0-9.] x", "%la[0-9.]%2c", &d, c) != 2) + FAIL (); + else if (d != 5.25 || memcmp (c, " x", 2) != 0) + FAIL (); + + const char *tmpdir = getenv ("TMPDIR"); + if (tmpdir == NULL || tmpdir[0] == '\0') + tmpdir = "/tmp"; + + char fname[strlen (tmpdir) + sizeof "/tst-scanf16.XXXXXX"]; + sprintf (fname, "%s/tst-scanf16.XXXXXX", tmpdir); + if (fname == NULL) + FAIL (); + + /* Create a temporary file. */ + int fd = mkstemp (fname); + if (fd == -1) + FAIL (); + + FILE *fp = fdopen (fd, "w+"); + if (fp == NULL) + FAIL (); + else + { + if (fputs (" 1.25s x", fp) == EOF) + FAIL (); + if (fseek (fp, 0, SEEK_SET) != 0) + FAIL (); + if (xfscanf (fp, "%as%2c", &sp, c) != 2) + FAIL (); + else + { + if (strcmp (sp, "1.25s") != 0 || memcmp (c, " x", 2) != 0) + FAIL (); + memset (sp, 'x', sizeof "1.25s"); + free (sp); + } + + if (freopen (fname, "r", stdin) == NULL) + FAIL (); + else + { + if (xscanf ("%as%2c", &sp, c) != 2) + FAIL (); + else + { + if (strcmp (sp, "1.25s") != 0 || memcmp (c, " x", 2) != 0) + FAIL (); + memset (sp, 'x', sizeof "1.25s"); + free (sp); + } + } + + fclose (fp); + } + + remove (fname); + + return result; +} diff --git a/REORG.TODO/stdio-common/scanf17.c b/REORG.TODO/stdio-common/scanf17.c new file mode 100644 index 0000000000..b6c0e63ab0 --- /dev/null +++ b/REORG.TODO/stdio-common/scanf17.c @@ -0,0 +1,130 @@ +#undef _GNU_SOURCE +#define _XOPEN_SOURCE 600 +#undef _LIBC +#undef _IO_MTSAFE_IO +/* The following macro definitions are a hack. They word around disabling + the GNU extension while still using a few internal headers. */ +#define u_char unsigned char +#define u_short unsigned short +#define u_int unsigned int +#define u_long unsigned long +#include <stdarg.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <wchar.h> + +#define FAIL() \ + do { \ + result = 1; \ + printf ("test at line %d failed\n", __LINE__); \ + } while (0) + +static int +xsscanf (const char *str, const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + int ret = vsscanf (str, fmt, ap); + va_end (ap); + return ret; +} + +static int +xscanf (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + int ret = vscanf (fmt, ap); + va_end (ap); + return ret; +} + +static int +xfscanf (FILE *f, const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + int ret = vfscanf (f, fmt, ap); + va_end (ap); + return ret; +} + +int +main (void) +{ + float f; + double d; + char c[8]; + int result = 0; + + if (xsscanf (" 0.25s x", "%e%3c", &f, c) != 2) + FAIL (); + else if (f != 0.25 || memcmp (c, "s x", 3) != 0) + FAIL (); + if (xsscanf (" 1.25s x", "%as%2c", &f, c) != 2) + FAIL (); + else if (f != 1.25 || memcmp (c, " x", 2) != 0) + FAIL (); + if (xsscanf (" 2.25s x", "%las%2c", &d, c) != 2) + FAIL (); + else if (d != 2.25 || memcmp (c, " x", 2) != 0) + FAIL (); + if (xsscanf (" 3.25S x", "%4aS%2c", &f, c) != 2) + FAIL (); + else if (f != 3.25 || memcmp (c, " x", 2) != 0) + FAIL (); + if (xsscanf (" 4.25[0-9.] x", "%a[0-9.]%2c", &f, c) != 2) + FAIL (); + else if (f != 4.25 || memcmp (c, " x", 2) != 0) + FAIL (); + if (xsscanf (" 5.25[0-9.] x", "%la[0-9.]%2c", &d, c) != 2) + FAIL (); + else if (d != 5.25 || memcmp (c, " x", 2) != 0) + FAIL (); + + const char *tmpdir = getenv ("TMPDIR"); + if (tmpdir == NULL || tmpdir[0] == '\0') + tmpdir = "/tmp"; + + char fname[strlen (tmpdir) + sizeof "/tst-scanf17.XXXXXX"]; + sprintf (fname, "%s/tst-scanf17.XXXXXX", tmpdir); + if (fname == NULL) + FAIL (); + + /* Create a temporary file. */ + int fd = mkstemp (fname); + if (fd == -1) + FAIL (); + + FILE *fp = fdopen (fd, "w+"); + if (fp == NULL) + FAIL (); + else + { + if (fputs (" 1.25s x", fp) == EOF) + FAIL (); + if (fseek (fp, 0, SEEK_SET) != 0) + FAIL (); + if (xfscanf (fp, "%as%2c", &f, c) != 2) + FAIL (); + else if (f != 1.25 || memcmp (c, " x", 2) != 0) + FAIL (); + + if (freopen (fname, "r", stdin) == NULL) + FAIL (); + else + { + if (xscanf ("%as%2c", &f, c) != 2) + FAIL (); + else if (f != 1.25 || memcmp (c, " x", 2) != 0) + FAIL (); + } + + fclose (fp); + } + + remove (fname); + + return result; +} diff --git a/REORG.TODO/stdio-common/scanf2.c b/REORG.TODO/stdio-common/scanf2.c new file mode 100644 index 0000000000..452104d5aa --- /dev/null +++ b/REORG.TODO/stdio-common/scanf2.c @@ -0,0 +1,25 @@ +#include <stdio.h> +#include <stdlib.h> + +int +main(int argc, char *argv[]) +{ + int point, x, y; + + point = x = y = -1; + sscanf("0x10 10", "%x %x", &x, &y); + printf("%d %d\n", x, y); + if (x != 0x10 || y != 0x10) + abort (); + point = x = y = -1; + sscanf("P012349876", "P%1d%4d%4d", &point, &x, &y); + printf("%d %d %d\n", point, x, y); + if (point != 0 || x != 1234 || y != 9876) + abort (); + point = x = y = -1; + sscanf("P112349876", "P%1d%4d%4d", &point, &x, &y); + printf("%d %d %d\n", point, x, y); + if (point != 1 || x != 1234 || y != 9876) + abort (); + return 0; +} diff --git a/REORG.TODO/stdio-common/scanf3.c b/REORG.TODO/stdio-common/scanf3.c new file mode 100644 index 0000000000..33495cca79 --- /dev/null +++ b/REORG.TODO/stdio-common/scanf3.c @@ -0,0 +1,28 @@ +#include <stdio.h> +#include <stdlib.h> + +int +main(int arc, char *argv[]) +{ + int n, res; + unsigned int val; + char s[] = "111"; + + val = n = -1; + res = sscanf(s, "%u %n", &val, &n); + printf("Result of sscanf = %d\n", res); + printf("Scanned format %%u = %u\n", val); + printf("Possibly scanned format %%n = %d\n", n); + if (n != 3 || val != 111 || res != 1) + abort (); + + val = n = -1; + res = sscanf(s, "%u%n", &val, &n); + printf("Result of sscanf = %d\n", res); + printf("Scanned format %%u = %u\n", val); + printf("Possibly scanned format %%n = %d\n", n); + if (n != 3 || val != 111 || res != 1) + abort (); + + return 0; +} diff --git a/REORG.TODO/stdio-common/scanf4.c b/REORG.TODO/stdio-common/scanf4.c new file mode 100644 index 0000000000..7a2abec89b --- /dev/null +++ b/REORG.TODO/stdio-common/scanf4.c @@ -0,0 +1,40 @@ +#include <stdio.h> +#include <stdlib.h> +#include <libc-diag.h> + +int +main(int arc, char *argv[]) +{ + int res; + unsigned int val; + + FILE *fp = fopen ("/dev/null", "r"); + + val = 0; + res = fscanf(fp, "%n", &val); + + printf("Result of fscanf %%n = %d\n", res); + printf("Scanned format = %d\n", val); + + /* We're testing exactly the case the warning is for. */ + DIAG_PUSH_NEEDS_COMMENT; + DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wformat-zero-length"); + + res = fscanf(fp, ""); + + DIAG_POP_NEEDS_COMMENT; + + printf("Result of fscanf \"\" = %d\n", res); + if (res != 0) + abort (); + + res = fscanf(fp, "BLURB"); + printf("Result of fscanf \"BLURB\" = %d\n", res); + if (res >= 0) + abort (); + + fclose (fp); + + return 0; + return 0; +} diff --git a/REORG.TODO/stdio-common/scanf5.c b/REORG.TODO/stdio-common/scanf5.c new file mode 100644 index 0000000000..fb4acfabf1 --- /dev/null +++ b/REORG.TODO/stdio-common/scanf5.c @@ -0,0 +1,21 @@ +#include <stdio.h> +#include <stdlib.h> + +int +main(int argc, char *argv[]) +{ + int a, b; + + a = b = -1; + sscanf ("12ab", "%dab%n", &a, &b); + printf ("%d, %d\n", a, b); + if (a != 12 || b != 4) + abort (); + + a = b = -1; + sscanf ("12ab100", "%dab%n100", &a, &b); + printf ("%d, %d\n", a, b); + if (a != 12 || b != 4) + abort (); + return 0; +} diff --git a/REORG.TODO/stdio-common/scanf7.c b/REORG.TODO/stdio-common/scanf7.c new file mode 100644 index 0000000000..f568738d7e --- /dev/null +++ b/REORG.TODO/stdio-common/scanf7.c @@ -0,0 +1,33 @@ +#include <stdio.h> +#include <stdlib.h> +#include <libc-diag.h> + +int +main (int argc, char *argv[]) +{ + long long int n; + int ret; + + n = -1; + ret = sscanf ("1000", "%lld", &n); + printf ("%%lld: ret: %d, n: %Ld\n", ret, n); + if (ret != 1 || n != 1000L) + abort (); + + n = -2; + + /* We are testing a corner case of the scanf format string here. */ + DIAG_PUSH_NEEDS_COMMENT; + DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wformat"); + DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wformat-extra-args"); + + ret = sscanf ("1000", "%llld", &n); + + DIAG_POP_NEEDS_COMMENT; + + printf ("%%llld: ret: %d, n: %Ld\n", ret, n); + if (ret > 0 || n >= 0L) + abort (); + + return 0; +} diff --git a/REORG.TODO/stdio-common/scanf8.c b/REORG.TODO/stdio-common/scanf8.c new file mode 100644 index 0000000000..731ca8be2c --- /dev/null +++ b/REORG.TODO/stdio-common/scanf8.c @@ -0,0 +1,16 @@ +#include <stdio.h> +#include <string.h> +#include <stdlib.h> + +int +main (int argc, char *argv[]) +{ + int ret; + char buf [1024] = "Ooops"; + + ret = sscanf ("static char Term_bits[] = {", "static char %s = {", buf); + printf ("ret: %d, name: %s\n", ret, buf); + if (ret != 1 || strcmp (buf, "Term_bits[]") != 0) + abort (); + return 0; +} diff --git a/REORG.TODO/stdio-common/scanf9.c b/REORG.TODO/stdio-common/scanf9.c new file mode 100644 index 0000000000..7aca354d2a --- /dev/null +++ b/REORG.TODO/stdio-common/scanf9.c @@ -0,0 +1,30 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +int +main (void) +{ + int matches; + char str[10]; + + str[0] = '\0'; + matches = -9; + matches = sscanf ("x ]", "%[^] ]", str); + printf ("Matches = %d, string str = \"%s\".\n", matches, str); + printf ("str should be \"x\".\n"); + + if (strcmp (str, "x")) + abort (); + + str[0] = '\0'; + matches = -9; + matches = sscanf (" ] x", "%[] ]", str); + printf ("Matches = %d, string str = \"%s\".\n", matches, str); + printf ("str should be \" ] \".\n"); + + if (strcmp (str, " ] ")) + abort (); + + return 0; +} diff --git a/REORG.TODO/stdio-common/siglist.c b/REORG.TODO/stdio-common/siglist.c new file mode 100644 index 0000000000..2148dc6a41 --- /dev/null +++ b/REORG.TODO/stdio-common/siglist.c @@ -0,0 +1,36 @@ +/* Define list of all signal numbers and their names. + Copyright (C) 1997-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <stddef.h> +#include <signal.h> +#include <libintl.h> + +const char *const _sys_siglist[NSIG] = +{ +#define init_sig(sig, abbrev, desc) [sig] = desc, +#include <siglist.h> +#undef init_sig +}; + + +const char *const _sys_sigabbrev[NSIG] = +{ +#define init_sig(sig, abbrev, desc) [sig] = abbrev, +#include <siglist.h> +#undef init_sig +}; diff --git a/REORG.TODO/stdio-common/snprintf.c b/REORG.TODO/stdio-common/snprintf.c new file mode 100644 index 0000000000..66bcd198a8 --- /dev/null +++ b/REORG.TODO/stdio-common/snprintf.c @@ -0,0 +1,39 @@ +/* Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <stdarg.h> +#include <stdio.h> +#include <libioP.h> +#define __vsnprintf(s, l, f, a) _IO_vsnprintf (s, l, f, a) + +/* Write formatted output into S, according to the format + string FORMAT, writing no more than MAXLEN characters. */ +/* VARARGS3 */ +int +__snprintf (char *s, size_t maxlen, const char *format, ...) +{ + va_list arg; + int done; + + va_start (arg, format); + done = __vsnprintf (s, maxlen, format, arg); + va_end (arg); + + return done; +} +libc_hidden_def (__snprintf) +ldbl_weak_alias (__snprintf, snprintf) diff --git a/REORG.TODO/stdio-common/sprintf.c b/REORG.TODO/stdio-common/sprintf.c new file mode 100644 index 0000000000..391c495393 --- /dev/null +++ b/REORG.TODO/stdio-common/sprintf.c @@ -0,0 +1,39 @@ +/* Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <stdarg.h> +#include <stdio.h> +#include <libioP.h> +#define vsprintf(s, f, a) _IO_vsprintf (s, f, a) + +/* Write formatted output into S, according to the format string FORMAT. */ +/* VARARGS2 */ +int +__sprintf (char *s, const char *format, ...) +{ + va_list arg; + int done; + + va_start (arg, format); + done = vsprintf (s, format, arg); + va_end (arg); + + return done; +} +ldbl_hidden_def (__sprintf, sprintf) +ldbl_strong_alias (__sprintf, sprintf) +ldbl_strong_alias (__sprintf, _IO_sprintf) diff --git a/REORG.TODO/stdio-common/sscanf.c b/REORG.TODO/stdio-common/sscanf.c new file mode 100644 index 0000000000..63b9503db5 --- /dev/null +++ b/REORG.TODO/stdio-common/sscanf.c @@ -0,0 +1,41 @@ +/* Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <stdarg.h> +#include <stdio.h> +#include <libioP.h> +#define __vsscanf(s, f, a) _IO_vsscanf (s, f, a) + +/* Read formatted input from S, according to the format string FORMAT. */ +/* VARARGS2 */ +int +__sscanf (const char *s, const char *format, ...) +{ + va_list arg; + int done; + + va_start (arg, format); + done = __vsscanf (s, format, arg); + va_end (arg); + + return done; +} +ldbl_hidden_def (__sscanf, sscanf) +ldbl_strong_alias (__sscanf, sscanf) +#undef _IO_sscanf +/* This is for libg++. */ +ldbl_strong_alias (__sscanf, _IO_sscanf) diff --git a/REORG.TODO/stdio-common/stdio_ext.h b/REORG.TODO/stdio-common/stdio_ext.h new file mode 100644 index 0000000000..d30488ae9d --- /dev/null +++ b/REORG.TODO/stdio-common/stdio_ext.h @@ -0,0 +1,86 @@ +/* Functions to access FILE structure internals. + Copyright (C) 2000-2017 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 + <http://www.gnu.org/licenses/>. */ + +/* This header contains the same definitions as the header of the same name + on Sun's Solaris OS. */ + +#ifndef _STDIO_EXT_H +#define _STDIO_EXT_H 1 + +#include <stdio.h> + +enum +{ + /* Query current state of the locking status. */ + FSETLOCKING_QUERY = 0, +#define FSETLOCKING_QUERY FSETLOCKING_QUERY + /* The library protects all uses of the stream functions, except for + uses of the *_unlocked functions, by calls equivalent to flockfile(). */ + FSETLOCKING_INTERNAL, +#define FSETLOCKING_INTERNAL FSETLOCKING_INTERNAL + /* The user will take care of locking. */ + FSETLOCKING_BYCALLER +#define FSETLOCKING_BYCALLER FSETLOCKING_BYCALLER +}; + + +__BEGIN_DECLS + +/* Return the size of the buffer of FP in bytes currently in use by + the given stream. */ +extern size_t __fbufsize (FILE *__fp) __THROW; + + +/* Return non-zero value iff the stream FP is opened readonly, or if the + last operation on the stream was a read operation. */ +extern int __freading (FILE *__fp) __THROW; + +/* Return non-zero value iff the stream FP is opened write-only or + append-only, or if the last operation on the stream was a write + operation. */ +extern int __fwriting (FILE *__fp) __THROW; + + +/* Return non-zero value iff stream FP is not opened write-only or + append-only. */ +extern int __freadable (FILE *__fp) __THROW; + +/* Return non-zero value iff stream FP is not opened read-only. */ +extern int __fwritable (FILE *__fp) __THROW; + + +/* Return non-zero value iff the stream FP is line-buffered. */ +extern int __flbf (FILE *__fp) __THROW; + + +/* Discard all pending buffered I/O on the stream FP. */ +extern void __fpurge (FILE *__fp) __THROW; + +/* Return amount of output in bytes pending on a stream FP. */ +extern size_t __fpending (FILE *__fp) __THROW; + +/* Flush all line-buffered files. */ +extern void _flushlbf (void); + + +/* Set locking status of stream FP to TYPE. */ +extern int __fsetlocking (FILE *__fp, int __type) __THROW; + +__END_DECLS + +#endif /* stdio_ext.h */ diff --git a/REORG.TODO/stdio-common/stdio_lim.h.in b/REORG.TODO/stdio-common/stdio_lim.h.in new file mode 100644 index 0000000000..510bf008aa --- /dev/null +++ b/REORG.TODO/stdio-common/stdio_lim.h.in @@ -0,0 +1,42 @@ +/* Copyright (C) 1994-2017 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 + <http://www.gnu.org/licenses/>. */ + +#if !defined _STDIO_H && !defined __need_FOPEN_MAX && !defined __need_IOV_MAX +# error "Never include <bits/stdio_lim.h> directly; use <stdio.h> instead." +#endif + +#ifdef _STDIO_H +# define L_tmpnam @L_tmpnam@ +# define TMP_MAX @TMP_MAX@ +# define FILENAME_MAX @FILENAME_MAX@ + +# ifdef __USE_POSIX +# define L_ctermid @L_ctermid@ +# if !defined __USE_XOPEN2K || defined __USE_GNU +# define L_cuserid @L_cuserid@ +# endif +# endif +#endif + +#if defined __need_FOPEN_MAX || defined _STDIO_H +# undef FOPEN_MAX +# define FOPEN_MAX @FOPEN_MAX@ +#endif + +#if defined __need_IOV_MAX && !defined IOV_MAX +@define_IOV_MAX@ +#endif diff --git a/REORG.TODO/stdio-common/tempnam.c b/REORG.TODO/stdio-common/tempnam.c new file mode 100644 index 0000000000..3f0d07352e --- /dev/null +++ b/REORG.TODO/stdio-common/tempnam.c @@ -0,0 +1,43 @@ +/* Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <stdio.h> +#include <string.h> + +/* Generate a unique temporary filename using up to five characters of + PFX if it is not NULL. The directory to put this file in is + searched for as follows: First the environment variable "TMPDIR" is + checked. If it contains the name of a directory, that directory is + used. If not and if DIR is not NULL, that value is checked. If + that fails, P_tmpdir is tried and finally "/tmp". The storage for + the filename is allocated by `malloc'. */ +char * +tempnam (const char *dir, const char *pfx) +{ + char buf[FILENAME_MAX]; + + if (__path_search (buf, FILENAME_MAX, dir, pfx, 1)) + return NULL; + + if (__gen_tempname (buf, 0, 0, __GT_NOCREATE)) + return NULL; + + return __strdup (buf); +} + +link_warning (tempnam, + "the use of `tempnam' is dangerous, better use `mkstemp'") diff --git a/REORG.TODO/stdio-common/tempname.c b/REORG.TODO/stdio-common/tempname.c new file mode 100644 index 0000000000..6f050f296b --- /dev/null +++ b/REORG.TODO/stdio-common/tempname.c @@ -0,0 +1,51 @@ +/* Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#define __need_size_t +#include <stddef.h> +#include <stdio.h> +#include <errno.h> + +/* Perform the "SVID path search malarkey" on DIR and PFX. Write a + template suitable for use in __gen_tempname into TMPL, bounded + by TMPL_LEN. */ +int +__path_search (char *tmpl, size_t tmpl_len, const char *dir, const char *pfx, + int try_tmpdir) +{ + __set_errno (ENOSYS); + return -1; +} +stub_warning (__path_search) + +/* Generate a (hopefully) unique temporary filename + in DIR (if applicable), using template TMPL. + KIND determines what to do with that name. It may be one of: + __GT_FILE: create a file and return a read-write fd. + __GT_BIGFILE: same, but use open64() (or equivalent). + __GT_DIR: create a directory. + __GT_NOCREATE: just find a name not currently in use. + */ + +int +__gen_tempname (char *tmpl, int suffixlen, int flags, int kind) +{ + __set_errno (ENOSYS); + return -1; +} + +stub_warning (__gen_tempname) diff --git a/REORG.TODO/stdio-common/temptest.c b/REORG.TODO/stdio-common/temptest.c new file mode 100644 index 0000000000..c8cf8529f1 --- /dev/null +++ b/REORG.TODO/stdio-common/temptest.c @@ -0,0 +1,28 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +char *files[500]; + +int +main (int argc, char *argv[]) +{ + FILE *fp; + int i; + + for (i = 0; i < 500; i++) { + files[i] = tempnam (NULL, "file"); + if (files[i] == NULL) { + printf ("tempnam failed\n"); + exit (1); + } + printf ("file: %s\n", files[i]); + fp = fopen (files[i], "w"); + fclose (fp); + } + + for (i = 0; i < 500; i++) + remove (files[i]); + + return 0; +} diff --git a/REORG.TODO/stdio-common/test-fseek.c b/REORG.TODO/stdio-common/test-fseek.c new file mode 100644 index 0000000000..2416b190aa --- /dev/null +++ b/REORG.TODO/stdio-common/test-fseek.c @@ -0,0 +1,87 @@ +/* Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <stdio.h> + +#define TESTFILE "/tmp/test.dat" + +static int +do_test (void) +{ + FILE *fp; + int i, j; + + puts ("\nFile seek test"); + fp = fopen (TESTFILE, "w"); + if (fp == NULL) + { + perror (TESTFILE); + return 1; + } + + for (i = 0; i < 256; i++) + putc (i, fp); + if (freopen (TESTFILE, "r", fp) != fp) + { + perror ("Cannot open file for reading"); + return 1; + } + + for (i = 1; i <= 255; i++) + { + printf ("%3d\n", i); + fseek (fp, (long) -i, SEEK_END); + if ((j = getc (fp)) != 256 - i) + { + printf ("SEEK_END failed %d\n", j); + break; + } + if (fseek (fp, (long) i, SEEK_SET)) + { + puts ("Cannot SEEK_SET"); + break; + } + if ((j = getc (fp)) != i) + { + printf ("SEEK_SET failed %d\n", j); + break; + } + if (fseek (fp, (long) i, SEEK_SET)) + { + puts ("Cannot SEEK_SET"); + break; + } + if (fseek (fp, (long) (i >= 128 ? -128 : 128), SEEK_CUR)) + { + puts ("Cannot SEEK_CUR"); + break; + } + if ((j = getc (fp)) != (i >= 128 ? i - 128 : i + 128)) + { + printf ("SEEK_CUR failed %d\n", j); + break; + } + } + fclose (fp); + remove (TESTFILE); + + puts ((i > 255) ? "Test succeeded." : "Test FAILED!"); + return (i > 255) ? 0 : 1; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/test-fwrite.c b/REORG.TODO/stdio-common/test-fwrite.c new file mode 100644 index 0000000000..5677c6da80 --- /dev/null +++ b/REORG.TODO/stdio-common/test-fwrite.c @@ -0,0 +1,71 @@ +#include <stdio.h> +#include <string.h> + +static int +do_test (void) +{ + FILE *f = tmpfile (); + char obuf[99999], ibuf[sizeof obuf]; + char *line; + size_t linesz; + + if (! f) + { + perror ("tmpfile"); + return 1; + } + + if (fputs ("line\n", f) == EOF) + { + perror ("fputs"); + return 1; + } + + memset (obuf, 'z', sizeof obuf); + memset (ibuf, 'y', sizeof ibuf); + + if (fwrite (obuf, sizeof obuf, 1, f) != 1) + { + perror ("fwrite"); + return 1; + } + + rewind (f); + + line = NULL; + linesz = 0; + if (getline (&line, &linesz, f) != 5) + { + perror ("getline"); + return 1; + } + if (strcmp (line, "line\n")) + { + puts ("Lines differ. Test FAILED!"); + return 1; + } + + if (fread (ibuf, sizeof ibuf, 1, f) != 1) + { + perror ("fread"); + return 1; + } + + if (memcmp (ibuf, obuf, sizeof ibuf)) + { + puts ("Buffers differ. Test FAILED!"); + return 1; + } + + asprintf (&line, "\ +GDB is free software and you are welcome to distribute copies of it\n\ + under certain conditions; type \"show copying\" to see the conditions.\n\ +There is absolutely no warranty for GDB; type \"show warranty\" for details.\n\ +"); + + puts ("Test succeeded."); + return 0; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/test-popen.c b/REORG.TODO/stdio-common/test-popen.c new file mode 100644 index 0000000000..44b09fa129 --- /dev/null +++ b/REORG.TODO/stdio-common/test-popen.c @@ -0,0 +1,105 @@ +/* Copyright (C) 1997-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <errno.h> +#include <stdio.h> +#include <stdlib.h> + +static void +write_data (FILE *stream) +{ + int i; + for (i=0; i<100; i++) + fprintf (stream, "%d\n", i); + if (ferror (stream)) + { + fprintf (stderr, "Output to stream failed.\n"); + exit (1); + } +} + +static void +read_data (FILE *stream) +{ + int i, j; + + for (i=0; i<100; i++) + { + if (fscanf (stream, "%d\n", &j) != 1 || j != i) + { + if (ferror (stream)) + perror ("fscanf"); + puts ("Test FAILED!"); + exit (1); + } + } +} + +static int +do_test (void) +{ + FILE *output, *input; + int wstatus, rstatus; + + /* We must remove this entry to assure the `cat' binary does not use + the perhaps incompatible new shared libraries. */ + unsetenv ("LD_LIBRARY_PATH"); + + output = popen ("/bin/cat >/tmp/tstpopen.tmp", "w"); + if (output == NULL) + { + perror ("popen"); + puts ("Test FAILED!"); + exit (1); + } + write_data (output); + wstatus = pclose (output); + printf ("writing pclose returned %d\n", wstatus); + input = popen ("/bin/cat /tmp/tstpopen.tmp", "r"); + if (input == NULL) + { + perror ("/tmp/tstpopen.tmp"); + puts ("Test FAILED!"); + exit (1); + } + read_data (input); + rstatus = pclose (input); + printf ("reading pclose returned %d\n", rstatus); + + remove ("/tmp/tstpopen.tmp"); + + errno = 0; + output = popen ("/bin/cat", "m"); + if (output != NULL) + { + puts ("popen called with illegal mode does not return NULL"); + puts ("Test FAILED!"); + exit (1); + } + if (errno != EINVAL) + { + puts ("popen called with illegal mode does not set errno to EINVAL"); + puts ("Test FAILED!"); + exit (1); + } + + puts (wstatus | rstatus ? "Test FAILED!" : "Test succeeded."); + return (wstatus | rstatus); +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/test-vfprintf.c b/REORG.TODO/stdio-common/test-vfprintf.c new file mode 100644 index 0000000000..f8bb9cee58 --- /dev/null +++ b/REORG.TODO/stdio-common/test-vfprintf.c @@ -0,0 +1,136 @@ +/* Tests of *printf for very large strings. + Copyright (C) 2000-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@redhat.com>, 2000. + + 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 <locale.h> +#include <mcheck.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <sys/stat.h> +#include <libc-diag.h> + + +const char *locs[] = +{ + "C", "de_DE.ISO-8859-1", "de_DE.UTF-8", "ja_JP.EUC-JP" +}; +#define nlocs (sizeof (locs) / sizeof (locs[0])) + + +char large[50000]; + +static int +do_test (void) +{ + char buf[25]; + size_t i; + int res = 0; + int fd; + + mtrace (); + + strcpy (buf, "/tmp/test-vfprintfXXXXXX"); + fd = mkstemp (buf); + if (fd == -1) + { + printf ("cannot open temporary file: %m\n"); + exit (1); + } + unlink (buf); + + for (i = 0; i < nlocs; ++i) + { + FILE *fp; + struct stat st; + int fd2; + + setlocale (LC_ALL, locs[i]); + + memset (large, '\1', sizeof (large)); + large[sizeof (large) - 1] = '\0'; + + fd2 = dup (fd); + if (fd2 == -1) + { + printf ("cannot dup for locale %s: %m\n", + setlocale (LC_ALL, NULL)); + exit (1); + } + + if (ftruncate (fd2, 0) != 0) + { + printf ("cannot truncate file for locale %s: %m\n", + setlocale (LC_ALL, NULL)); + exit (1); + } + + fp = fdopen (fd2, "a"); + if (fp == NULL) + { + printf ("cannot create FILE for locale %s: %m\n", + setlocale (LC_ALL, NULL)); + exit (1); + } + + fprintf (fp, "%s", large); + fprintf (fp, "%.*s", 30000, large); + large[20000] = '\0'; + /* We're testing a large format string here and need to generate it + to avoid this source file being ridiculous. So disable the warning + about a generated format string. */ + DIAG_PUSH_NEEDS_COMMENT; + DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wformat-security"); + fprintf (fp, large); + DIAG_POP_NEEDS_COMMENT; + fprintf (fp, "%-1.300000000s", "hello"); + + if (fflush (fp) != 0 || ferror (fp) != 0 || fclose (fp) != 0) + { + printf ("write error for locale %s: %m\n", + setlocale (LC_ALL, NULL)); + exit (1); + } + + if (fstat (fd, &st) != 0) + { + printf ("cannot stat for locale %s: %m\n", + setlocale (LC_ALL, NULL)); + exit (1); + } + else if (st.st_size != 50000 + 30000 + 19999 + 5) + { + printf ("file size incorrect for locale %s: %jd instead of %jd\n", + setlocale (LC_ALL, NULL), + (intmax_t) st.st_size, + (intmax_t) 50000 + 30000 + 19999 + 5); + res = 1; + } + else + printf ("locale %s OK\n", setlocale (LC_ALL, NULL)); + } + + close (fd); + + return res; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/test_rdwr.c b/REORG.TODO/stdio-common/test_rdwr.c new file mode 100644 index 0000000000..c7e0c4da06 --- /dev/null +++ b/REORG.TODO/stdio-common/test_rdwr.c @@ -0,0 +1,128 @@ +/* Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <errno.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + + +int +main (int argc, char **argv) +{ + static const char hello[] = "Hello, world.\n"; + static const char replace[] = "Hewwo, world.\n"; + static const size_t replace_from = 2, replace_to = 4; + char filename[FILENAME_MAX]; + char *name = strrchr (*argv, '/'); + char buf[BUFSIZ]; + FILE *f; + int lose = 0; + + if (name != NULL) + ++name; + else + name = *argv; + + (void) sprintf (filename, "/tmp/%s.test", name); + + f = fopen (filename, "w+"); + if (f == NULL) + { + perror (filename); + exit (1); + } + + (void) fputs (hello, f); + rewind (f); + (void) fgets (buf, sizeof (buf), f); + rewind (f); + (void) fputs (buf, f); + rewind (f); + { + size_t i; + for (i = 0; i < replace_from; ++i) + { + int c = getc (f); + if (c == EOF) + { + printf ("EOF at %Zu.\n", i); + lose = 1; + break; + } + else if (c != hello[i]) + { + printf ("Got '%c' instead of '%c' at %Zu.\n", + (unsigned char) c, hello[i], i); + lose = 1; + break; + } + } + } + + { + long int where = ftell (f); + if (where == (long int) replace_from) + { + size_t i; + for (i = replace_from; i < replace_to; ++i) + if (putc(replace[i], f) == EOF) + { + printf ("putc('%c') got %s at %Zu.\n", + replace[i], strerror (errno), i); + lose = 1; + break; + } + } + else if (where == -1L) + { + printf ("ftell got %s (should be at %Zu).\n", + strerror (errno), replace_from); + lose = 1; + } + else + { + printf ("ftell returns %lu; should be %Zu.\n", where, replace_from); + lose = 1; + } + } + + if (!lose) + { + rewind (f); + if (fgets (buf, sizeof (buf), f) == NULL) + { + printf ("fgets got %s.\n", strerror(errno)); + lose = 1; + } + else if (strcmp (buf, replace)) + { + printf ("Read \"%s\" instead of \"%s\".\n", buf, replace); + lose = 1; + } + } + + if (lose) + printf ("Test FAILED! Losing file is \"%s\".\n", filename); + else + { + (void) remove (filename); + puts ("Test succeeded."); + } + + return lose ? EXIT_FAILURE : EXIT_SUCCESS; +} diff --git a/REORG.TODO/stdio-common/tfformat.c b/REORG.TODO/stdio-common/tfformat.c new file mode 100644 index 0000000000..5cb366dd48 --- /dev/null +++ b/REORG.TODO/stdio-common/tfformat.c @@ -0,0 +1,4130 @@ +#include <stdio.h> + +/* Tests taken from Cygnus C library. */ + +typedef struct +{ + int line; + double value; + const char *result; + const char *format_string; +} sprint_double_type; + +sprint_double_type sprint_doubles[] = +{ + {__LINE__, 30.3, "< +30.3>", "<%+15.10g>"}, + {__LINE__, 10.0, "<10.00>", "<%5.2f>"}, + + {__LINE__, 1.002121970718271e+05, "100212.19707 ", "%0-15.5f"}, + {__LINE__, -1.002121970718271e+05, "-100212.19707 ", "%0-15.5f"}, + {__LINE__, 1.002121970718271e+05, "000100212.19707", "%015.5f"}, + {__LINE__, -1.002121970718271e+05, "-00100212.19707", "%015.5f"}, + {__LINE__, 1.002121970718271e+05, "+00100212.19707", "%+015.5f"}, + {__LINE__, -1.002121970718271e+05, "-00100212.19707", "%+015.5f"}, + {__LINE__, 1.002121970718271e+05, " 00100212.19707", "% 015.5f"}, + {__LINE__, -1.002121970718271e+05, "-00100212.19707", "% 015.5f"}, + {__LINE__, 1.002121970718271e+05, "+100212.19707 ", "%+-15.5f"}, + {__LINE__, -1.002121970718271e+05, "-100212.19707 ", "%+-15.5f"}, + + {__LINE__, -1.002121970718271e+29, "-1.0E+29", "%.1E"}, + {__LINE__, -1.002126048612756e-02, "-1.002126E-02", "%+#E"}, + {__LINE__, -1.002653755271637e+00, "-1.00265", "%G"}, + {__LINE__, -1.003238744365917e-23, "-0.00", "%4.2f"}, + {__LINE__, -1.005084840877781e-29, " -0", "%4.f"}, + {__LINE__, -1.005362549674427e+01, "-10.0536", "%#g"}, + {__LINE__, -1.005915042991691e-17, "-1.00592E-17", "%G"}, + {__LINE__, -1.007829874228503e-18, "-1.00783e-18", "%.7g"}, + {__LINE__, -1.007829874228503e-18, "-1.007830e-18", "%#.7g"}, + {__LINE__, -1.009390937771849e+15, "-1009390937771848.628657", "%+f"}, + {__LINE__, -1.010679382726182e-29, "-0.0000000", "%.7f"}, + {__LINE__, -1.010691853346650e+13, "-10106918533466.497934", "%+f"}, + {__LINE__, -1.013412912122286e-22, "-1.01E-22", "%.2E"}, + {__LINE__, -1.019269582113858e-25, " -0", "%4.0f"}, + {__LINE__, -1.019886033368556e+24, "-1.019886E+24", "%+.7G"}, + {__LINE__, -1.021037413548719e+02, "-102.103741", "%f"}, + {__LINE__, -1.023833576089065e+26, "-1.023834E+26", "%+E"}, + {__LINE__, -1.024736652408627e+10, "-10247366524.086265", "%+f"}, + {__LINE__, -1.025439198495476e+09, "-1.02544e+09", "%+g"}, + {__LINE__, -1.027080247585776e-04, "-0.0001027", "%6.7f"}, + {__LINE__, -1.028096307262016e+18, "-1.0281E+18", "%3G"}, + {__LINE__, -1.029604290697901e-02, "-0.010296", "%g"}, + {__LINE__, -1.034347730570491e+16, "-10343477305704908.975059", "%+f"}, + {__LINE__, -1.034663325049286e+22, "-1.0E+22", "%#.1E"}, + {__LINE__, -1.034843152721857e-14, " -0", "%6.f"}, + {__LINE__, -1.036082122299529e-29, "-1.04e-29", "%4.3g"}, + {__LINE__, -1.037213662365954e-09, "-1e-09", "%3.e"}, + {__LINE__, -1.038563976775690e-12, "-0.000000", "%f"}, + {__LINE__, -1.040910158681323e-02, "-0.0104091", "%+G"}, + {__LINE__, -1.044680094714482e-20, "-1.04468E-20", "%G"}, + {__LINE__, -1.044990054091126e+24, "-1.044990E+24", "%+E"}, + {__LINE__, -1.045693871096982e+11, "-1.045694e+11", "%+e"}, + {__LINE__, -1.045714133591312e-04, "-0.000104571", "%+#3g"}, + {__LINE__, -1.046215079103016e-15, "-1.04622e-15", "%g"}, + {__LINE__, -1.046285293993789e-18, "-1.04629E-18", "%+4G"}, + {__LINE__, -1.046306092899333e-06, "-0.00", "%0.2f"}, + {__LINE__, -1.047308973649206e-22, "-1.05E-22", "%+1.3G"}, + {__LINE__, -1.047369032507755e+01, "-1.047369E+01", "%E"}, + {__LINE__, -1.048986365562919e-21, "-1.05E-21", "%+.2E"}, + {__LINE__, -1.049530193156793e-17, "-1.04953E-17", "%+G"}, + {__LINE__, -1.050073419263768e+25, "-1.05007e+25", "%g"}, + {__LINE__, -1.051739652002504e-28, "-0.000000", "%+f"}, + {__LINE__, -1.054493420082636e+21, "-1.0545e+21", "%#5.4e"}, + {__LINE__, -1.055867291029098e+18, "-1.05587e+18", "%g"}, + {__LINE__, -1.056514389757866e-16, "-1.05651E-16", "%5.6G"}, + {__LINE__, -1.057180924868704e+15, "-1057180924868704", "%4.f"}, + {__LINE__, -1.058455468395683e-23, "-1.05846e-23", "%g"}, + {__LINE__, -1.062560982393212e+08, "-1.06256e+08", "%g"}, + {__LINE__, -1.063365829241138e-10, "-1.063366e-10", "%+e"}, + {__LINE__, -1.063568908667280e-19, "-1.06357E-19", "%+G"}, + {__LINE__, -1.063734263253492e-13, "-0.000000", "%0f"}, + {__LINE__, -1.064472689765495e-13, "-1E-13", "%4.0G"}, + {__LINE__, -1.067192610000129e-25, "-1.06719E-25", "%G"}, + {__LINE__, -1.068401334996592e-12, "-0.0000000", "%+.7f"}, + {__LINE__, -1.069012628653724e-13, "-1.069013E-13", "%+.7G"}, + {__LINE__, -1.069451976810790e+16, "-10694519768107904.056365", "%f"}, + {__LINE__, -1.069568935323556e+17, "-1.06957e+17", "%g"}, + {__LINE__, -1.071351044854107e-29, "-1.07135e-29", "%g"}, + {__LINE__, -1.072274197526185e-21, "-1E-21", "%1.G"}, + {__LINE__, -1.073875921752995e+23, "-1E+23", "%5.E"}, + {__LINE__, -1.074835151152265e-12, "-1.0748e-12", "%1.5g"}, + {__LINE__, -1.075171047088241e-19, "-1.07517E-19", "%#G"}, + {__LINE__, -1.076258826412760e+22, "-1.076259e+22", "%+e"}, + {__LINE__, -1.076365103160401e+06, "-1.07637E+06", "%+4.6G"}, + {__LINE__, -1.076817750454633e+08, "-1e+08", "%4.g"}, + {__LINE__, -1.078615405755685e-30, "-1e-30", "%4.g"}, + {__LINE__, -1.078629622917468e-25, "-1.078630e-25", "%e"}, + {__LINE__, -1.079352432833170e+11, "-107935243283", "%+2.f"}, + {__LINE__, -1.081431147440215e+16, "-10814311474402147.439378", "%+f"}, + {__LINE__, -1.083042116905339e-16, "-1.083e-16", "%.5g"}, + {__LINE__, -1.085351710708553e-10, "-1.085e-10", "%1.4g"}, + {__LINE__, -1.085796045618276e+07, "-1.085796e+07", "%e"}, + {__LINE__, -1.087398259981007e+22, "-1.0874e+22", "%g"}, + {__LINE__, -1.087986044402224e-11, "-1.087986e-11", "%e"}, + {__LINE__, -1.090451848762709e-02, "-1.090452e-02", "%e"}, + {__LINE__, -1.091463236899737e+11, "-1.091463E+11", "%#E"}, + {__LINE__, -1.091617921737384e-29, "-1.09162e-29", "%3g"}, + {__LINE__, -1.092049328579047e-17, "-1.092049E-17", "%E"}, + {__LINE__, -1.093647615472090e+06, "-1093647.61547", "%6.5f"}, + {__LINE__, -1.094133175602384e-08, "-1.1E-08", "%0.1E"}, + {__LINE__, -1.095397916728214e-23, "-1e-23", "%6.e"}, + {__LINE__, -1.098958790437321e+02, "-109.895879", "%+#f"}, + {__LINE__, -1.100194638181594e-20, "-1.100195e-20", "%e"}, + {__LINE__, -1.102174253534260e+05, "-1.1e+05", "%2.3g"}, + {__LINE__, -1.102890180316350e-12, "-1.10289e-12", "%+g"}, + {__LINE__, -1.105582337418378e+00, "-1.11", "%3.3g"}, + {__LINE__, -1.110515122647056e+04, "-1.E+04", "%#0.G"}, + {__LINE__, -1.111365895262625e-18, "-1e-18", "%0.g"}, + {__LINE__, -1.112010622677495e+04, "-11120.1", "%g"}, + {__LINE__, -1.112580043156699e-23, "-1.11258e-23", "%1g"}, + {__LINE__, -1.112829057091303e+08, "-1.11283e+08", "%+2g"}, + {__LINE__, -1.115019046200472e+18, "-1.1150190e+18", "%+#.7e"}, + {__LINE__, -1.118078332268016e-13, "-1.12E-13", "%1.3G"}, + {__LINE__, -1.119113571963886e+08, "-1.119114e+08", "%e"}, + {__LINE__, -1.120102397563448e-15, "-1.12e-15", "%.4g"}, + {__LINE__, -1.120707480791434e-19, "-1.12071e-19", "%g"}, + {__LINE__, -1.124243676139007e-07, "-0.000000", "%f"}, + {__LINE__, -1.125025214608798e+15, "-1.12503E+15", "%0G"}, + {__LINE__, -1.126074395136447e+06, "-1E+06", "%+.0G"}, + {__LINE__, -1.127203019940870e-06, "-0.000001", "%+#7f"}, + {__LINE__, -1.130577648480677e+01, "-1.130578e+01", "%e"}, + {__LINE__, -1.131469694425240e-11, "-1.13147e-11", "%#0.6g"}, + {__LINE__, -1.132225023239752e+02, "-113.223", "%G"}, + {__LINE__, -1.133702113050128e+20, "-1E+20", "%+3.E"}, + {__LINE__, -1.135529466224404e-13, "-1.13553e-13", "%#g"}, + {__LINE__, -1.137587210063004e+21, "-1e+21", "%.1g"}, + {__LINE__, -1.140765637106361e-21, "-1.1e-21", "%+.1e"}, + {__LINE__, -1.141182595083699e-18, "-0.000000", "%f"}, + {__LINE__, -1.141695709120972e+00, "-1.1417", "%3G"}, + {__LINE__, -1.143199141708028e+18, "-1143199141708027833", "%2.f"}, + {__LINE__, -1.146712902056139e+21, "-1146712902056139071760.298975", "%f"}, + {__LINE__, -1.146837903839073e-02, " -0.0", "%+5.1f"}, + {__LINE__, -1.147363016107446e+10, "-1.14736e+10", "%+7g"}, + {__LINE__, -1.149575523465052e+20, "-114957552346505220697.28140", "%+.5f"}, + {__LINE__, -1.152748955392589e+13, "-1.15275E+13", "%G"}, + {__LINE__, -1.152751106015483e-17, "-1E-17", "%+3.E"}, + {__LINE__, -1.155539139258226e-18, "-1.2e-18", "%+.2g"}, + {__LINE__, -1.157089280563492e+20, "-1.15709e+20", "%g"}, + {__LINE__, -1.161217745859779e+19, "-1.161218E+19", "%E"}, + {__LINE__, -1.162293536734798e+10, "-11622935367.347980", "%f"}, + {__LINE__, -1.162629909468603e+20, "-1.16E+20", "%.3G"}, + {__LINE__, -1.164979155838631e+24, "-1.16498E+24", "%G"}, + {__LINE__, -1.165103052644816e-20, " -1e-20", "%+7.g"}, + {__LINE__, -1.166448459023264e-08, "-0.000000", "%f"}, + {__LINE__, -1.167694506705309e+28, "-1e+28", "%.1g"}, + {__LINE__, -1.169901754818745e-28, "-0.000000", "%+f"}, + {__LINE__, -1.170330336216446e+08, " -1e+08", "%7.g"}, + {__LINE__, -1.170946623214213e-17, "-1.17095E-17", "%G"}, + {__LINE__, -1.174581596799302e+27, "-1.174582e+27", "%+e"}, + {__LINE__, -1.174763473995155e-28, "-1E-28", "%.1G"}, + {__LINE__, -1.175885640508038e-23, "-1E-23", "%+.0E"}, + {__LINE__, -1.177268411775439e-05, "-0.000012", "%#2.6f"}, + {__LINE__, -1.177739669428001e-30, "-1.17774E-30", "%G"}, + {__LINE__, -1.178059639880544e-02, "-0.0117806", "%+.7G"}, + {__LINE__, -1.178793300854446e-13, "-1.2E-13", "%+#0.2G"}, + {__LINE__, -1.179629345138058e-04, "-0.000118", "%0.3g"}, + {__LINE__, -1.180730292213358e-25, "-1.18073e-25", "%g"}, + {__LINE__, -1.180766261654697e+02, "-118.077", "%3g"}, + {__LINE__, -1.181880261069391e-29, "-1.181880e-29", "%+#e"}, + {__LINE__, -1.183752810063514e-09, "-1.18375e-09", "%#g"}, + {__LINE__, -1.184191742443406e-21, "-1.184192e-21", "%e"}, + {__LINE__, -1.184859760488406e-26, "-1.18486E-26", "%G"}, + {__LINE__, -1.187276828720072e-29, "-1.18728E-29", "%G"}, + {__LINE__, -1.187992907205195e-04, "-1.187993E-04", "%E"}, + {__LINE__, -1.190586192763405e-28, "-1.E-28", "%#1.E"}, + {__LINE__, -1.192104053032086e+02, "-119.21", "%G"}, + {__LINE__, -1.192917884333569e+26, "-1.192918E+26", "%E"}, + {__LINE__, -1.195900753509801e+22, "-1.1959e+22", "%g"}, + {__LINE__, -1.196559413116537e-28, "-0.000000", "%6.6f"}, + {__LINE__, -1.197534588732952e+12, "-1.19753e+12", "%#g"}, + {__LINE__, -1.200279514790649e-25, "-0.0000", "%0.4f"}, + {__LINE__, -1.203806667944635e+10, "-1.2038067E+10", "%5.7E"}, + {__LINE__, -1.204344885974736e+07, "-1.204E+07", "%#2.4G"}, + {__LINE__, -1.205668007693083e+00, "-1.20567", "%g"}, + {__LINE__, -1.205898515218947e-11, "-1.2059e-11", "%+g"}, + {__LINE__, -1.206787414909373e-05, "-1.2e-05", "%2.2g"}, + {__LINE__, -1.207905830366447e+15, "-1.207906e+15", "%6.7g"}, + {__LINE__, -1.208067010597729e-17, "-1.208067e-17", "%5e"}, + {__LINE__, -1.210189135822574e+01, "-12", "%+2.0f"}, + {__LINE__, -1.211560695948122e+10, "-1.21156e+10", "%+g"}, + {__LINE__, -1.214003025273234e-18, "-1.214e-18", "%+g"}, + {__LINE__, -1.214096815259005e+17, "-121409681525900459.142520", "%f"}, + {__LINE__, -1.214699041716797e-14, "-1.2147E-14", "%G"}, + {__LINE__, -1.215061611919443e+14, "-121506161191944.306310", "%+#f"}, + {__LINE__, -1.217491221065185e+27, "-1.21749e+27", "%g"}, + {__LINE__, -1.218538401534388e-11, "-1.218538e-11", "%#e"}, + {__LINE__, -1.218810085883466e+16, "-1e+16", "%+.1g"}, + {__LINE__, -1.219422688169801e+08, "-1.219423e+08", "%e"}, + {__LINE__, -1.220473194407651e-14, "-1.2205E-14", "%1.5G"}, + {__LINE__, -1.220824440193375e-02, "-0.012208", "%4f"}, + {__LINE__, -1.221520240637007e+13, "-1.221520E+13", "%1E"}, + {__LINE__, -1.221894719843486e+29, "-1.22189E+29", "%G"}, + {__LINE__, -1.223020108610281e+25, "-1.22302E+25", "%G"}, + {__LINE__, -1.223203206227728e-02, "-0.012232", "%G"}, + {__LINE__, -1.225661737076919e-15, "-1.22566E-15", "%G"}, + {__LINE__, -1.228147221003795e-08, "-1.22815E-08", "%G"}, + {__LINE__, -1.228298534591771e+20, "-1.22830E+20", "%#G"}, + {__LINE__, -1.228469080229780e-02, "-0.012285", "%0f"}, + {__LINE__, -1.229161950699222e-09, "-1e-09", "%0.e"}, + {__LINE__, -1.231294820136559e-17, "-1.231295E-17", "%1.7G"}, + {__LINE__, -1.232588663406698e-21, "-1E-21", "%+0.G"}, + {__LINE__, -1.233381256982191e-26, "-0.000000", "%f"}, + {__LINE__, -1.233435864835578e+14, "-1.23344e+14", "%#g"}, + {__LINE__, -1.237409567806099e-25, "-1.23741E-25", "%#G"}, + {__LINE__, -1.238244697758558e-02, "-1.238245e-02", "%7e"}, + {__LINE__, -1.239393163123284e+26, "-1.23939e+26", "%+g"}, + {__LINE__, -1.240484781756132e-18, "-1E-18", "%4.E"}, + {__LINE__, -1.241420286838750e+23, "-1E+23", "%2.E"}, + {__LINE__, -1.243781122052343e-18, "-1.243781e-18", "%+e"}, + {__LINE__, -1.244421506844779e+07, "-1.244422E+07", "%+6E"}, + {__LINE__, -1.245754054764741e-21, "-1e-21", "%5.0g"}, + {__LINE__, -1.245992228426733e-24, "-0.000000", "%f"}, + {__LINE__, -1.246498277739883e-12, "-0.0000000", "%5.7f"}, + {__LINE__, -1.247130891343776e-18, "-1.24713E-18", "%G"}, + {__LINE__, -1.247309461703025e-03, "-0.0012473", "%#5.5G"}, + {__LINE__, -1.248139162966407e-29, "-1.e-29", "%+#6.g"}, + {__LINE__, -1.249756153623776e+08, "-1.249756e+08", "%e"}, + {__LINE__, -1.250899983565585e-10, "-1.2509e-10", "%5g"}, + {__LINE__, -1.250957368798327e+19, "-1.25096E+19", "%0G"}, + {__LINE__, -1.252630814464822e-02, "-0.012526", "%+f"}, + {__LINE__, -1.253076368257011e-28, "-0.000000", "%f"}, + {__LINE__, -1.254243507039370e+01, "-1.254244e+01", "%e"}, + {__LINE__, -1.257605614492298e-12, "-1.257606E-12", "%6.7G"}, + {__LINE__, -1.258041911573120e+06, "-1258041.911573", "%+f"}, + {__LINE__, -1.261670983426507e-25, "-0.00", "%.2f"}, + {__LINE__, -1.263216883336562e-14, "-1.26322e-14", "%g"}, + {__LINE__, -1.266846944498751e-15, "-1e-15", "%0.g"}, + {__LINE__, -1.266977908502326e+06, "-1266978", "%+1.f"}, + {__LINE__, -1.267006162870084e-23, "-1.267006e-23", "%e"}, + {__LINE__, -1.269144609375931e+01, "-1.269145e+01", "%+e"}, + {__LINE__, -1.269458714257904e+25, "-1.26946E+25", "%G"}, + {__LINE__, -1.276697325772662e-02, "-0.0128", "%7.3G"}, + {__LINE__, -1.278855081807602e+15, "-1278855081807601.87891", "%#0.5f"}, + {__LINE__, -1.278966821639612e+20, "-1.278967E+20", "%3E"}, + {__LINE__, -1.281942705258106e+03, "-1281.94", "%+G"}, + {__LINE__, -1.282331291499203e+14, "-128233129149920.266343", "%+f"}, + {__LINE__, -1.285125739341808e-28, "-1.28513e-28", "%g"}, + {__LINE__, -1.285700693704978e+11, "-1.285701E+11", "%E"}, + {__LINE__, -1.286574096459251e+28, "-1.287E+28", "%6.4G"}, + {__LINE__, -1.287967889247240e+03, "-1287.97", "%G"}, + {__LINE__, -1.288913808801319e-27, "-1.3e-27", "%7.1e"}, + {__LINE__, -1.289147517760377e-18, "-1.289148E-18", "%E"}, + {__LINE__, -1.289355006600107e+23, "-1.28936E+23", "%+G"}, + {__LINE__, -1.291232014623979e+01, "-1.29123E+01", "%+.5E"}, + {__LINE__, -1.293658562875966e-18, "-1.29366e-18", "%+g"}, + {__LINE__, -1.294982911983638e-19, "-1.29498E-19", "%#G"}, + {__LINE__, -1.296123363481695e-13, "-1.296123E-13", "%E"}, + {__LINE__, -1.296632862070602e-20, "-1.29663e-20", "%+g"}, + {__LINE__, -1.297801639022777e+23, "-129780163902277735132884.11777", "%#0.5f"}, + {__LINE__, -1.297886574534611e+16, "-1.297887e+16", "%+e"}, + {__LINE__, -1.300588216308401e+11, "-1.30e+11", "%.2e"}, + {__LINE__, -1.301296100909062e-10, "-1.3013e-10", "%+g"}, + {__LINE__, -1.303144244306468e-07, "-1.303144E-07", "%E"}, + {__LINE__, -1.304096315024042e-20, "-1.3041E-20", "%+G"}, + {__LINE__, -1.304817970675085e+16, "-1.304818E+16", "%+E"}, + {__LINE__, -1.304870304632683e-15, " -1e-15", "%7.g"}, + {__LINE__, -1.305213586757638e-18, "-1.30521e-18", "%g"}, + {__LINE__, -1.306880734910465e-22, "-1.306881E-22", "%E"}, + {__LINE__, -1.308964092631446e-23, "-1.30896e-23", "%g"}, + {__LINE__, -1.312070555198201e+26, "-131207055519820126043839537", "%+7.f"}, + {__LINE__, -1.312511609151056e-30, "-1.312512E-30", "%#E"}, + {__LINE__, -1.313087359008389e-23, "-0.000000", "%+f"}, + {__LINE__, -1.316948423042059e-02, "-1.316948E-02", "%+E"}, + {__LINE__, -1.317080882577385e+29, "-1.317E+29", "%+.4G"}, + {__LINE__, -1.317514598984346e+24, "-1.317515e+24", "%e"}, + {__LINE__, -1.317817551125923e-21, "-1.31782E-21", "%+G"}, + {__LINE__, -1.319603985988120e+29, "-131960398598811989856471882376.354188", "%f"}, + {__LINE__, -1.328850458671907e+06, "-1e+06", "%.0e"}, + {__LINE__, -1.328945346449817e-23, "-1.328945e-23", "%+e"}, + {__LINE__, -1.330146584094221e-08, "-1e-08", "%+5.g"}, + {__LINE__, -1.332609617892115e+00, "-1.33261", "%2.7G"}, +#ifndef __PCCNECV70__ + {__LINE__, -1.332751724965715e+22, "-13327517249657150344432.920974", "%f"}, + {__LINE__, -1.333194379353273e-19, "-0.000000", "%f"}, + {__LINE__, -1.334304387932777e-06, "-1.334304e-06", "%e"}, + {__LINE__, -1.334306581172082e-05, "-1.3e-05", "%+1.2g"}, + {__LINE__, -1.335283510893438e-05, " -1E-05", "%7.G"}, + {__LINE__, -1.337939692108373e+11, "-1.33794e+11", "%+4g"}, + {__LINE__, -1.339117288874809e-03, "-0.001", "%1.3f"}, + {__LINE__, -1.340100588141492e+27, "-1.340101E+27", "%E"}, + {__LINE__, -1.341953272572953e-19, "-0.000000", "%+f"}, + {__LINE__, -1.343058354301620e-02, "-1.343058e-02", "%e"}, + {__LINE__, -1.346662720871543e+22, "-1.34666E+22", "%#G"}, + {__LINE__, -1.354010578652210e-02, "-0.0135401", "%#g"}, + {__LINE__, -1.354066549307666e-12, " -0", "%+6.f"}, + {__LINE__, -1.355284719365947e+21, "-1.35528e+21", "%g"}, + {__LINE__, -1.356326532145087e+29, "-1E+29", "%4.G"}, + {__LINE__, -1.357278618897291e+19, "-13572786188972911780.581398", "%f"}, + {__LINE__, -1.357537331348202e-10, "-0.000", "%+.3f"}, + {__LINE__, -1.360011287595868e-10, "-0.000000", "%f"}, + {__LINE__, -1.360506902899232e+16, "-13605069028992320.", "%#5.f"}, + {__LINE__, -1.361102570277000e+10, "-1.3611E+10", "%G"}, + {__LINE__, -1.362601255900219e+07, "-1.363E+07", "%.4G"}, + {__LINE__, -1.366078182354771e+10, "-1.36608E+10", "%0G"}, + {__LINE__, -1.366667926615127e+08, "-136666792.661513", "%f"}, + {__LINE__, -1.367162823743231e-12, "-0.000000", "%#f"}, + {__LINE__, -1.371523037550709e+09, "-1.37152e+09", "%+g"}, + {__LINE__, -1.374328925986197e-17, "-1.37e-17", "%.2e"}, + {__LINE__, -1.374995603898421e-26, "-1.375e-26", "%+g"}, + {__LINE__, -1.376726539375688e+09, "-1.376727E+09", "%+E"}, + {__LINE__, -1.378351117694958e-13, "-0.000000", "%f"}, + {__LINE__, -1.378514699313619e-14, "-1.378515e-14", "%e"}, + {__LINE__, -1.379347588942324e-23, "-1.4e-23", "%+.1e"}, + {__LINE__, -1.380380583822272e-17, "-0.000000", "%+f"}, + {__LINE__, -1.381658659947406e+19, "-1.38166e+19", "%g"}, + {__LINE__, -1.382775316390237e+29, "-138277531639023653298181670834.3104", "%+#7.4f"}, + {__LINE__, -1.383541138922400e+00, "-1.383541E+00", "%E"}, + {__LINE__, -1.384625301445090e+01, "-13.8", "%+.3g"}, + {__LINE__, -1.386844086284027e-13, "-1.38684E-13", "%+G"}, + {__LINE__, -1.386930516448650e-28, "-1.386931E-28", "%E"}, + {__LINE__, -1.387444896054260e-07, "-1.38744E-07", "%G"}, + {__LINE__, -1.389685107980798e+22, "-1.38969E+22", "%G"}, + {__LINE__, -1.390880300369347e+03, "-1390.880300", "%f"}, + {__LINE__, -1.391423370198150e-17, "-1E-17", "%+2.G"}, + {__LINE__, -1.394441767471218e-09, "-1.394442e-09", "%e"}, + {__LINE__, -1.396275525062527e-20, "-1.39628E-20", "%G"}, + {__LINE__, -1.397045957455157e+24, "-1E+24", "%.0E"}, + {__LINE__, -1.397458546930799e+21, "-1397458546930798526375.383517", "%f"}, + {__LINE__, -1.397584578988941e-14, "-1.39758e-14", "%5g"}, + {__LINE__, -1.397789397300823e+09, "-1.398e+09", "%.4g"}, + {__LINE__, -1.398167472294874e+21, "-1.398167E+21", "%+7E"}, + {__LINE__, -1.398809636136688e-16, "-0.000000", "%+f"}, + {__LINE__, -1.399545335304119e+26, "-139954533530411872277454676.805064", "%#5f"}, + {__LINE__, -1.400102603335755e+20, "-140010260333575509150.705329", "%2f"}, + {__LINE__, -1.401212746235235e+04, "-1.401213e+04", "%e"}, + {__LINE__, -1.404409427681801e+07, "-1E+07", "%4.E"}, + {__LINE__, -1.406018114263948e-25, "-1e-25", "%3.e"}, + {__LINE__, -1.406245608096877e-06, "-1.4e-06", "%+.1e"}, + {__LINE__, -1.410697254683835e-10, "-1.410697e-10", "%e"}, + {__LINE__, -1.410739097553846e+25, "-1.410739E+25", "%+E"}, + {__LINE__, -1.410850631189577e+04, "-14108.5", "%.6g"}, + {__LINE__, -1.411680434455781e+28, "-14116804344557807304738616949.180141", "%f"}, + {__LINE__, -1.413309465660099e-27, "-1.413309E-27", "%+#E"}, + {__LINE__, -1.418468741386300e+09, "-1418468741.386300", "%f"}, + {__LINE__, -1.420277110892909e+06, "-1.42028e+06", "%1g"}, + {__LINE__, -1.420417889565590e-17, "-1.42E-17", "%.2E"}, + {__LINE__, -1.421098212056305e+08, "-1.421098e+08", "%4e"}, + {__LINE__, -1.421792812798986e-20, " -1E-20", "%7.G"}, + {__LINE__, -1.423675488122461e+18, "-1423675488122461363.360571", "%f"}, + {__LINE__, -1.423810545840653e+15, "-1E+15", "%3.E"}, + {__LINE__, -1.424242673476368e-15, "-1.424243e-15", "%e"}, + {__LINE__, -1.427847435688733e-01, "-1.427847E-01", "%E"}, + {__LINE__, -1.433897734612555e-04, "-0.0001", "%3.g"}, + {__LINE__, -1.434537754075696e-24, "-1.435E-24", "%+0.3E"}, + {__LINE__, -1.434774864809324e-24, "-1E-24", "%2.E"}, + {__LINE__, -1.435583851565142e-11, "-1E-11", "%.0E"}, + {__LINE__, -1.438791024010112e+11, "-1.43879e+11", "%#.6g"}, + {__LINE__, -1.439267565343777e+27, "-1.4e+27", "%2.1e"}, + {__LINE__, -1.439440602670449e+02, "-143.944", "%G"}, + {__LINE__, -1.439494412124925e+13, "-14394944121249.251268", "%f"}, + {__LINE__, -1.440032823245152e+10, "-14400328232.451516", "%f"}, + {__LINE__, -1.440174494009562e-08, "-0.000000", "%7f"}, + {__LINE__, -1.440827804010568e+07, "-1.E+07", "%#6.1G"}, + {__LINE__, -1.442760907195336e+09, "-1.44276E+09", "%+5G"}, + {__LINE__, -1.444655304181403e+10, "-14446553041.814035", "%7f"}, + {__LINE__, -1.444995766787036e+04, "-14450", "%5G"}, + {__LINE__, -1.445078682874535e-13, "-1E-13", "%3.E"}, + {__LINE__, -1.446781469662328e+01, "-14.4678", "%G"}, + {__LINE__, -1.447795251395321e-04, "-0.000145", "%+f"}, + {__LINE__, -1.448193079247108e-02, "-0.014", "%4.2G"}, + {__LINE__, -1.449552967961345e+14, "-1E+14", "%1.E"}, + {__LINE__, -1.451269763513571e+10, "-14512697635.135705", "%6f"}, + {__LINE__, -1.451843176990292e+12, "-1e+12", "%1.g"}, + {__LINE__, -1.452631405935931e+06, "-1.452631e+06", "%e"}, + {__LINE__, -1.452753650285897e+21, "-1452753650285897091265.496783", "%5f"}, + {__LINE__, -1.453811512433860e-05, "-1e-05", "%+6.g"}, + {__LINE__, -1.454071430557372e+13, "-1.4541E+13", "%.4E"}, + {__LINE__, -1.455956079562999e+03, "-1455.96", "%G"}, + {__LINE__, -1.459712196146602e-17, "-1.45971e-17", "%g"}, + {__LINE__, -1.461857733495947e-02, "-1.4619E-02", "%.4E"}, + {__LINE__, -1.465257069090911e-11, "-1.465257E-11", "%+E"}, + {__LINE__, -1.465306607257042e+05, "-146531", "%g"}, + {__LINE__, -1.465857076315921e+20, "-1.46586E+20", "%+G"}, + {__LINE__, -1.467919792051489e+16, "-1.46792e+16", "%2g"}, + {__LINE__, -1.469271519834567e+20, "-146927151983456720785", "%+.0f"}, + {__LINE__, -1.472961447442697e-28, "-1.47296e-28", "%#g"}, + {__LINE__, -1.473385695190456e-12, "-1.473386E-12", "%E"}, + {__LINE__, -1.485003089033267e-10, "-1.485E-10", "%2G"}, + {__LINE__, -1.490541379072390e-18, "-1.490541E-18", "%4E"}, + {__LINE__, -1.490683434793125e+22, "-14906834347931249951102.472551", "%#f"}, + {__LINE__, -1.498356837215425e+20, "-1.49836E+20", "%#G"}, + {__LINE__, -1.498677007818122e+14, "-1.49868E+14", "%+4G"}, + {__LINE__, -1.502143197677119e+23, "-150214319767711934616727.", "%#7.f"}, + {__LINE__, -1.503563770470753e-24, "-1.50356e-24", "%.6g"}, + {__LINE__, -1.504643092793197e-18, "-1.504643e-18", "%+4e"}, + {__LINE__, -1.507017706254022e-13, "-1.50702e-13", "%+g"}, + {__LINE__, -1.507054033750081e-22, "-0.000000", "%f"}, + {__LINE__, -1.508662346022339e+16, "-1.508662E+16", "%#E"}, + {__LINE__, -1.509366882438902e+08, "-2e+08", "%4.g"}, + {__LINE__, -1.511086567087967e+20, "-1.51109e+20", "%g"}, + {__LINE__, -1.514959134622707e-18, "-0.000000", "%+f"}, + {__LINE__, -1.515730120364204e+06, "-2E+06", "%0.G"}, + {__LINE__, -1.516372763118606e-09, "-1.51637e-09", "%g"}, + {__LINE__, -1.520610443546204e+27, "-1.52061e+27", "%g"}, + {__LINE__, -1.522040655642012e+11, "-1.52204E+11", "%+2G"}, + {__LINE__, -1.523772495014966e-24, "-2E-24", "%2.G"}, + {__LINE__, -1.523980825983892e-05, "-0.000", "%2.3f"}, + {__LINE__, -1.526696214603152e-03, "-0.0015267", "%+6.5G"}, + {__LINE__, -1.528680540769583e+00, "-1.5287", "%0.5G"}, + {__LINE__, -1.529951830525433e+08, "-1.529952e+08", "%+e"}, + {__LINE__, -1.533052896559935e+05, "-153305", "%4.0f"}, + {__LINE__, -1.533829640475152e-03, "-0.00153383", "%+#g"}, + {__LINE__, -1.535617804643105e-30, "-1.535618e-30", "%e"}, + {__LINE__, -1.537623698361821e+16, "-15376236983618207.7875719", "%4.7f"}, + {__LINE__, -1.544994895330616e+24, "-1.54499e+24", "%g"}, + {__LINE__, -1.545083356728403e+17, "-1.545083e+17", "%e"}, + {__LINE__, -1.545684535393879e+12, "-1.55E+12", "%3.3G"}, + {__LINE__, -1.545878334099427e+13, "-15458783340994.268762", "%1f"}, + {__LINE__, -1.547697185980564e-18, "-1.5477e-18", "%.6g"}, + {__LINE__, -1.548576527172579e-29, "-1.5E-29", "%2.2G"}, + {__LINE__, -1.549712227835891e+08, "-1.549712e+08", "%#6.7g"}, + {__LINE__, -1.550010819435335e-21, "-1.55001E-21", "%G"}, + {__LINE__, -1.551412476164257e+14, "-1.551412E+14", "%E"}, + {__LINE__, -1.553156638090030e+01, " -2E+01", "%7.G"}, + {__LINE__, -1.553733233064355e-01, "-0.2", "%3.g"}, + {__LINE__, -1.558391111609365e+00, "-1.558391", "%+f"}, + {__LINE__, -1.562004019284766e+15, "-1.562E+15", "%6.5G"}, + {__LINE__, -1.562195733239758e-16, "-0.000000", "%f"}, + {__LINE__, -1.563953339012525e-14, "-1.56395E-14", "%1G"}, + {__LINE__, -1.568317638534983e+18, "-1.56832E+18", "%1G"}, + {__LINE__, -1.568546851135348e+04, "-15685.5", "%+#G"}, + {__LINE__, -1.574297872228857e+18, "-1.574298e+18", "%e"}, + {__LINE__, -1.575696460196291e-21, "-1.5757E-21", "%G"}, + {__LINE__, -1.576324848379791e+25, "-1.57632E+25", "%+G"}, + {__LINE__, -1.577524395140843e+06, "-1.5775E+06", "%.5G"}, + {__LINE__, -1.585122856675091e+12, "-1585122856675.091452", "%f"}, + {__LINE__, -1.586734674395556e-02, "-1.586735E-02", "%E"}, + {__LINE__, -1.592602264315192e+22, "-1.5926E+22", "%G"}, + {__LINE__, -1.594121556700562e+05, "-2E+05", "%+.0G"}, + {__LINE__, -1.598538116193430e+22, "-1.59854e+22", "%+g"}, + {__LINE__, -1.605647463222382e+18, "-1.6056E+18", "%.5G"}, + {__LINE__, -1.610891449201191e+06, "-1.6109E+06", "%#6.4E"}, + {__LINE__, -1.614593168166818e-05, "-1.61459E-05", "%G"}, + {__LINE__, -1.615597722557325e-03, "-0.001616", "%f"}, + {__LINE__, -1.616038022182124e-29, "-1.61604E-29", "%1G"}, + {__LINE__, -1.618380771451625e-28, "-2e-28", "%+1.g"}, + {__LINE__, -1.620287456872150e+10, "-1.620e+10", "%#7.3e"}, + {__LINE__, -1.620469955611903e-29, "-0.000000", "%f"}, + {__LINE__, -1.622580720690927e+20, "-1.622581E+20", "%+#E"}, + {__LINE__, -1.622752500991079e-12, "-1.622753E-12", "%E"}, + {__LINE__, -1.622771933776459e+08, "-1.6228E+08", "%+4.4E"}, + {__LINE__, -1.623894567037391e+09, "-1.623895e+09", "%#e"}, + {__LINE__, -1.624021408185354e-25, "-1.624E-25", "%.5G"}, + {__LINE__, -1.624405320939366e-06, "-1.62441e-06", "%+#g"}, + {__LINE__, -1.631236208958857e-25, "-1.631236e-25", "%#e"}, + {__LINE__, -1.632165969536046e+20, "-1.63217E+20", "%G"}, + {__LINE__, -1.632859596256475e+06, "-1.63286E+06", "%G"}, + {__LINE__, -1.634371961703112e+06, "-1.634372E+06", "%+E"}, + {__LINE__, -1.637230383641845e+24, "-1.63723e+24", "%#g"}, + {__LINE__, -1.638081480475853e+17, "-1.63808e+17", "%+g"}, + {__LINE__, -1.638279690467673e+14, "-163827969046767.325523", "%#f"}, + {__LINE__, -1.640360249548215e-29, "-1.64036e-29", "%+6.6g"}, + {__LINE__, -1.645691728060833e-30, "-1.64569e-30", "%g"}, + {__LINE__, -1.648548965852592e-03, " -0", "%5.f"}, + {__LINE__, -1.650100957771182e+21, "-1650100957771182308420.065965", "%+f"}, + {__LINE__, -1.650957176011913e-02, "-0.016510", "%#4.5G"}, + {__LINE__, -1.651165108095301e+29, "-165116510809530137038336761179.380119", "%f"}, + {__LINE__, -1.657132845094847e-06, "-0.000002", "%f"}, + {__LINE__, -1.657152146172541e+12, "-1.657152E+12", "%.7G"}, + {__LINE__, -1.658377345516132e-06, "-0.00", "%.2f"}, + {__LINE__, -1.658850468902324e+20, "-1.659e+20", "%.4g"}, + {__LINE__, -1.661723557149830e+18, "-1.66172E+18", "%G"}, + {__LINE__, -1.663570885140273e+14, "-166357088514027", "%2.f"}, + {__LINE__, -1.665186944896906e+25, "-1.66519E+25", "%G"}, + {__LINE__, -1.675910137717036e+22, "-2e+22", "%5.g"}, + {__LINE__, -1.677447987675587e-15, "-1.67745E-15", "%G"}, + {__LINE__, -1.677510590697220e+06, "-1677510.590697", "%5f"}, + {__LINE__, -1.677658141289510e-18, "-2E-18", "%+5.G"}, + {__LINE__, -1.678316848066192e-03, "-1.678317E-03", "%E"}, + {__LINE__, -1.681506404024821e+24, "-1.68151E+24", "%G"}, + {__LINE__, -1.688584243722160e+12, "-1.68858E+12", "%+#G"}, + {__LINE__, -1.689468295411408e+28, "-1.68947E+28", "%+G"}, + {__LINE__, -1.690746767470207e-11, "-1.69075E-11", "%G"}, + {__LINE__, -1.692773960755248e-14, "-2E-14", "%4.E"}, + {__LINE__, -1.693349092740995e-18, "-1.69335e-18", "%g"}, + {__LINE__, -1.693642321808920e-26, "-1.69364E-26", "%G"}, + {__LINE__, -1.694579128700042e-12, "-0.000000", "%f"}, + {__LINE__, -1.695454897264717e-08, "-1.7E-08", "%+4.3G"}, + {__LINE__, -1.695733278397589e+19, "-1.695733e+19", "%4e"}, + {__LINE__, -1.699522534409388e-05, "-1.69952E-05", "%G"}, + {__LINE__, -1.701752039544919e+00, "-2", "%.0f"}, + {__LINE__, -1.702304998615036e+16, "-1.7023E+16", "%1G"}, + {__LINE__, -1.703113580904556e-25, "-1.703114e-25", "%+e"}, + {__LINE__, -1.705165515454546e+29, "-1.705166e+29", "%+e"}, + {__LINE__, -1.707392568277288e-05, "-1.70739E-05", "%G"}, + {__LINE__, -1.707477319256742e+09, "-1707477319.26", "%7.2f"}, + {__LINE__, -1.709669107513969e-03, " -0.002", "%7.g"}, + {__LINE__, -1.713284011412432e-24, "-1.713e-24", "%3.3e"}, + {__LINE__, -1.715512203951086e-28, "-1.715512E-28", "%E"}, + {__LINE__, -1.716880832248879e+13, "-1.71688e+13", "%+g"}, + {__LINE__, -1.720722835740680e-15, "-1.7E-15", "%.1E"}, + {__LINE__, -1.721855769574895e+07, "-17218557.695749", "%3f"}, + {__LINE__, -1.722449437415368e+01, "-1.722449e+01", "%e"}, + {__LINE__, -1.723218805116591e-29, "-2e-29", "%.0g"}, + {__LINE__, -1.726129004920195e-05, "-1.72613E-05", "%0G"}, + {__LINE__, -1.727400228037571e-28, "-0.0000000", "%2.7f"}, + {__LINE__, -1.730008745782339e-23, "-1.73e-23", "%.4g"}, + {__LINE__, -1.731875670201859e+09, "-1.73188E+09", "%G"}, + {__LINE__, -1.732142976428085e+10, "-2E+10", "%+6.0E"}, + {__LINE__, -1.732699651229194e-02, "-0.017327", "%5g"}, + {__LINE__, -1.734772870736446e-12, "-0.000000", "%+f"}, + {__LINE__, -1.738576887938331e+09, "-1.73858e+09", "%g"}, + {__LINE__, -1.738759937912438e-08, "-1.73876e-08", "%+2g"}, + {__LINE__, -1.739320154069143e-18, "-0.0000", "%1.4f"}, + {__LINE__, -1.739870415800800e+16, "-1.73987e+16", "%g"}, + {__LINE__, -1.741290506928618e+04, "-17412.9", "%G"}, + {__LINE__, -1.742520800031913e+29, "-1.742521e+29", "%7e"}, + {__LINE__, -1.747620095195231e+01, "-2e+01", "%+2.g"}, + {__LINE__, -1.749860675924882e-21, "-1.74986E-21", "%G"}, + {__LINE__, -1.752675363661431e-06, "-1.7527E-06", "%.5G"}, + {__LINE__, -1.752871508059699e-06, " -0", "%7.f"}, + {__LINE__, -1.755178530989839e+25, "-1.7551785e+25", "%1.7e"}, + {__LINE__, -1.755566213249512e-07, "-1.755566e-07", "%.6e"}, + {__LINE__, -1.756193485005071e-24, "-1.75619E-24", "%+2.6G"}, + {__LINE__, -1.758501410496218e+03, "-1758.501", "%.7G"}, + {__LINE__, -1.758795617219102e+20, "-1.75880E+20", "%#6G"}, + {__LINE__, -1.760538679276709e+03, "-2e+03", "%+1.e"}, + {__LINE__, -1.762660914833003e+27, "-1.76266E+27", "%G"}, + {__LINE__, -1.765122691141907e+19, "-17651226911419071186.1", "%5.1f"}, + {__LINE__, -1.765313277389086e-18, "-2E-18", "%+1.E"}, + {__LINE__, -1.765821717148734e+19, "-1.76582E+19", "%G"}, + {__LINE__, -1.767048687863149e-17, "-1.77E-17", "%+.3G"}, + {__LINE__, -1.768661645451962e+18, "-1.77E+18", "%+.3G"}, + {__LINE__, -1.769753257452233e+01, "-17.6975", "%G"}, + {__LINE__, -1.770945665065531e+28, "-1.770946E+28", "%0.7G"}, + {__LINE__, -1.776713865753894e-09, "-2e-09", "%1.g"}, + {__LINE__, -1.778424845787448e+03, "-1.7784E+03", "%.4E"}, + {__LINE__, -1.779060610701250e+06, "-1.779061E+06", "%E"}, + {__LINE__, -1.781447182110762e-27, "-1.781447E-27", "%E"}, + {__LINE__, -1.782655842123784e-13, "-2.E-13", "%#2.1G"}, + {__LINE__, -1.783071018169166e+16, "-17830710181691664.217851", "%+f"}, + {__LINE__, -1.784665985294415e+25, "-2E+25", "%3.G"}, + {__LINE__, -1.787297600658096e+25, "-2E+25", "%+5.E"}, + {__LINE__, -1.788200250255718e+12, "-1.7882E+12", "%2.4E"}, + {__LINE__, -1.792860730579114e-09, "-1.79286E-09", "%G"}, + {__LINE__, -1.793122797100936e+24, "-1.793123e+24", "%e"}, + {__LINE__, -1.793761706915029e-25, "-0.000000", "%f"}, + {__LINE__, -1.793947567431932e+22, "-1.79395e+22", "%g"}, + {__LINE__, -1.796428035404303e-18, "-1.79643e-18", "%g"}, + {__LINE__, -1.797113144273918e-16, "-1.79711E-16", "%.6G"}, + {__LINE__, -1.798796767828424e-29, "-1.7988E-29", "%G"}, + {__LINE__, -1.805004010633763e-11, "-1.805e-11", "%2.5g"}, + {__LINE__, -1.806936269752338e-26, "-1.80694e-26", "%g"}, + {__LINE__, -1.807122541760172e-10, "-1.80712e-10", "%g"}, + {__LINE__, -1.808295407815630e-06, "-1.8083E-06", "%+G"}, + {__LINE__, -1.813893236685959e+15, "-1813893236685959", "%0.f"}, + {__LINE__, -1.816201530145367e+06, "-1816202", "%+2.f"}, + {__LINE__, -1.822811219123512e+13, "-1.82281e+13", "%g"}, + {__LINE__, -1.826276499170243e-25, "-2E-25", "%+3.G"}, + {__LINE__, -1.832399287433839e-26, "-1.832399E-26", "%#4E"}, + {__LINE__, -1.833597815584463e-18, "-0.000000", "%+3f"}, + {__LINE__, -1.834165532712233e+28, "-1.834166E+28", "%.7G"}, + {__LINE__, -1.837633147831083e+28, "-1.8376331e+28", "%.7e"}, + {__LINE__, -1.839756716742518e-01, "-0.2", "%+0.G"}, + {__LINE__, -1.840101206950368e-14, "-1.840101E-14", "%+E"}, + {__LINE__, -1.842043645474877e+17, "-1.84204e+17", "%+g"}, + {__LINE__, -1.842155892969934e+17, "-1.84216e+17", "%+g"}, + {__LINE__, -1.843566073012842e-25, "-1.84357E-25", "%G"}, + {__LINE__, -1.843976321320497e-02, "-0.02", "%+4.2f"}, + {__LINE__, -1.845299931651554e+11, "-1.8453E+11", "%0.4E"}, + {__LINE__, -1.846199038659889e-06, "-1.8462e-06", "%0.5g"}, + {__LINE__, -1.847062180184169e-30, "-1.847062E-30", "%5E"}, + {__LINE__, -1.847962158722201e-16, "-0.000000", "%f"}, + {__LINE__, -1.849446376756582e+15, "-1.8E+15", "%2.2G"}, + {__LINE__, -1.853168465523878e-24, "-2E-24", "%1.E"}, + {__LINE__, -1.853601367230139e+10, "-1.853601e+10", "%e"}, + {__LINE__, -1.857367903775364e+18, "-1.86E+18", "%1.3G"}, + {__LINE__, -1.858332820633906e-05, "-0.000019", "%7f"}, + {__LINE__, -1.860243811657223e-23, "-1.860244e-23", "%e"}, + {__LINE__, -1.860660612539794e+08, "-1.86066e+08", "%+6.5e"}, + {__LINE__, -1.861160816251124e-09, "-2E-09", "%1.G"}, + {__LINE__, -1.862380636974688e-25, "-1.9E-25", "%.2G"}, + {__LINE__, -1.864168808453004e+15, "-1.86417E+15", "%G"}, + {__LINE__, -1.864273144411246e+07, "-1.86427e+07", "%g"}, + {__LINE__, -1.864929236615802e-02, "-2e-02", "%+3.e"}, + {__LINE__, -1.865010503480847e+19, "-2E+19", "%4.G"}, + {__LINE__, -1.866276374553144e+22, "-1.866276e+22", "%e"}, + {__LINE__, -1.870809567910649e+09, "-1.870810e+09", "%e"}, + {__LINE__, -1.872555495839008e-13, "-1.872555E-13", "%3E"}, + {__LINE__, -1.874465717110388e-22, "-1.874466E-22", "%E"}, + {__LINE__, -1.874916306627632e+21, "-1874916306627632422987.517202", "%f"}, + {__LINE__, -1.875804322194491e-23, "-0.000000", "%+f"}, + {__LINE__, -1.876662099198587e-04, "-0.000187666", "%G"}, + {__LINE__, -1.876775504795760e-25, "-1.87678e-25", "%0g"}, + {__LINE__, -1.879343051002554e-20, " -0.", "%#6.f"}, + {__LINE__, -1.881535445774717e-15, "-1.881535e-15", "%e"}, + {__LINE__, -1.887515901404300e+00, "-1.888", "%2.4G"}, + {__LINE__, -1.887730637149009e+17, "-1.887731E+17", "%E"}, + {__LINE__, -1.889920303480086e+17, "-1.889920e+17", "%+e"}, + {__LINE__, -1.891903478784091e+04, "-1.891903e+04", "%e"}, + {__LINE__, -1.893550084305833e+16, "-1.89355e+16", "%g"}, + {__LINE__, -1.894675230197676e+05, "-1.894675e+05", "%#e"}, + {__LINE__, -1.898389624953187e-27, "-1.898390e-27", "%+e"}, + {__LINE__, -1.899250044644046e+21, "-1899250044644046120367.875119", "%+4.6f"}, + {__LINE__, -1.904187609804679e-02, "-1.90419E-02", "%0.5E"}, + {__LINE__, -1.904452538421193e-04, "-2e-04", "%4.0e"}, + {__LINE__, -1.904615326969061e-16, "-1.904615e-16", "%1.7g"}, + {__LINE__, -1.907761255064750e+02, "-190.776126", "%f"}, + {__LINE__, -1.910727641826707e-10, " -2e-10", "%7.g"}, + {__LINE__, -1.913149279262051e+15, "-1.913149e+15", "%.7g"}, + {__LINE__, -1.913235739298009e+28, "-1.913236e+28", "%e"}, + {__LINE__, -1.913526822735271e+18, "-1.914e+18", "%.4g"}, + {__LINE__, -1.913780977515583e+17, "-191378097751558335.9150", "%5.4f"}, + {__LINE__, -1.917095456962182e-10, "-2E-10", "%4.G"}, + {__LINE__, -1.918803033972851e+23, "-191880303397285132405158.947222", "%f"}, + {__LINE__, -1.926420984801848e+16, "-19264209848018483.128840", "%+f"}, + {__LINE__, -1.931905465942639e-10, "-1.93191e-10", "%g"}, + {__LINE__, -1.932907105840252e+06, "-1.932907e+06", "%+#e"}, + {__LINE__, -1.933091601918916e+15, "-1.933092E+15", "%#E"}, + {__LINE__, -1.934296184983361e+09, "-1.9343e+09", "%1.6g"}, + {__LINE__, -1.934637311832448e+11, "-1.93464e+11", "%+g"}, + {__LINE__, -1.936201483262186e+12, "-2e+12", "%+6.g"}, + {__LINE__, -1.939114661603911e+19, "-1.93911E+19", "%G"}, + {__LINE__, -1.940478182124347e-13, "-0.000000", "%f"}, + {__LINE__, -1.943218220654923e+08, "-2E+08", "%+5.0G"}, + {__LINE__, -1.943526872455779e-30, "-1.9E-30", "%.1E"}, + {__LINE__, -1.949869164681357e+19, "-1.949869e+19", "%#3e"}, + {__LINE__, -1.954181060535402e+23, "-1.954181e+23", "%e"}, + {__LINE__, -1.961581555579142e+14, "-1.962E+14", "%.3E"}, + {__LINE__, -1.964535562036915e+07, "-1.96454E+07", "%G"}, + {__LINE__, -1.969749653575926e+04, "-19697.5", "%.6g"}, + {__LINE__, -1.973475369169053e+15, "-1.97348e+15", "%g"}, + {__LINE__, -1.975658532866600e-21, "-2e-21", "%+1.2g"}, + {__LINE__, -1.984050343831260e+09, "-1.984050E+09", "%E"}, + {__LINE__, -1.984422410018571e+12, "-1.984422e+12", "%+4.7g"}, + {__LINE__, -1.984878687667223e-22, "-0.000000", "%f"}, + {__LINE__, -1.986116930967811e-28, "-1.98612e-28", "%g"}, + {__LINE__, -1.986774457812683e+02, "-1.986774e+02", "%e"}, + {__LINE__, -1.987274814938726e-04, "-0.000198727", "%g"}, + {__LINE__, -1.987319200580415e+10, "-1.987319E+10", "%E"}, + {__LINE__, -1.987980768698114e-19, "-0.000000", "%3f"}, + {__LINE__, -1.994698965044602e-29, "-2E-29", "%+4.0G"}, + {__LINE__, -1.997833122667050e+26, "-1.99783E+26", "%G"}, + {__LINE__, -1.999453681184129e-10, "-0.00000", "%.5f"}, + {__LINE__, -1.999897345839745e-16, "-1.9999e-16", "%g"}, + {__LINE__, -2.003703825123989e-22, "-0.000000", "%f"}, + {__LINE__, -2.004569188274957e-23, "-2.00457E-23", "%G"}, + {__LINE__, -2.005911883189058e+07, "-2.00591E+07", "%G"}, + {__LINE__, -2.006438312005722e-25, "-2.006e-25", "%0.4g"}, + {__LINE__, -2.017322171210280e+18, "-2.01732E+18", "%+0G"}, + {__LINE__, -2.017718635819594e-06, "-2.01772e-06", "%5g"}, + {__LINE__, -2.019187445568160e-12, "-0.00", "%.2f"}, + {__LINE__, -2.021022665608503e+25, "-20210226656085028551501636.684", "%2.3f"}, + {__LINE__, -2.022720393474145e+07, "-2.02272E+07", "%#G"}, + {__LINE__, -2.024506694471065e+23, "-2.02451E+23", "%G"}, + {__LINE__, -2.024884686553821e-15, " -2e-15", "%7.g"}, + {__LINE__, -2.027484636128966e-23, "-2.0275E-23", "%.5G"}, + {__LINE__, -2.028185530467237e+21, "-2028185530467237374097.067", "%+4.3f"}, + {__LINE__, -2.028388905566873e-09, "-0.000000", "%f"}, + {__LINE__, -2.029856507431584e-17, "-2.02986E-17", "%G"}, + {__LINE__, -2.029891733449167e+27, "-2029891733449166846270372843.7190875", "%3.7f"}, + {__LINE__, -2.031933616694469e+14, "-2.031934E+14", "%#E"}, + {__LINE__, -2.034011738471413e-10, "-2.03401E-10", "%#G"}, + {__LINE__, -2.036087355975756e+29, "-203608735597575574161055556032.806635", "%+f"}, + {__LINE__, -2.036355025137273e+09, "-2.036355E+09", "%#.7G"}, + {__LINE__, -2.038423730536878e+12, "-2E+12", "%4.G"}, + {__LINE__, -2.045209202278810e+23, "-2.045209e+23", "%+#e"}, + {__LINE__, -2.046794083517423e-06, "-2.04679e-06", "%g"}, + {__LINE__, -2.048042459678599e-19, "-0.000000", "%f"}, + {__LINE__, -2.050526462096153e+18, "-2.05053e+18", "%+g"}, + {__LINE__, -2.053583900249402e+13, "-2.053584e+13", "%0.7g"}, + {__LINE__, -2.054342100957522e-23, "-2.05434E-23", "%#G"}, + {__LINE__, -2.054793400141025e+11, "-205479340014.1", "%+2.1f"}, + {__LINE__, -2.059200689196498e-11, "-0.000000", "%#f"}, + {__LINE__, -2.060960692728114e-16, "-0.000000", "%+f"}, + {__LINE__, -2.061417528654300e-30, "-2.06E-30", "%.3G"}, + {__LINE__, -2.061513401198340e-29, "-2.06151e-29", "%7g"}, + {__LINE__, -2.061846698845984e+27, "-2.061847E+27", "%E"}, + {__LINE__, -2.063922242876789e-19, "-2.06392e-19", "%#g"}, + {__LINE__, -2.065359431805529e+03, "-2065.359432", "%f"}, + {__LINE__, -2.065529069992156e-04, "-0.000206553", "%+G"}, + {__LINE__, -2.066082546490980e-25, "-2.06608e-25", "%5g"}, + {__LINE__, -2.068394312095200e+17, "-2.068394e+17", "%e"}, + {__LINE__, -2.071024178556425e-10, "-2.07102E-10", "%G"}, + {__LINE__, -2.074401605950382e-22, "-2.07e-22", "%1.3g"}, + {__LINE__, -2.074731895144874e-26, "-2.07473E-26", "%G"}, + {__LINE__, -2.074895800882730e+18, "-2074895800882730068.082083", "%+f"}, + {__LINE__, -2.077336220500764e-30, "-0", "%2.f"}, + {__LINE__, -2.078067878561077e+09, "-2.0781e+09", "%0.5g"}, + {__LINE__, -2.080497889634533e+15, "-2.080498E+15", "%4E"}, + {__LINE__, -2.084717279367594e-21, "-2.08472e-21", "%+g"}, + {__LINE__, -2.087827915301948e+29, "-2E+29", "%6.1G"}, + {__LINE__, -2.090268686389680e+05, "-2.090269e+05", "%1e"}, + {__LINE__, -2.092036176589720e+24, "-2.09204e+24", "%+g"}, + {__LINE__, -2.093546373938615e-21, "-2.093546e-21", "%#e"}, + {__LINE__, -2.101302069316682e+18, "-2.1013e+18", "%+7g"}, + {__LINE__, -2.103463622286002e-13, "-2.103464E-13", "%E"}, + {__LINE__, -2.105622845016732e+06, "-2105622.845017", "%1f"}, + {__LINE__, -2.109999123037767e+28, "-2.11E+28", "%.2E"}, + {__LINE__, -2.110317013992166e+04, "-21103.2", "%+g"}, + {__LINE__, -2.112226142154618e+21, "-2112226142154617569702.", "%#6.f"}, + {__LINE__, -2.112519484486528e+06, "-2.11252E+06", "%G"}, + {__LINE__, -2.113439260812000e+23, "-2E+23", "%1.G"}, + {__LINE__, -2.113465893194608e-15, "-2.1135E-15", "%.5G"}, + {__LINE__, -2.113547784669409e+20, "-2.1135e+20", "%2.5g"}, + {__LINE__, -2.114146001321822e+28, "-2.114146e+28", "%e"}, + {__LINE__, -2.114509425574444e-30, " -0", "%4.f"}, + {__LINE__, -2.114887421659561e-21, "-0.000000", "%+f"}, + {__LINE__, -2.121120215127601e+21, "-2121120215127601404958.5683097", "%.7f"}, + {__LINE__, -2.122555390665796e+06, "-2E+06", "%0.G"}, + {__LINE__, -2.123468430242052e-27, "-0.000000", "%+f"}, + {__LINE__, -2.123473598890635e+28, "-2.12347e+28", "%+g"}, + {__LINE__, -2.124328049748190e-04, "-2.124328E-04", "%E"}, + {__LINE__, -2.125633890999010e+28, "-2E+28", "%+5.G"}, + {__LINE__, -2.125697963566045e+21, "-2.1257E+21", "%0G"}, + {__LINE__, -2.127638109230109e+06, "-2.12764e+06", "%+6g"}, + {__LINE__, -2.128456114617786e+07, "-2.128456E+07", "%E"}, + {__LINE__, -2.128732742932824e-04, "-2.128733E-04", "%#E"}, + {__LINE__, -2.129654381588404e+27, "-2129654381588404365999167566.7697564", "%+.7f"}, + {__LINE__, -2.129792795009985e+20, "-2.12979e+20", "%g"}, + {__LINE__, -2.131026925664619e-20, "-2e-20", "%.0e"}, + {__LINE__, -2.132860730144188e-04, "-0.0002", "%5.g"}, + {__LINE__, -2.133620979309562e+06, "-2e+06", "%3.e"}, + {__LINE__, -2.133821423139120e-27, "-2.13382E-27", "%.6G"}, + {__LINE__, -2.134253401425940e-07, "-0.000000", "%f"}, + {__LINE__, -2.135469568156964e-29, "-2.135470E-29", "%+7E"}, + {__LINE__, -2.135723595288365e-25, "-0.0", "%.1f"}, + {__LINE__, -2.137642458920094e-09, "-2.13764e-09", "%g"}, + {__LINE__, -2.143412361116583e+12, "-2.14341e+12", "%+g"}, + {__LINE__, -2.144467087741129e-17, "-2.14447e-17", "%+g"}, + {__LINE__, -2.145726966596964e-11, "-0.000000", "%2f"}, + {__LINE__, -2.148318753042597e+08, "-2.14832E+08", "%5G"}, + {__LINE__, -2.149932310549644e-19, "-2.14993e-19", "%g"}, + {__LINE__, -2.150050917377646e-21, " -0", "%3.f"}, + {__LINE__, -2.150854313643430e-16, "-0.000000", "%.6f"}, + {__LINE__, -2.151071797121845e+00, "-2.15107", "%+g"}, + {__LINE__, -2.158728406865981e+14, "-215872840686598.088666", "%7f"}, + {__LINE__, -2.166062878011641e-23, "-2.166063e-23", "%e"}, + {__LINE__, -2.167045002060684e+12, "-2.167045E+12", "%E"}, + {__LINE__, -2.173752581051530e+20, "-217375258105153035259.604621", "%f"}, + {__LINE__, -2.175599129057555e+24, "-2.175599E+24", "%E"}, + {__LINE__, -2.176564454093042e-02, "-0.0217656", "%+G"}, + {__LINE__, -2.181270774327071e-12, "-0.000000", "%#1f"}, + {__LINE__, -2.184404769844158e-09, "-2.2E-09", "%+.2G"}, + {__LINE__, -2.184881476334310e-07, "-2.18488e-07", "%g"}, + {__LINE__, -2.189197211449684e-11, "-2E-11", "%.0G"}, + {__LINE__, -2.189451286805190e+20, "-218945128680519029984", "%3.f"}, + {__LINE__, -2.190642494146884e-27, " -0.", "%#4.f"}, + {__LINE__, -2.194727956725854e+06, "-2.19E+06", "%.3G"}, + {__LINE__, -2.196145868303877e+11, "-219614586830.387726", "%+5f"}, + {__LINE__, -2.196397972262690e-16, "-0.000000", "%3f"}, + {__LINE__, -2.202692843474668e-01, "-2.203e-01", "%.3e"}, + {__LINE__, -2.204528684782451e-21, "-2.20453E-21", "%G"}, + {__LINE__, -2.214926838821340e-16, "-2e-16", "%+2.g"}, + {__LINE__, -2.215558986352773e+18, "-2215558986352773374", "%0.f"}, + {__LINE__, -2.216976693056186e+27, "-2216976693056186498154147557.215765", "%f"}, + {__LINE__, -2.217348422793322e+13, "-2.21735E+13", "%6G"}, + {__LINE__, -2.217732695583920e-07, "-0", "%.0f"}, + {__LINE__, -2.221185494767834e-14, "-2.22119e-14", "%g"}, + {__LINE__, -2.224557193699609e-16, "-2.224557E-16", "%E"}, + {__LINE__, -2.227417758704028e-18, "-0.000000", "%0f"}, + {__LINE__, -2.231261655673006e-30, "-2.231262E-30", "%E"}, + {__LINE__, -2.233081938836160e+21, "-2233081938836160240668.960", "%+6.3f"}, + {__LINE__, -2.233158918439853e+05, "-223316", "%2G"}, + {__LINE__, -2.233802298007898e-30, "-2.2338E-30", "%2G"}, + {__LINE__, -2.233864858404732e+17, "-223386485840473181.241350", "%f"}, + {__LINE__, -2.241242805107749e+14, "-2.24124E+14", "%G"}, + {__LINE__, -2.244555498855249e+25, "-2.24456E+25", "%#G"}, + {__LINE__, -2.248170665127481e-07, "-2.248171E-07", "%E"}, + {__LINE__, -2.252558275567388e-13, "-2.25256e-13", "%g"}, + {__LINE__, -2.256190083496001e+13, "-22561900834960.0136398", "%7.7f"}, + {__LINE__, -2.259851596715945e+27, "-2.259852e+27", "%e"}, + {__LINE__, -2.260461480001174e-21, "-0.000000", "%f"}, + {__LINE__, -2.264128628428577e+22, "-2.26413e+22", "%1g"}, + {__LINE__, -2.265914518399595e-04, "-0.000226591", "%G"}, + {__LINE__, -2.266251557092826e+23, "-2.26625e+23", "%g"}, + {__LINE__, -2.268592252572450e+19, "-2.268592e+19", "%2.6e"}, + {__LINE__, -2.268597523847349e+11, "-2.2686e+11", "%g"}, + {__LINE__, -2.268963106935546e+05, "-226896", "%+g"}, + {__LINE__, -2.272527876808919e-24, "-0.000000", "%#f"}, + {__LINE__, -2.273366440479073e+02, "-227.337", "%g"}, + {__LINE__, -2.277858038556191e+25, "-2.28E+25", "%0.3G"}, + {__LINE__, -2.282019915623415e+25, "-2E+25", "%5.E"}, + {__LINE__, -2.283333247435650e-27, " -0", "%4.f"}, + {__LINE__, -2.285230610829355e+23, "-2E+23", "%2.G"}, + {__LINE__, -2.290900253402985e+23, "-2.2909E+23", "%G"}, + {__LINE__, -2.293266953268186e+08, "-2.29327e+08", "%g"}, + {__LINE__, -2.293489603164786e+23, "-229348960316478578391752.3076525", "%4.7f"}, + {__LINE__, -2.294434667605481e+15, "-2.2944E+15", "%.5G"}, + {__LINE__, -2.296607768466765e+21, "-2.29661E+21", "%G"}, + {__LINE__, -2.297449967994012e+14, "-229744996799401.23542", "%+.5f"}, + {__LINE__, -2.301162556466583e-01, "-0.230116", "%+#2g"}, + {__LINE__, -2.301676246374004e+05, "-230168.", "%#g"}, + {__LINE__, -2.301976724487835e-01, "-0.230198", "%5G"}, + {__LINE__, -2.303269770571222e-15, "-2.303270e-15", "%.6e"}, + {__LINE__, -2.306451480495636e+23, "-2.30645E+23", "%G"}, + {__LINE__, -2.307659351219690e-17, "-0.000000", "%+3f"}, + {__LINE__, -2.309009762339430e+16, "-2.30901E+16", "%G"}, + {__LINE__, -2.309261751862100e+06, "-2309261.751862", "%+f"}, + {__LINE__, -2.309504876918634e-26, " -2E-26", "%7.E"}, + {__LINE__, -2.310910348147804e-26, "-2e-26", "%5.g"}, + {__LINE__, -2.317173552252235e+05, "-231717.4", "%.7g"}, + {__LINE__, -2.319517289618469e-23, "-2.31952E-23", "%+G"}, + {__LINE__, -2.320103195142527e+08, "-2.320103E+08", "%+E"}, + {__LINE__, -2.323523032125633e+24, "-2323523032125633491773442.07419", "%.5f"}, + {__LINE__, -2.326279126614399e-16, "-0.000000", "%f"}, + {__LINE__, -2.331393688620925e-09, "-2.33139e-09", "%#g"}, + {__LINE__, -2.334233527512469e+01, " -23", "%6.0f"}, + {__LINE__, -2.337418834112767e+24, " -2E+24", "%7.E"}, + {__LINE__, -2.339455293612118e+12, "-2339455293612.1", "%+.1f"}, + {__LINE__, -2.341930318143367e-18, "-2.E-18", "%#4.E"}, + {__LINE__, -2.346107614950921e-17, "-0.00000", "%+2.5f"}, + {__LINE__, -2.348356578807972e+23, "-2.34836e+23", "%g"}, + {__LINE__, -2.351485855138244e+19, "-2.351486e+19", "%+e"}, + {__LINE__, -2.362101647639198e-15, "-2.36210e-15", "%#g"}, + {__LINE__, -2.369743873030115e+08, "-2e+08", "%.1g"}, + {__LINE__, -2.371658164739356e+25, "-23716581647393559784120498.079574", "%f"}, + {__LINE__, -2.372427847607163e+28, "-2.37243E+28", "%G"}, + {__LINE__, -2.375465465294647e+11, "-2.375465e+11", "%e"}, + {__LINE__, -2.377128971572195e-18, "-0.0", "%1.1f"}, + {__LINE__, -2.380322448568089e-13, "-2.38032E-13", "%+#0G"}, + {__LINE__, -2.385960728264882e+26, "-2E+26", "%.0E"}, + {__LINE__, -2.387345744004747e+00, "-2.38735", "%G"}, + {__LINE__, -2.390480023300201e+25, "-2.39048e+25", "%g"}, + {__LINE__, -2.395420431930886e+23, "-2E+23", "%2.E"}, + {__LINE__, -2.401144663870969e-10, "-2.e-10", "%#6.g"}, + {__LINE__, -2.402787441215039e-08, "-2.40279e-08", "%g"}, + {__LINE__, -2.402990830425278e+08, "-2.40299E+08", "%G"}, + {__LINE__, -2.404213682932215e+08, "-2.40421e+08", "%2g"}, + {__LINE__, -2.409385592298822e+21, "-2409385592298821876511.283335", "%7f"}, + {__LINE__, -2.410798267658614e+13, "-2.4108e+13", "%+g"}, + {__LINE__, -2.413180068271811e-24, "-0.000000", "%+f"}, + {__LINE__, -2.413268457113495e+26, "-2.41327E+26", "%3.6G"}, + {__LINE__, -2.415341832206007e-13, "-0.000000", "%+f"}, + {__LINE__, -2.422519577068670e-08, "-0.0000000", "%.7f"}, + {__LINE__, -2.422533651282808e+20, "-2.42253E+20", "%#G"}, + {__LINE__, -2.422795006880671e+17, "-2.4228e+17", "%g"}, + {__LINE__, -2.423483330202008e+20, "-2.42348e+20", "%g"}, + {__LINE__, -2.431756009640369e-04, "-0.000243176", "%+#3g"}, + {__LINE__, -2.431878622534173e-05, "-0.000024", "%f"}, + {__LINE__, -2.432012113077180e+24, "-2.43201e+24", "%g"}, + {__LINE__, -2.433843704470487e+07, "-24338437", "%4.f"}, + {__LINE__, -2.435475755031956e+11, "-2.435476E+11", "%1E"}, + {__LINE__, -2.438081888695437e-13, "-0.000000", "%f"}, + {__LINE__, -2.438334590462860e+10, "-2.4E+10", "%5.2G"}, + {__LINE__, -2.440223135334059e+17, "-2.44022e+17", "%g"}, + {__LINE__, -2.444107281115317e-21, "-2.44411e-21", "%+g"}, + {__LINE__, -2.444582273206171e-02, " -0.02", "%7.G"}, + {__LINE__, -2.445234676352794e+23, "-2.44523e+23", "%#g"}, + {__LINE__, -2.449185020984714e+08, "-2.E+08", "%#2.G"}, + {__LINE__, -2.450646640466020e+22, "-2.45065E+22", "%5G"}, + {__LINE__, -2.456840850262473e+13, "-24568408502625", "%0.f"}, + {__LINE__, -2.464466865714499e-10, "-2e-10", "%6.g"}, + {__LINE__, -2.466022088999151e+27, "-2.46602E+27", "%G"}, + {__LINE__, -2.484398113119779e-04, "-2.484398E-04", "%E"}, + {__LINE__, -2.484591850456328e+23, "-248459185045632846566832.085955", "%+f"}, + {__LINE__, -2.488166252162446e-11, "-2.5E-11", "%4.2G"}, + {__LINE__, -2.493507313049390e+24, "-2.49E+24", "%4.3G"}, + {__LINE__, -2.500280281988428e+28, "-2.5E+28", "%.4G"}, + {__LINE__, -2.500373956445372e-07, "-2.50037e-07", "%g"}, + {__LINE__, -2.505566434769299e-12, "-2.5E-12", "%+#0.2G"}, + {__LINE__, -2.508215917020758e+05, "-2.508216e+05", "%5e"}, + {__LINE__, -2.519368094680315e-29, "-2.51937e-29", "%#0g"}, + {__LINE__, -2.522266530587753e-11, "-2.52227e-11", "%+g"}, + {__LINE__, -2.534492886372514e-06, "-2.53449E-06", "%0G"}, + {__LINE__, -2.534617610955074e-02, "-0.03", "%0.2f"}, + {__LINE__, -2.540551642835634e+26, "-3E+26", "%4.G"}, + {__LINE__, -2.548210731830516e-26, "-0.000", "%2.3f"}, + {__LINE__, -2.558868082397931e-11, "-3E-11", "%2.E"}, + {__LINE__, -2.560062512991052e+11, "-2.56006E+11", "%+G"}, + {__LINE__, -2.561274682814428e-05, "-0.000026", "%f"}, + {__LINE__, -2.563424949397357e-02, " -0", "%6.f"}, + {__LINE__, -2.577010939931465e+17, "-2.57701E+17", "%G"}, + {__LINE__, -2.578224879294822e+10, "-3E+10", "%+4.1G"}, + {__LINE__, -2.585655636750244e+13, "-2.585656e+13", "%+0.7g"}, + {__LINE__, -2.585657986834408e+14, "-2.5857e+14", "%3.5g"}, + {__LINE__, -2.586728929368101e+02, "-258.673", "%+g"}, + {__LINE__, -2.591293023229468e+06, "-2591293.0232295", "%2.7f"}, + {__LINE__, -2.592454222603538e-06, "-2.59245E-06", "%G"}, + {__LINE__, -2.599399905869649e+02, "-259.939991", "%f"}, + {__LINE__, -2.605382860307596e+12, "-2.60538E+12", "%2G"}, + {__LINE__, -2.607507689402762e-01, "-0.260751", "%#.6g"}, + {__LINE__, -2.612933252582967e+15, "-2.61293e+15", "%g"}, + {__LINE__, -2.614337505491483e-14, "-2.61434E-14", "%.6G"}, + {__LINE__, -2.618302263333671e+14, "-2.62e+14", "%3.3g"}, + {__LINE__, -2.622998533972296e+00, "-3.", "%#0.g"}, + {__LINE__, -2.623348319869643e-15, "-2.62335E-15", "%#G"}, + {__LINE__, -2.626703132693163e+23, "-3E+23", "%+6.E"}, + {__LINE__, -2.629610853765779e+25, "-2.62961E+25", "%+#G"}, + {__LINE__, -2.632993880472784e+26, "-2.63299E+26", "%G"}, + {__LINE__, -2.635651112327873e-20, "-2.63565E-20", "%1G"}, + {__LINE__, -2.636003980473492e-23, "-2.636E-23", "%G"}, + {__LINE__, -2.639316453244009e+10, "-26393164532.440094", "%#f"}, + {__LINE__, -2.640517223417942e-28, "-2.641e-28", "%.3e"}, + {__LINE__, -2.640625797147664e-22, "-2.640626E-22", "%E"}, + {__LINE__, -2.644401262524378e-12, " -0.000", "%7.3f"}, + {__LINE__, -2.651033203243637e-14, "-2.651033e-14", "%+e"}, + {__LINE__, -2.652386470126594e-24, "-2.652386E-24", "%E"}, + {__LINE__, -2.654281018623631e-12, "-0.00000", "%6.5f"}, + {__LINE__, -2.655529742118827e+02, "-265.552974", "%f"}, + {__LINE__, -2.658550833241620e+22, "-26585508332416196708436.473273", "%+f"}, + {__LINE__, -2.660515890519100e+08, "-2.660516E+08", "%E"}, + {__LINE__, -2.665025749266086e-24, "-2.66503E-24", "%G"}, + {__LINE__, -2.666117105643095e-20, "-2.66612e-20", "%g"}, + {__LINE__, -2.667051347741259e+11, "-3e+11", "%6.g"}, + {__LINE__, -2.667207607243375e+04, "-26672.076072", "%+#f"}, + {__LINE__, -2.667631877167590e+26, "-2.667632E+26", "%E"}, + {__LINE__, -2.673817942962878e+13, "-2.673818e+13", "%+2.6e"}, + {__LINE__, -2.674972907853507e+20, "-2.674973E+20", "%E"}, + {__LINE__, -2.675830887404867e+14, "-2.675831E+14", "%E"}, + {__LINE__, -2.682749918168908e+26, "-2.682750E+26", "%E"}, + {__LINE__, -2.689222801942679e-03, "-0.0027", "%7.2G"}, + {__LINE__, -2.692245629411156e+25, "-2.69225e+25", "%g"}, + {__LINE__, -2.692606702464273e+11, "-2.69261e+11", "%g"}, + {__LINE__, -2.693070822061136e-27, "-2.69307e-27", "%+g"}, + {__LINE__, -2.694415515655336e-30, "-3E-30", "%+3.0E"}, + {__LINE__, -2.694770057384739e+15, "-2.69477e+15", "%g"}, + {__LINE__, -2.699998392329361e+01, "-27", "%+.2g"}, + {__LINE__, -2.700151952281511e+23, "-270015195228151050343968.", "%+#5.f"}, + {__LINE__, -2.707398527302841e-08, "-2.70740e-08", "%+#3g"}, + {__LINE__, -2.711404950850030e-21, "-2.71E-21", "%.2E"}, + {__LINE__, -2.714057739024281e-10, "-2.714e-10", "%.4g"}, + {__LINE__, -2.717657632815414e-10, "-2.71766e-10", "%g"}, + {__LINE__, -2.720875786430592e-09, "-2.7E-09", "%6.2G"}, + {__LINE__, -2.725886730997891e+19, "-2.72589e+19", "%g"}, + {__LINE__, -2.726089169748676e-09, "-2.72609E-09", "%+G"}, + {__LINE__, -2.732907572038661e-30, "-2.73291E-30", "%G"}, + {__LINE__, -2.737918050958789e+11, "-3e+11", "%1.g"}, + {__LINE__, -2.739024251198484e-18, "-2.73902e-18", "%+g"}, + {__LINE__, -2.742646144452305e+13, "-2.74265e+13", "%g"}, + {__LINE__, -2.742911865386719e+06, "-3E+06", "%+5.G"}, + {__LINE__, -2.759159275123811e-30, "-0.000000", "%+f"}, + {__LINE__, -2.759794813930001e-21, "-2.75979e-21", "%+g"}, + {__LINE__, -2.763243077558348e+20, "-2.7632E+20", "%+0.4E"}, + {__LINE__, -2.770348477810209e-14, "-0.000000", "%2f"}, + {__LINE__, -2.776074766292453e+05, "-277607", "%g"}, + {__LINE__, -2.776610811432007e-07, "-2.77661E-07", "%6G"}, + {__LINE__, -2.778673793270678e+23, "-3E+23", "%+4.E"}, + {__LINE__, -2.782405168708350e+08, "-278240516.87084", "%.5f"}, + {__LINE__, -2.783316149365198e-09, "-3E-09", "%5.0G"}, + {__LINE__, -2.785436703085409e-27, "-2.78544E-27", "%#G"}, + {__LINE__, -2.787479051660640e+21, "-2.78748e+21", "%g"}, + {__LINE__, -2.789445406042450e-03, "-0.002789", "%+f"}, + {__LINE__, -2.791104581836077e+05, "-279110.4581836", "%+7.7f"}, + {__LINE__, -2.802078617775784e+04, "-28020.786", "%0.3f"}, + {__LINE__, -2.804954315579055e+20, "-2.80495E+20", "%G"}, + {__LINE__, -2.806575341862696e-05, "-2.80658E-05", "%G"}, + {__LINE__, -2.807769556900402e-06, "-0.000003", "%+#f"}, + {__LINE__, -2.808882056357941e-12, "-0.0", "%.1f"}, + {__LINE__, -2.809386677339924e+10, "-2.8094E+10", "%6.5G"}, + {__LINE__, -2.818404311437694e+19, "-3E+19", "%6.G"}, + {__LINE__, -2.819463285551660e+01, "-28.1946", "%+G"}, + {__LINE__, -2.821428853207724e-16, "-3e-16", "%6.g"}, + {__LINE__, -2.824452750788444e+07, "-3e+07", "%+2.g"}, + {__LINE__, -2.825430381094971e+28, "-3e+28", "%+.0e"}, + {__LINE__, -2.830010928384944e-17, "-0", "%.0f"}, + {__LINE__, -2.832505114479680e-09, "-0.000000", "%f"}, + {__LINE__, -2.833246604950796e+13, "-2.83325E+13", "%G"}, + {__LINE__, -2.833274073265017e+13, "-28332740732650.174564", "%f"}, + {__LINE__, -2.835842581787797e+07, "-2.83584E+07", "%2G"}, + {__LINE__, -2.839758384681983e-07, "-2.83976E-07", "%.6G"}, + {__LINE__, -2.841077022753766e-09, "-3E-09", "%0.1G"}, + {__LINE__, -2.845307294930682e+00, "-2.845307e+00", "%+1e"}, + {__LINE__, -2.847420163874243e+19, "-2.8e+19", "%1.2g"}, + {__LINE__, -2.848133715109881e-25, "-2.848134E-25", "%E"}, + {__LINE__, -2.850208101288058e-06, "-2.8502E-06", "%+5.4E"}, + {__LINE__, -2.853666525870413e+04, "-28536.665259", "%f"}, + {__LINE__, -2.855661543202034e+21, "-2.85566e+21", "%g"}, + {__LINE__, -2.859528889324159e-08, "-2.859529e-08", "%3e"}, + {__LINE__, -2.860545310690251e+29, "-3e+29", "%.1g"}, + {__LINE__, -2.863576633666884e-14, "-2.863577e-14", "%+5e"}, + {__LINE__, -2.864115740396321e-14, "-2.86412e-14", "%g"}, + {__LINE__, -2.864481979037153e+20, "-2.86E+20", "%3.3G"}, + {__LINE__, -2.867582970177984e-18, "-0.000000", "%f"}, + {__LINE__, -2.868237707901564e+25, "-3E+25", "%6.E"}, + {__LINE__, -2.871741071402520e+13, "-3e+13", "%.1g"}, + {__LINE__, -2.873724610073364e+18, "-2873724610073364438.278531", "%+#f"}, + {__LINE__, -2.876433859770866e-25, "-2.87643e-25", "%g"}, + {__LINE__, -2.877458587075737e-08, "-2.877E-08", "%+.4G"}, + {__LINE__, -2.883349842927101e+24, "-2.883350E+24", "%2E"}, + {__LINE__, -2.883749925642885e+09, "-2.883750e+09", "%e"}, + {__LINE__, -2.883773835633003e-17, "-0.000000", "%+f"}, + {__LINE__, -2.890389090491409e+24, "-2890389090491409262995148.310438", "%#1f"}, + {__LINE__, -2.900848552225810e-11, "-0.000000", "%+f"}, + {__LINE__, -2.911942123176400e+25, "-29119421231764004431852300", "%0.f"}, + {__LINE__, -2.912904462180751e-18, "-2.9129E-18", "%6G"}, + {__LINE__, -2.917717875075651e+26, "-3e+26", "%0.e"}, + {__LINE__, -2.922293201084093e-26, "-2.922293E-26", "%E"}, + {__LINE__, -2.925070319932451e-30, "-0.000000", "%f"}, + {__LINE__, -2.926558572870874e+15, "-2.926559E+15", "%E"}, + {__LINE__, -2.928781435877896e+26, "-2.928781e+26", "%+e"}, + {__LINE__, -2.930178318110376e+28, "-2.930178E+28", "%E"}, + {__LINE__, -2.930984661925819e+05, "-293098.5", "%.7G"}, + {__LINE__, -2.932762424932762e-08, "-0.000000", "%#f"}, + {__LINE__, -2.933415597492494e+10, "-29334155974.924943", "%+#2f"}, + {__LINE__, -2.933564314850986e+29, "-2.93356E+29", "%7G"}, + {__LINE__, -2.943224907893795e+10, "-2.943225E+10", "%+7E"}, + {__LINE__, -2.945311540471221e+19, "-2.94531E+19", "%#G"}, + {__LINE__, -2.945812356522847e+15, "-2.94581e+15", "%+g"}, + {__LINE__, -2.945836999630957e+00, "-2.945837E+00", "%E"}, + {__LINE__, -2.947798782726622e-01, "-0.29478", "%+g"}, + {__LINE__, -2.948958405827917e+18, "-2.94896e+18", "%g"}, + {__LINE__, -2.949790871798059e-11, "-2.94979E-11", "%G"}, + {__LINE__, -2.950347806125225e-12, "-2.95035e-12", "%g"}, + {__LINE__, -2.952781884599368e-29, "-2.952782E-29", "%+E"}, + {__LINE__, -2.956801341442716e+06, "-2.9568E+06", "%G"}, + {__LINE__, -2.957469310356540e-07, "-0.000", "%1.3f"}, + {__LINE__, -2.960464869534870e-23, "-2.96046E-23", "%G"}, + {__LINE__, -2.962339381825446e-07, "-0", "%1.f"}, + {__LINE__, -2.971013180028710e+22, "-2.971e+22", "%3.5g"}, + {__LINE__, -2.975167862441254e+07, "-2.97517e+07", "%g"}, + {__LINE__, -2.976018424339993e+16, "-2.976018e+16", "%3e"}, + {__LINE__, -2.979173094835454e+29, "-2.97917E+29", "%G"}, + {__LINE__, -2.983135249987541e-03, "-0.00298314", "%+G"}, + {__LINE__, -2.985142444917919e-24, "-2.985142E-24", "%+#7E"}, + {__LINE__, -2.988680953635159e-14, "-0.0000000", "%2.7f"}, + {__LINE__, -2.989629778079379e+04, "-29896.297781", "%f"}, + {__LINE__, -2.991274275137276e+19, "-29912742751372762839.423558", "%+4f"}, + {__LINE__, -2.991286396006024e-06, "-2.99129e-06", "%4g"}, + {__LINE__, -2.993310397844811e+04, "-2.993310E+04", "%3.6E"}, + {__LINE__, -2.994669852410861e-29, "-2.99467E-29", "%G"}, + {__LINE__, -2.996082093034831e+27, "-2.996082e+27", "%1e"}, + {__LINE__, -2.999783904575110e+16, "-2.999784E+16", "%#E"}, + {__LINE__, -3.012019221956988e+25, "-3.012019E+25", "%E"}, + {__LINE__, -3.014211917706622e-25, "-0.000000", "%+f"}, + {__LINE__, -3.015149723683428e-19, "-3.01515E-19", "%G"}, + {__LINE__, -3.022158478004638e-19, "-3.02216e-19", "%6g"}, + {__LINE__, -3.022825518373900e-12, "-3.0228E-12", "%+.4E"}, + {__LINE__, -3.025108924057340e-19, "-0.000000", "%f"}, + {__LINE__, -3.026316824631967e+24, "-3026316824631966717618070.106255", "%1f"}, + {__LINE__, -3.033074643529623e-13, "-3.03307e-13", "%g"}, + {__LINE__, -3.035292960731141e+24, "-3035292960731141409524980.190326", "%f"}, + {__LINE__, -3.043291272956732e-13, "-3.04329e-13", "%#g"}, + {__LINE__, -3.045216723973715e-23, "-3.045e-23", "%.4g"}, + {__LINE__, -3.047140976048835e+09, "-3.04714E+09", "%3.5E"}, + {__LINE__, -3.047680278470886e+09, "-3.047680E+09", "%#E"}, + {__LINE__, -3.048465807963461e+05, "-304847", "%g"}, + {__LINE__, -3.050904753556756e+22, "-3.0509E+22", "%G"}, + {__LINE__, -3.052845748999047e-13, "-3.05285e-13", "%g"}, + {__LINE__, -3.053395231883620e-06, "-3E-06", "%2.G"}, + {__LINE__, -3.054894203375445e-28, "-3e-28", "%2.g"}, + {__LINE__, -3.055080347760755e-13, "-0", "%2.f"}, + {__LINE__, -3.055513037393624e-29, "-3e-29", "%3.g"}, + {__LINE__, -3.056198778208295e-06, "-3.0562e-06", "%g"}, + {__LINE__, -3.057813660266980e-21, "-3E-21", "%1.G"}, + {__LINE__, -3.059687036330998e-11, "-3.1E-11", "%#2.2G"}, + {__LINE__, -3.061450385559094e-10, "-3.06145E-10", "%G"}, + {__LINE__, -3.066605713361383e-27, "-0.000000", "%f"}, + {__LINE__, -3.071590110813156e+22, "-3.07159E+22", "%G"}, + {__LINE__, -3.073253864426931e+26, "-3.0733E+26", "%.5G"}, + {__LINE__, -3.078998328596940e+07, "-3.079e+07", "%5.4g"}, + {__LINE__, -3.082733887951920e+06, "-3.082734e+06", "%+6e"}, + {__LINE__, -3.084365358064710e+24, "-3.084365E+24", "%#E"}, + {__LINE__, -3.086948022123716e+25, "-30869480221237162176350921.072299", "%+f"}, + {__LINE__, -3.088200214218024e-10, "-0", "%0.f"}, + {__LINE__, -3.093442983942874e+08, "-309344298.394287", "%f"}, + {__LINE__, -3.103573455403534e-09, "-3.103573E-09", "%#E"}, + {__LINE__, -3.109178443120997e+07, "-31091784.431210", "%f"}, + {__LINE__, -3.111494549914917e+28, "-3e+28", "%0.g"}, + {__LINE__, -3.113384020517480e-17, " -0", "%+6.f"}, + {__LINE__, -3.121622779718055e+14, "-312162277971805.491", "%+.3f"}, + {__LINE__, -3.122780443843900e-01, "-0.312278", "%#g"}, + {__LINE__, -3.122952438335638e-25, "-3.122952E-25", "%E"}, + {__LINE__, -3.128970339463168e-18, "-3e-18", "%3.g"}, + {__LINE__, -3.130862507719335e+10, "-3.130863e+10", "%3e"}, + {__LINE__, -3.145960838955379e+03, "-3145.96", "%g"}, + {__LINE__, -3.149362645138929e+21, "-3.14936e+21", "%g"}, + {__LINE__, -3.150697168664913e+26, "-315069716866491322804222363.629378", "%+f"}, + {__LINE__, -3.157946785041287e+05, "-3.1579e+05", "%.4e"}, + {__LINE__, -3.158347006986809e-02, "-3.E-02", "%#.0E"}, + {__LINE__, -3.159542871923388e+07, "-31595429", "%2.f"}, + {__LINE__, -3.169997512351985e+15, "-3.169998E+15", "%6.7G"}, + {__LINE__, -3.170971776544746e+07, "-31709717.765447", "%f"}, + {__LINE__, -3.173246079104466e+19, "-3.173246E+19", "%1E"}, + {__LINE__, -3.173581228658553e-02, "-0.03", "%+0.G"}, + {__LINE__, -3.187598864929850e-07, "-3.18760E-07", "%#G"}, + {__LINE__, -3.190525302270244e+08, "-3.190525e+08", "%+0.7g"}, + {__LINE__, -3.191879884186422e+19, "-3.19E+19", "%.2E"}, + {__LINE__, -3.197292604744926e+02, "-3.197293e+02", "%+e"}, + {__LINE__, -3.203713337688838e-12, "-3.20371E-12", "%6G"}, + {__LINE__, -3.204416889544914e-18, "-0.000000", "%+f"}, + {__LINE__, -3.204494471917096e+09, "-3.20449e+09", "%g"}, + {__LINE__, -3.211933195516720e+11, "-3.21193E+11", "%G"}, + {__LINE__, -3.214544021431917e-24, "-0.000000", "%1f"}, + {__LINE__, -3.215501229487004e-07, "-3e-07", "%3.e"}, + {__LINE__, -3.232157492322707e-13, "-3.E-13", "%+#5.G"}, + {__LINE__, -3.239074974455177e-05, "-3.239e-05", "%2.4g"}, + {__LINE__, -3.243083730801156e-24, "-3.243084e-24", "%#e"}, + {__LINE__, -3.243128583394124e+07, "-32431285.8339", "%6.4f"}, + {__LINE__, -3.247997999770571e-08, "-3e-08", "%5.e"}, + {__LINE__, -3.258251054563991e-15, "-3.2583E-15", "%.5G"}, + {__LINE__, -3.259499053187446e+07, "-3.2595E+07", "%5.6G"}, + {__LINE__, -3.261907782031174e+20, "-3.3e+20", "%.2g"}, + {__LINE__, -3.263979380855122e+29, "-3.26398E+29", "%G"}, + {__LINE__, -3.264166546402073e+06, "-3.26417E+06", "%5G"}, + {__LINE__, -3.269357648926951e+01, "-3.E+01", "%#5.G"}, + {__LINE__, -3.273523287028019e-30, "-3.27352e-30", "%g"}, + {__LINE__, -3.274464331526264e-14, "-3e-14", "%.0g"}, + {__LINE__, -3.276647049958546e+05, "-327664.7", "%+.1f"}, + {__LINE__, -3.276853612008326e-04, "-3.276854e-04", "%e"}, + {__LINE__, -3.288077788905925e+17, "-3.28808e+17", "%g"}, + {__LINE__, -3.292054327509010e+21, "-3.29205e+21", "%+g"}, + {__LINE__, -3.292086868337041e-16, " -0", "%7.f"}, + {__LINE__, -3.299368070005327e-17, "-3E-17", "%5.G"}, + {__LINE__, -3.307165537474566e-30, "-3e-30", "%+2.g"}, + {__LINE__, -3.310556325973673e-17, "-3.31056E-17", "%G"}, + {__LINE__, -3.315407318453138e-09, "-3.315407e-09", "%+#.6e"}, + {__LINE__, -3.318402800998018e-09, "-3.3184E-09", "%+G"}, + {__LINE__, -3.324277622889107e-04, "-0.000332428", "%G"}, + {__LINE__, -3.326372457131185e+14, "-3.326372e+14", "%0e"}, + {__LINE__, -3.333300611287597e+18, "-3.3E+18", "%4.2G"}, + {__LINE__, -3.333608976277018e-25, "-3.33361e-25", "%g"}, + {__LINE__, -3.333613056182724e-24, "-3.33361e-24", "%.5e"}, + {__LINE__, -3.338505874378410e-26, "-0.00000", "%.5f"}, + {__LINE__, -3.339838772519661e+24, "-3.3398E+24", "%0.5G"}, + {__LINE__, -3.354802735583258e-27, "-3.3548E-27", "%G"}, + {__LINE__, -3.356542080644329e+15, "-3356542080644329.129058", "%#f"}, + {__LINE__, -3.360027692463026e-29, "-3.36003e-29", "%+g"}, + {__LINE__, -3.361845657814323e+06, "-3361845.657814", "%f"}, + {__LINE__, -3.363135493765816e-12, " -0", "%5.f"}, + {__LINE__, -3.367383112102258e+19, "-33673831121022579360.158034", "%f"}, + {__LINE__, -3.376798505037497e+03, "-3376.8", "%+3G"}, + {__LINE__, -3.388170639372559e+09, "-3.388171e+09", "%+e"}, + {__LINE__, -3.397304185715499e-12, "-3.397304e-12", "%+e"}, + {__LINE__, -3.401559374016378e-13, "-3.40156e-13", "%g"}, + {__LINE__, -3.402651870178825e+21, "-3.40265e+21", "%+g"}, + {__LINE__, -3.410491213537530e+12, "-3.41049E+12", "%G"}, + {__LINE__, -3.411695570460075e-01, "-3.411696e-01", "%e"}, + {__LINE__, -3.417311435719220e+29, "-3.4E+29", "%3.1E"}, + {__LINE__, -3.417581063208165e-23, " -0", "%+4.f"}, + {__LINE__, -3.424005615113663e-28, "-0.000000", "%f"}, + {__LINE__, -3.424793585094130e-12, "-0.000000", "%f"}, + {__LINE__, -3.434733077762304e-05, "-3.43473e-05", "%g"}, + {__LINE__, -3.436384988494743e+08, "-3.43638E+08", "%G"}, + {__LINE__, -3.441082995163884e-21, "-0.000000", "%f"}, + {__LINE__, -3.442868661576827e-23, "-3.442869e-23", "%#.7g"}, + {__LINE__, -3.444337521046186e+13, "-3.44434E+13", "%#G"}, + {__LINE__, -3.448230173418967e-28, "-3.44823E-28", "%#G"}, + {__LINE__, -3.448523828225326e-21, "-3.4485e-21", "%.4e"}, + {__LINE__, -3.449876796754720e-07, "-3.44988e-07", "%g"}, + {__LINE__, -3.450163790411588e+25, "-34501637904115876054333966.749255", "%2f"}, + {__LINE__, -3.450224454406567e-26, "-3.450224E-26", "%#1E"}, + {__LINE__, -3.459930768422874e-28, "-3.46E-28", "%2.3G"}, + {__LINE__, -3.460730505022601e-28, "-3.46073e-28", "%#g"}, + {__LINE__, -3.462894265593946e-10, "-3.46289e-10", "%+#g"}, + {__LINE__, -3.464808359229496e+05, "-346481", "%6.6G"}, + {__LINE__, -3.467272303652620e-03, "-0.00346727", "%g"}, + {__LINE__, -3.468252706910251e+10, "-3.5E+10", "%#7.2G"}, + {__LINE__, -3.473623965680253e+27, "-3.47362e+27", "%g"}, + {__LINE__, -3.474527926009729e+11, "-3.475E+11", "%.4G"}, + {__LINE__, -3.476489048299929e+15, "-3.47649e+15", "%g"}, + {__LINE__, -3.477809698895344e-09, "-0.000", "%+.3f"}, + {__LINE__, -3.493008398637667e-28, " -0", "%+4.f"}, + {__LINE__, -3.497441286691613e+07, "-3.49744e+07", "%g"}, + {__LINE__, -3.500904660533358e+00, "-3.500905E+00", "%+1E"}, + {__LINE__, -3.504996054364915e+25, "-3.505e+25", "%+g"}, + {__LINE__, -3.507738629125434e-24, "-0.00", "%+4.2f"}, + {__LINE__, -3.508557770253211e-04, "-3.508558e-04", "%#6e"}, + {__LINE__, -3.516056824437550e+20, "-3.516057e+20", "%#e"}, + {__LINE__, -3.521102917733367e+02, "-352.11", "%g"}, + {__LINE__, -3.523948985825251e+10, "-3.52395e+10", "%+g"}, + {__LINE__, -3.525281835697895e-15, "-3.525282e-15", "%e"}, + {__LINE__, -3.534088845494570e-26, "-0.000000", "%2f"}, + {__LINE__, -3.541002442741569e+01, "-35.410", "%3.3f"}, + {__LINE__, -3.541126630345017e-19, "-3.541127e-19", "%e"}, + {__LINE__, -3.545277845967514e-17, "-0.000000", "%f"}, + {__LINE__, -3.560935430637329e-12, "-3.56094E-12", "%G"}, + {__LINE__, -3.564234584447659e-23, "-3.56423E-23", "%G"}, + {__LINE__, -3.576040378379921e-11, "-0.000000", "%+6f"}, + {__LINE__, -3.578133580350674e-05, "-3.578134e-05", "%#e"}, + {__LINE__, -3.584484015191491e-28, "-0.0", "%+2.1f"}, + {__LINE__, -3.591961845146752e+27, "-3.59196E+27", "%G"}, + {__LINE__, -3.602508380305001e+26, "-3.60251e+26", "%g"}, + {__LINE__, -3.603113449808132e+04, "-36031.134498", "%+3.6f"}, + {__LINE__, -3.605569849504628e+25, "-4E+25", "%6.G"}, + {__LINE__, -3.611297754851416e+05, "-361129.775485", "%+f"}, + {__LINE__, -3.613177909959201e-28, "-0.000000", "%f"}, + {__LINE__, -3.616261225230595e-01, "-0.361626", "%3g"}, + {__LINE__, -3.619203521536307e+09, "-3.6192E+09", "%G"}, + {__LINE__, -3.619316709131723e-27, "-0.0000000", "%.7f"}, + {__LINE__, -3.623100583082346e+28, "-3.6231E+28", "%+G"}, + {__LINE__, -3.626582653589919e+21, "-3626582653589918603387.332041", "%f"}, + {__LINE__, -3.626667540343067e-30, "-4.E-30", "%#.0G"}, + {__LINE__, -3.633539220625861e-30, "-3.634E-30", "%+.3E"}, + {__LINE__, -3.641655782149502e-11, "-3.64166E-11", "%G"}, + {__LINE__, -3.644523594046571e+25, "-3.64452e+25", "%5g"}, + {__LINE__, -3.645977605394108e+25, "-3.646e+25", "%+0.3e"}, + {__LINE__, -3.647864582248812e+13, "-4E+13", "%4.G"}, + {__LINE__, -3.655241667633056e-25, "-3.655242E-25", "%E"}, + {__LINE__, -3.662603655433297e+23, "-3.662604e+23", "%e"}, + {__LINE__, -3.668995445134158e+22, " -4E+22", "%7.G"}, + {__LINE__, -3.670006666569412e-11, "-3.670007e-11", "%e"}, + {__LINE__, -3.670510381138509e-24, "-3.670510e-24", "%e"}, + {__LINE__, -3.671283003268254e-20, "-3.67128E-20", "%G"}, + {__LINE__, -3.687760201176777e-13, "-3.68776E-13", "%G"}, + {__LINE__, -3.687983982100676e-14, "-0.00", "%.2f"}, + {__LINE__, -3.694808382827435e-12, "-3.694808E-12", "%#E"}, + {__LINE__, -3.696158520838821e+28, "-3.69616E+28", "%3G"}, + {__LINE__, -3.700911860811323e+18, "-3.70091e+18", "%+g"}, + {__LINE__, -3.701328314738669e+24, "-3.70133e+24", "%g"}, + {__LINE__, -3.707068461822151e-19, "-3.707068E-19", "%E"}, + {__LINE__, -3.710679411506914e+25, "-3.71068e+25", "%g"}, + {__LINE__, -3.713003840923896e-23, "-3.713e-23", "%7g"}, + {__LINE__, -3.717028397747828e-28, "-3.71703e-28", "%g"}, + {__LINE__, -3.728159642236442e+14, "-3.72816E+14", "%G"}, + {__LINE__, -3.731956233637010e+21, "-3.73196E+21", "%G"}, + {__LINE__, -3.742336623322610e+07, "-3.74234e+07", "%g"}, + {__LINE__, -3.748328269630045e+04, "-37483.3", "%G"}, + {__LINE__, -3.750803081283569e-27, "-3.7508E-27", "%+7G"}, + {__LINE__, -3.752021500826652e-04, "-0.0004", "%.1G"}, + {__LINE__, -3.755942257004103e-12, "-3.75594E-12", "%G"}, + {__LINE__, -3.765921235889045e+03, " -4e+03", "%+7.g"}, + {__LINE__, -3.772453135667801e-28, "-3.77245E-28", "%G"}, + {__LINE__, -3.776384200230367e+27, "-3.776e+27", "%1.4g"}, + {__LINE__, -3.787035870684945e-25, "-4E-25", "%+3.G"}, + {__LINE__, -3.798616350818839e-29, "-3.7986164e-29", "%.7e"}, + {__LINE__, -3.807178315238428e-15, "-0.000000", "%+#6f"}, + {__LINE__, -3.822059837967635e+18, "-3822059837967634621.236357", "%6.6f"}, + {__LINE__, -3.823553096022006e+12, "-3.82355e+12", "%g"}, + {__LINE__, -3.839198115259428e-23, "-0.000000", "%f"}, + {__LINE__, -3.846953640321746e+02, "-3.846954E+02", "%E"}, + {__LINE__, -3.852230696542361e+08, "-3.8522e+08", "%#.5g"}, + {__LINE__, -3.861139362195314e-25, "-3.86114E-25", "%2G"}, + {__LINE__, -3.873388618099769e+09, "-3873388618", "%0.0f"}, + {__LINE__, -3.874161550543817e+15, "-3.874162e+15", "%+e"}, + {__LINE__, -3.874527935469425e+20, "-3.87E+20", "%3.3G"}, + {__LINE__, -3.878069577893697e-30, "-3.878070E-30", "%#E"}, + {__LINE__, -3.878852490397702e-20, "-3.87885e-20", "%g"}, + {__LINE__, -3.879688342272101e-10, "-0.00", "%#4.2f"}, + {__LINE__, -3.879797428399897e+03, "-3880", "%1.4g"}, + {__LINE__, -3.881588804766756e+00, "-3.9", "%+4.2G"}, + {__LINE__, -3.889377318111182e+01, "-38.8938", "%+.4f"}, + {__LINE__, -3.893444523430385e-03, "-0.004", "%+2.g"}, + {__LINE__, -3.894912141515856e+03, "-3894.91", "%+g"}, + {__LINE__, -3.905279115773667e+04, "-39052.791158", "%f"}, + {__LINE__, -3.905333955484919e-20, "-3.90533E-20", "%G"}, + {__LINE__, -3.906559442060730e+27, "-3906559442060730447110472596.250474", "%f"}, + {__LINE__, -3.909396469655334e-26, "-3.91E-26", "%.3G"}, + {__LINE__, -3.920132491092364e+11, "-3.92013e+11", "%g"}, + {__LINE__, -3.935651497471973e+27, "-3935651497471972604103029880", "%5.f"}, + {__LINE__, -3.939742577853889e-03, "-0.004", "%5.G"}, + {__LINE__, -3.943284017088198e+19, "-39432840170881981123.3", "%.1f"}, + {__LINE__, -3.947452186327660e+09, "-3947452186.33", "%0.2f"}, + {__LINE__, -3.951967237553488e+18, "-3951967237553488132.562052", "%f"}, + {__LINE__, -3.953673427359789e-28, "-3.954E-28", "%3.4G"}, + {__LINE__, -3.956044867371602e+23, "-4e+23", "%+6.1g"}, + {__LINE__, -3.965038994251913e-20, "-3.96504e-20", "%g"}, + {__LINE__, -3.970527677577937e+05, "-4.e+05", "%#0.1g"}, + {__LINE__, -3.970717822164395e-20, "-3.970718e-20", "%6e"}, + {__LINE__, -3.978063834438912e-19, "-3.97806E-19", "%G"}, + {__LINE__, -3.982705395472599e+27, "-3.9827e+27", "%#.5g"}, + {__LINE__, -3.983486821352571e-28, "-3.98349e-28", "%g"}, + {__LINE__, -3.985470630230926e-14, "-4e-14", "%.2g"}, + {__LINE__, -3.993095662863953e-16, "-3.993096e-16", "%e"}, + {__LINE__, -4.006984141314271e-22, " -4e-22", "%7.2g"}, + {__LINE__, -4.006984141314271e-22, "-4.0e-22", "%#7.2g"}, + {__LINE__, -4.013226099863981e+06, "-4.013226E+06", "%+E"}, + {__LINE__, -4.013702226581167e+00, "-4.0137022", "%+#3.7f"}, + {__LINE__, -4.017598274642537e+11, "-4E+11", "%5.G"}, + {__LINE__, -4.021385792825529e-09, " -4e-09", "%7.2g"}, + {__LINE__, -4.024099064819937e-20, "-4.0241E-20", "%+G"}, + {__LINE__, -4.026952473441366e+22, "-4.026952e+22", "%6.7g"}, + {__LINE__, -4.027636677087866e+12, "-4.02764E+12", "%G"}, + {__LINE__, -4.036506013049443e+17, "-4.03651e+17", "%0.6g"}, + {__LINE__, -4.063191953523012e-06, " -0.0", "%6.1f"}, + {__LINE__, -4.070953223475192e-23, "-4.07095E-23", "%G"}, + {__LINE__, -4.072425833070524e+09, "-4.072426E+09", "%E"}, + {__LINE__, -4.086025576759603e+12, "-4.086026e+12", "%e"}, + {__LINE__, -4.086627783296081e-24, "-4.087E-24", "%.3E"}, + {__LINE__, -4.086683676772144e+10, "-40866836767.721439", "%f"}, + {__LINE__, -4.087336043219081e-10, "-0.", "%+#0.f"}, + {__LINE__, -4.125162973336809e-26, "-4.125163E-26", "%.7G"}, + {__LINE__, -4.150753797717075e-10, "-4.2e-10", "%.2g"}, + {__LINE__, -4.152126152181912e+23, "-4.15213e+23", "%g"}, + {__LINE__, -4.164458223079432e-07, "-4.164458E-07", "%E"}, + {__LINE__, -4.170624866130099e+03, "-4170.624866", "%4.6f"}, + {__LINE__, -4.171137277374942e-01, " -4E-01", "%+7.E"}, + {__LINE__, -4.176067421901769e-25, "-4.17607E-25", "%G"}, + {__LINE__, -4.179514418604771e+24, "-4.1795e+24", "%3.5g"}, + {__LINE__, -4.196285183415621e+23, "-4.19629E+23", "%5G"}, + {__LINE__, -4.198600486581023e+23, "-4E+23", "%+4.G"}, + {__LINE__, -4.199020494598538e-16, "-0.000000", "%+f"}, + {__LINE__, -4.207824153501688e-01, "-0.420782", "%G"}, + {__LINE__, -4.219086441294006e-13, " -0", "%+4.f"}, + {__LINE__, -4.223689582765525e+12, "-4.22369e+12", "%g"}, + {__LINE__, -4.230213377391093e+04, "-42302.1", "%+2.6G"}, + {__LINE__, -4.232495358100605e-02, "-0.042325", "%+f"}, + {__LINE__, -4.235459662515940e-29, "-0.000000", "%f"}, + {__LINE__, -4.240807508057296e-07, "-4e-07", "%0.g"}, + {__LINE__, -4.248376819122346e-13, "-4.248377e-13", "%7e"}, + {__LINE__, -4.251361939638334e-23, "-4.251362E-23", "%E"}, + {__LINE__, -4.253044333568077e+24, "-4.253044e+24", "%4e"}, + {__LINE__, -4.255728039119772e-30, "-4.25573E-30", "%2G"}, + {__LINE__, -4.256502531648988e+02, "-425.65", "%G"}, + {__LINE__, -4.260731632612400e-04, "-0", "%2.f"}, + {__LINE__, -4.262037138254753e-25, "-4e-25", "%5.g"}, + {__LINE__, -4.270910126379393e+00, "-4.2709", "%#7.4f"}, + {__LINE__, -4.273844276097008e-09, " -0.", "%#4.f"}, + {__LINE__, -4.280424136111831e+21, "-4.280E+21", "%.3E"}, + {__LINE__, -4.284351940366486e-23, "-0.000000", "%+f"}, + {__LINE__, -4.291747881693517e-29, "-4.3e-29", "%+#.2g"}, + {__LINE__, -4.298346825232928e+04, "-42983.5", "%G"}, + {__LINE__, -4.298879924365432e+28, "-42988799243654316484253286034.800112", "%f"}, + {__LINE__, -4.302192665689887e-25, "-0.000000", "%f"}, + {__LINE__, -4.303899568112784e+06, "-4E+06", "%1.G"}, + {__LINE__, -4.307399960278190e-30, "-4.31e-30", "%.3g"}, + {__LINE__, -4.341161949359232e+01, "-43.411619", "%+f"}, + {__LINE__, -4.353334435604675e+17, " -4e+17", "%+7.g"}, + {__LINE__, -4.354760231068195e+08, "-4e+08", "%2.e"}, + {__LINE__, -4.363535913318519e+08, "-4.363536E+08", "%+7E"}, + {__LINE__, -4.365389605557404e-29, "-4.365390e-29", "%e"}, + {__LINE__, -4.369278570829168e-22, "-4.369279E-22", "%5E"}, + {__LINE__, -4.372187639240662e-11, "-4.37219e-11", "%+g"}, + {__LINE__, -4.374221079233858e-15, "-4.37422E-15", "%4.6G"}, + {__LINE__, -4.374840292001664e-13, "-0.000000", "%+f"}, + {__LINE__, -4.376554800103945e+16, "-43765548001039453.751559", "%f"}, + {__LINE__, -4.376659235899513e+07, "-4.4E+07", "%0.2G"}, + {__LINE__, -4.377316129868239e-06, "-4.37732E-06", "%+5G"}, + {__LINE__, -4.380028480226885e+21, "-4e+21", "%1.0e"}, + {__LINE__, -4.380434965450223e+16, "-43804349654502230.393405", "%f"}, + {__LINE__, -4.392477080355168e-15, "-4E-15", "%+2.G"}, + {__LINE__, -4.396120020536161e+17, "-439612002053616102.159594", "%#f"}, + {__LINE__, -4.400993154571784e+13, "-44009931545717.844159", "%f"}, + {__LINE__, -4.402873692051930e-26, "-4.4e-26", "%5.3g"}, + {__LINE__, -4.405330274903779e+24, "-4405330274903779042006135.568954", "%+5f"}, + {__LINE__, -4.406272291312090e+06, "-4.40627e+06", "%+g"}, + {__LINE__, -4.407065949816988e-13, "-0.000000", "%f"}, + {__LINE__, -4.408295597674563e-10, "-4.4083e-10", "%g"}, + {__LINE__, -4.417553815178214e-30, "-4.41755E-30", "%G"}, + {__LINE__, -4.428894120469459e+16, "-4.42889e+16", "%g"}, + {__LINE__, -4.433747825142046e+04, "-4.433748e+04", "%#e"}, + {__LINE__, -4.435051082856639e+11, "-4.43505E+11", "%G"}, + {__LINE__, -4.445045573007259e-27, "-4.445e-27", "%.5g"}, + {__LINE__, -4.447791368960968e-25, " -4e-25", "%+7.g"}, + {__LINE__, -4.449691386526521e-11, "-4.44969e-11", "%g"}, + {__LINE__, -4.451399093849402e+06, "-4.e+06", "%#0.e"}, + {__LINE__, -4.453753130320864e-22, "-4E-22", "%6.E"}, + {__LINE__, -4.455910780463539e+00, "-4", "%2.g"}, + {__LINE__, -4.464935674747308e+25, "-4.46494e+25", "%g"}, + {__LINE__, -4.469759565657550e-29, "-4.46976e-29", "%g"}, + {__LINE__, -4.473254139442931e+14, "-4E+14", "%3.1G"}, + {__LINE__, -4.480844704930373e-04, "-0.000448", "%5.6f"}, + {__LINE__, -4.484177356024563e+19, "-4.484177E+19", "%E"}, + {__LINE__, -4.488115678357666e-13, "-4.48812e-13", "%g"}, + {__LINE__, -4.491545112281561e+12, "-4.491545E+12", "%E"}, + {__LINE__, -4.492547433553077e-23, "-4.49255e-23", "%g"}, + {__LINE__, -4.492701755830813e-05, "-0.000045", "%f"}, + {__LINE__, -4.497405935096372e-02, "-4.497406e-02", "%e"}, + {__LINE__, -4.502764260212887e+21, "-4.50276E+21", "%G"}, + {__LINE__, -4.511984199938207e+29, "-451198419993820731832556703011.505306", "%f"}, + {__LINE__, -4.514517861504637e-13, "-4.51452e-13", "%g"}, + {__LINE__, -4.525577218881990e+24, "-4.5e+24", "%2.2g"}, + {__LINE__, -4.549244580903896e-26, "-5E-26", "%2.G"}, + {__LINE__, -4.569192488002113e-29, "-5E-29", "%3.G"}, + {__LINE__, -4.572011438847734e+17, "-4.57e+17", "%#.3g"}, + {__LINE__, -4.573010973514519e-08, "-4.57301e-08", "%+7g"}, + {__LINE__, -4.584534976177852e-04, "-0.000458453", "%7g"}, + {__LINE__, -4.584729895132228e-21, "-0.000000", "%4f"}, + {__LINE__, -4.585259328217483e-30, "-4.58526E-30", "%+#4.6G"}, + {__LINE__, -4.589603063610410e-04, "-4.589603E-04", "%+E"}, + {__LINE__, -4.592428795671033e+22, " -5e+22", "%7.g"}, + {__LINE__, -4.595683678223830e-20, " -0", "%5.f"}, + {__LINE__, -4.602585606100101e+05, "-4.602586E+05", "%E"}, + {__LINE__, -4.603375306660027e-08, "-5E-08", "%+6.G"}, + {__LINE__, -4.611341343728034e-18, "-4.611341e-18", "%5e"}, + {__LINE__, -4.613608487855863e+05, "-461361", "%6g"}, + {__LINE__, -4.615997775774194e-24, "-4.61600e-24", "%#g"}, + {__LINE__, -4.620310950564759e+23, "-462031095056475926696749", "%1.0f"}, + {__LINE__, -4.620645693595563e-10, "-4.6206457e-10", "%.7e"}, + {__LINE__, -4.621527706233292e-09, "-4.621528e-09", "%#e"}, + {__LINE__, -4.625215210297273e-13, "-4.62522E-13", "%G"}, + {__LINE__, -4.636755152220100e-29, "-0.000000", "%#f"}, + {__LINE__, -4.641203877508087e+23, "-4.6412e+23", "%0g"}, + {__LINE__, -4.648627249239175e+23, "-4.65E+23", "%+0.3G"}, + {__LINE__, -4.662546890623409e-10, "-4.663E-10", "%.3E"}, + {__LINE__, -4.664488650292317e-27, "-4.66449e-27", "%#g"}, + {__LINE__, -4.668715685060282e+08, "-466871568.50603", "%.5f"}, + {__LINE__, -4.673332851657081e-18, "-4.7e-18", "%#5.2g"}, + {__LINE__, -4.683361436174074e+24, "-4.68e+24", "%#.2e"}, + {__LINE__, -4.693748680461066e-01, "-0.469375", "%G"}, + {__LINE__, -4.697110010549124e+23, "-4.69711E+23", "%G"}, + {__LINE__, -4.710442739966989e+06, "-4.710443e+06", "%2e"}, + {__LINE__, -4.713427678642280e-09, "-4.71343e-09", "%g"}, + {__LINE__, -4.721999055940316e-04, "-4.721999e-04", "%#1e"}, + {__LINE__, -4.724262200578540e+17, "-472426220057853996.081576", "%+f"}, + {__LINE__, -4.733267644288093e+01, "-4.733268e+01", "%7e"}, + {__LINE__, -4.742854711396110e-11, "-0.000000", "%f"}, + {__LINE__, -4.757456106385936e+23, "-4.75746e+23", "%g"}, + {__LINE__, -4.770895495642298e+27, "-4770895495642298200777986494.358629", "%2f"}, + {__LINE__, -4.775073456318149e+29, "-4.775073E+29", "%#E"}, + {__LINE__, -4.779997387204258e+17, "-4.78e+17", "%g"}, + {__LINE__, -4.799264315770707e-23, "-4.799264E-23", "%+.7G"}, + {__LINE__, -4.814277930599660e+10, "-5e+10", "%2.1g"}, + {__LINE__, -4.818413387018612e+05, "-5e+05", "%.0g"}, + {__LINE__, -4.818827195107612e-16, "-4.818827e-16", "%e"}, + {__LINE__, -4.841524514024803e+21, "-4.84152E+21", "%G"}, + {__LINE__, -4.860585077313477e+10, "-4.86059E+10", "%+G"}, + {__LINE__, -4.870037451948589e+28, "-48700374519485887248038125107.996166", "%f"}, + {__LINE__, -4.888835952705153e-28, "-4.888836E-28", "%+E"}, + {__LINE__, -4.893523355754114e-19, "-4.893523e-19", "%.6e"}, + {__LINE__, -4.906070260482585e+17, "-490607026048258454", "%+.0f"}, + {__LINE__, -4.907734144101900e+25, "-5E+25", "%+.1G"}, + {__LINE__, -4.917899547741841e-25, "-4.917900e-25", "%e"}, + {__LINE__, -4.923348512538722e+25, "-49233485125387215219916470.232420", "%+.6f"}, + {__LINE__, -4.926052630078460e-26, "-4.926053e-26", "%e"}, + {__LINE__, -4.926751662051156e+14, "-4.927E+14", "%+5.3E"}, + {__LINE__, -4.928017952199046e-12, "-0.000000", "%f"}, + {__LINE__, -4.944296782981195e-21, "-4.9443E-21", "%1.5G"}, + {__LINE__, -4.947320427183599e-19, "-4.947320e-19", "%.6e"}, + {__LINE__, -4.968188938972135e+17, "-4.96819E+17", "%G"}, + {__LINE__, -4.968756725758674e+05, "-496876", "%G"}, + {__LINE__, -4.968788759793340e-26, "-4.97E-26", "%.3G"}, + {__LINE__, -4.983904999913364e-24, "-5E-24", "%0.G"}, + {__LINE__, -4.985209496522767e+23, "-4.985209e+23", "%e"}, + {__LINE__, -4.987363880732866e+08, "-4.98736E+08", "%G"}, + {__LINE__, -4.989754940144973e+05, "-498975.494014", "%f"}, + {__LINE__, -4.998203870733718e-25, "-4.9982e-25", "%g"}, + {__LINE__, -4.999153445016792e-27, "-5e-27", "%+1.e"}, + {__LINE__, -5.002693488258108e+06, " -5e+06", "%+7.g"}, + {__LINE__, -5.017958458603783e+05, "-5.0179585E+05", "%+.7E"}, + {__LINE__, -5.028902178573363e-12, "-5.0289e-12", "%0g"}, + {__LINE__, -5.032337536971444e+07, "-50323375.369714", "%f"}, + {__LINE__, -5.036525516370473e-24, "-5.0365e-24", "%4.5g"}, + {__LINE__, -5.038642321515756e+18, "-5038642321515755639.893541", "%f"}, + {__LINE__, -5.051003516976770e-14, "-5.051E-14", "%+G"}, + {__LINE__, -5.051196143816789e+27, "-5.0512e+27", "%g"}, + {__LINE__, -5.057372886713786e+28, "-5.057373e+28", "%#e"}, + {__LINE__, -5.057475029459727e+12, "-5.05748e+12", "%+g"}, + {__LINE__, -5.068286816124670e-17, "-5.068E-17", "%5.3E"}, + {__LINE__, -5.070475165759468e-12, "-0.000000", "%4.6f"}, + {__LINE__, -5.081352543220476e+20, "-5.081E+20", "%.3E"}, + {__LINE__, -5.084398319179363e+11, "-508439831917.936313", "%#f"}, + {__LINE__, -5.085781220648484e+05, "-5.E+05", "%+#7.G"}, + {__LINE__, -5.094941054632498e-24, "-5.09494E-24", "%+G"}, + {__LINE__, -5.100059596310871e-10, "-5.10006e-10", "%3.6g"}, + {__LINE__, -5.103072553594136e-01, "-0.5", "%+1.g"}, + {__LINE__, -5.106319890388412e+08, "-5.106320e+08", "%4e"}, + {__LINE__, -5.107120687977690e+09, "-5107120687.977690", "%f"}, + {__LINE__, -5.119910716893161e-13, "-5.11991E-13", "%6G"}, + {__LINE__, -5.127594569425709e-29, "-5.12759e-29", "%#g"}, + {__LINE__, -5.130365585632797e+29, "-5.13037e+29", "%#g"}, + {__LINE__, -5.131415638022112e+08, "-513141563.802211", "%0f"}, + {__LINE__, -5.144703216335916e-23, "-5.1447e-23", "%g"}, + {__LINE__, -5.152511923201882e-05, "-5.15251E-05", "%+G"}, + {__LINE__, -5.165484448280190e-12, " -0.0", "%5.1f"}, + {__LINE__, -5.179220760465737e-20, "-5e-20", "%+5.g"}, + {__LINE__, -5.183005119662180e-10, "-5.183005E-10", "%+E"}, + {__LINE__, -5.199587953258117e+13, "-5.19959e+13", "%6g"}, + {__LINE__, -5.202041951844580e-25, "-0.000000", "%f"}, + {__LINE__, -5.202836038621740e+00, "-5.20284", "%G"}, + {__LINE__, -5.212204099528552e-11, "-5.2122e-11", "%.6g"}, + {__LINE__, -5.225617726710534e+17, "-522561772671053414.995868", "%+f"}, + {__LINE__, -5.230162003281426e+25, "-52301620032814257754694153.84578", "%+6.5f"}, + {__LINE__, -5.251849429321286e-11, "-5.25185e-11", "%g"}, + {__LINE__, -5.265174939930368e+23, "-5.265175E+23", "%1.6E"}, + {__LINE__, -5.271218134351422e+21, "-5.27122e+21", "%+1g"}, + {__LINE__, -5.273823357545750e+17, "-527382335754575048.980541", "%f"}, + {__LINE__, -5.279848797214957e+11, "-527984879721.495659", "%0f"}, + {__LINE__, -5.281551888625290e+11, "-5e+11", "%4.g"}, + {__LINE__, -5.281780377142961e-24, "-5.28178e-24", "%g"}, + {__LINE__, -5.292125782379512e+03, "-5292.125782", "%f"}, + {__LINE__, -5.292401691410388e+15, "-5292401691410387.520875", "%f"}, + {__LINE__, -5.305120752102265e-25, "-5.30512e-25", "%+#.5e"}, + {__LINE__, -5.317975791704413e+16, "-5.31798e+16", "%+g"}, + {__LINE__, -5.336522843607233e+27, "-5.33652e+27", "%#6g"}, + {__LINE__, -5.342016438000917e-05, " -5e-05", "%+7.e"}, + {__LINE__, -5.351122291549103e+06, "-5351122.291549", "%+0f"}, + {__LINE__, -5.352043956303597e+00, "-5.35204", "%g"}, + {__LINE__, -5.353582488767747e+09, "-5.354E+09", "%7.3E"}, + {__LINE__, -5.383420177718380e+04, "-5e+04", "%1.e"}, + {__LINE__, -5.384320189791882e-10, "-5.384320e-10", "%e"}, + {__LINE__, -5.409487543257379e-12, "-5.40949E-12", "%G"}, + {__LINE__, -5.418395794776773e+23, "-5.4184e+23", "%g"}, + {__LINE__, -5.419918795921525e-09, "-0.000000", "%+f"}, + {__LINE__, -5.422374157832442e+11, "-5.42237e+11", "%3g"}, + {__LINE__, -5.426916951577001e-27, "-5.42692E-27", "%+G"}, + {__LINE__, -5.430058833461779e+28, "-5.43006E+28", "%G"}, + {__LINE__, -5.444433348653147e+23, "-5.444433E+23", "%E"}, + {__LINE__, -5.446560186537024e+09, "-5.446560E+09", "%E"}, + {__LINE__, -5.464243500152188e+27, "-5.46424E+27", "%G"}, + {__LINE__, -5.464427517531742e+20, "-546442751753174249529.365625", "%f"}, + {__LINE__, -5.465783705970954e+05, "-5E+05", "%1.E"}, + {__LINE__, -5.475138077475789e-11, "-5e-11", "%.0e"}, + {__LINE__, -5.475302250616576e+10, "-54753022506.1658", "%.4f"}, + {__LINE__, -5.488964905442472e+09, "-5.48896e+09", "%g"}, + {__LINE__, -5.492508526846316e-08, "-5.49251e-08", "%.6g"}, + {__LINE__, -5.520533408804846e-15, "-5.520533e-15", "%e"}, + {__LINE__, -5.532744688447266e+28, "-55327446884472664123677532188.594341", "%2.6f"}, + {__LINE__, -5.535834653450131e-14, "-5.5e-14", "%0.1e"}, + {__LINE__, -5.554344735392882e-02, "-5.554345E-02", "%+#E"}, + {__LINE__, -5.555497334515501e-17, "-5.5555e-17", "%g"}, + {__LINE__, -5.558304303221977e+14, "-555830430322197.699411", "%f"}, + {__LINE__, -5.562210815777694e-05, "-5.562211E-05", "%#1E"}, + {__LINE__, -5.564800722538402e-09, "-5.56480e-09", "%#.6g"}, + {__LINE__, -5.567143271590439e-01, "-5.567143e-01", "%#e"}, + {__LINE__, -5.568606044396186e+01, "-55.6861", "%4g"}, + {__LINE__, -5.592027856401721e+12, "-5.592028e+12", "%.7g"}, + {__LINE__, -5.592295342565443e+22, "-6.E+22", "%#3.G"}, + {__LINE__, -5.600007421926053e+07, "-56000074.219261", "%1f"}, + {__LINE__, -5.601444553155006e-12, "-5.60144E-12", "%G"}, + {__LINE__, -5.605128912835080e-03, "-0.005605", "%+f"}, + {__LINE__, -5.610950285679577e+19, "-5.61095E+19", "%G"}, + {__LINE__, -5.622074657679467e+11, "-562207465767.946690", "%f"}, + {__LINE__, -5.627358352391656e-01, "-0.6", "%1.g"}, + {__LINE__, -5.627974317622488e-02, "-5.627974e-02", "%+e"}, + {__LINE__, -5.629497696447229e+27, "-5.629E+27", "%+.4G"}, + {__LINE__, -5.631383567258576e-29, "-5.63138e-29", "%0g"}, + {__LINE__, -5.635241327177333e-18, "-5.63524E-18", "%G"}, + {__LINE__, -5.644819783138381e+06, "-5.644820E+06", "%#E"}, + {__LINE__, -5.648538459114833e+26, "-564853845911483265496144667.849876", "%+f"}, + {__LINE__, -5.649004865848537e+00, "-5.649", "%g"}, + {__LINE__, -5.653403316885170e+23, "-6E+23", "%2.0E"}, + {__LINE__, -5.656109962244926e-18, "-0.000000", "%f"}, + {__LINE__, -5.674988031695793e+22, "-5.674988E+22", "%+.7G"}, + {__LINE__, -5.686380226400881e-22, "-0.000000", "%f"}, + {__LINE__, -5.698840855829442e-14, "-5.69884E-14", "%G"}, + {__LINE__, -5.707036642649580e+03, "-5707.036643", "%f"}, + {__LINE__, -5.710344882278847e+11, "-5.71034E+11", "%+G"}, + {__LINE__, -5.714852196401017e+19, "-5.71485E+19", "%+G"}, + {__LINE__, -5.720153622156089e-22, "-5.72015E-22", "%G"}, + {__LINE__, -5.722366011976922e+26, "-5.72237e+26", "%+g"}, + {__LINE__, -5.722909928097404e+12, "-5.72291E+12", "%2G"}, + {__LINE__, -5.725325961787777e-25, "-5.72533e-25", "%g"}, + {__LINE__, -5.727138241052646e+19, "-5.72714e+19", "%+#g"}, + {__LINE__, -5.734025840446336e+14, "-5.73403e+14", "%+g"}, + {__LINE__, -5.736469106710259e-05, "-0.000057", "%.6f"}, + {__LINE__, -5.755099153733116e-14, "-5.7551e-14", "%+g"}, + {__LINE__, -5.758411844890947e-20, "-6E-20", "%+6.G"}, + {__LINE__, -5.760350214122813e+03, "-5760.35", "%+g"}, + {__LINE__, -5.768009192512392e-30, "-0", "%1.f"}, + {__LINE__, -5.772343286693103e+07, "-5.77234E+07", "%G"}, + {__LINE__, -5.776693265471852e-27, "-5.776693E-27", "%E"}, + {__LINE__, -5.779682861172754e-28, "-5.779683e-28", "%e"}, + {__LINE__, -5.789953490749936e+26, "-578995349074993637117358957.76656", "%5.5f"}, + {__LINE__, -5.796771264754334e+04, "-57967.7", "%g"}, + {__LINE__, -5.804788370597286e-02, "-5.80479E-02", "%+#1.5E"}, + {__LINE__, -5.805343475329215e-13, "-5.80534e-13", "%g"}, + {__LINE__, -5.809853913830122e+09, "-5809853914", "%+0.f"}, + {__LINE__, -5.817313814570609e-30, " -0", "%7.0f"}, + {__LINE__, -5.831708441750138e+00, "-5.83171", "%#g"}, + {__LINE__, -5.846914550593652e+29, "-5.846915e+29", "%e"}, + {__LINE__, -5.851455214762288e+04, "-58514.6", "%+G"}, + {__LINE__, -5.855803663871393e-23, "-6E-23", "%5.E"}, + {__LINE__, -5.858065129988470e+10, "-5.85807e+10", "%+g"}, + {__LINE__, -5.863147168075411e-14, "-5.86315e-14", "%+g"}, + {__LINE__, -5.878936740266680e-04, "-0.000587894", "%g"}, + {__LINE__, -5.887654893386630e+25, "-58876548933866299506689756.526612", "%#f"}, + {__LINE__, -5.889416409731902e-02, "-0.06", "%5.g"}, + {__LINE__, -5.897630195029892e-18, "-5.897630E-18", "%#0.7G"}, + {__LINE__, -5.898506808456422e-19, "-5.89851E-19", "%G"}, + {__LINE__, -5.901768645393515e+29, "-5.90177E+29", "%+G"}, + {__LINE__, -5.907529093570369e+10, "-59075290935.703695", "%f"}, + {__LINE__, -5.910069365260240e+13, "-59100693652602.39849", "%+#5.5f"}, + {__LINE__, -5.915678929676435e-07, "-0.000001", "%+f"}, + {__LINE__, -5.922232380131716e-01, "-0.592223", "%+3f"}, + {__LINE__, -5.923716473994306e+19, "-5.92372E+19", "%+#.6G"}, + {__LINE__, -5.929950428920404e-15, "-5.929950e-15", "%+e"}, + {__LINE__, -5.949552735665802e+26, "-5.94955e+26", "%#g"}, + {__LINE__, -5.949977081310732e-02, "-0.059500", "%f"}, + {__LINE__, -5.954520303889356e-07, "-5.954520E-07", "%5E"}, + {__LINE__, -5.978861337429145e-13, "-6E-13", "%1.G"}, + {__LINE__, -5.980539445081087e+15, "-5.98054E+15", "%.6G"}, + {__LINE__, -5.981724990853490e-03, " -0.006", "%#7.g"}, + {__LINE__, -5.989488907825821e+03, "-6E+03", "%.2G"}, + {__LINE__, -5.998272294890842e+06, "-6.00E+06", "%4.2E"}, + {__LINE__, -6.023775731455919e-29, "-6.023776e-29", "%e"}, + {__LINE__, -6.028153126666870e-05, "-6.e-05", "%+#6.e"}, + {__LINE__, -6.036200621484690e+25, "-6e+25", "%2.2g"}, + {__LINE__, -6.036400640928137e-14, "-6.036401e-14", "%e"}, + {__LINE__, -6.038198451098329e-20, "-6.038198e-20", "%1.7g"}, + {__LINE__, -6.045778975641123e-15, "-6.04578E-15", "%G"}, + {__LINE__, -6.046038904252073e+00, "-6.04604", "%g"}, + {__LINE__, -6.082158462782175e-06, "-0.000006", "%+#f"}, + {__LINE__, -6.106162726644904e+10, "-6.10616e+10", "%g"}, + {__LINE__, -6.126345215489182e+10, "-6e+10", "%+1.g"}, + {__LINE__, -6.131852309620571e+02, "-6e+02", "%4.e"}, + {__LINE__, -6.134589313243809e-01, "-0.613459", "%+#f"}, + {__LINE__, -6.142358153783462e-10, "-6.14236E-10", "%4G"}, + {__LINE__, -6.151524334856263e+27, "-6151524334856262932191839354.345575", "%+6f"}, + {__LINE__, -6.156818333724550e+04, "-6.e+04", "%#.1g"}, + {__LINE__, -6.166172551433993e+24, "-6166172551433993120895138.4178", "%5.4f"}, + {__LINE__, -6.169532428006014e-09, "-6.16953e-09", "%3g"}, + {__LINE__, -6.172019382601770e-28, "-0.000000", "%+f"}, + {__LINE__, -6.174496985807155e-09, "-6.1745E-09", "%G"}, + {__LINE__, -6.186771845105751e+04, "-61867.7", "%G"}, + {__LINE__, -6.200817973780066e+22, "-6.20082E+22", "%3G"}, + {__LINE__, -6.218004335456301e-22, "-0.000000", "%+f"}, + {__LINE__, -6.219009630546262e-18, "-6.22e-18", "%6.3g"}, + {__LINE__, -6.242532875230618e-06, "-0.000006", "%7f"}, + {__LINE__, -6.243612261280864e+14, "-6.24361e+14", "%.6g"}, + {__LINE__, -6.243689597320126e+10, "-6e+10", "%.0e"}, + {__LINE__, -6.244620667090527e+04, "-6e+04", "%6.e"}, + {__LINE__, -6.250789625572054e-09, "-0.000000", "%+f"}, + {__LINE__, -6.253537566219164e+01, "-63.", "%#1.f"}, + {__LINE__, -6.284420289484166e+21, "-6.2844203e+21", "%7.7e"}, + {__LINE__, -6.285939888202846e+27, "-6e+27", "%+.0g"}, + {__LINE__, -6.290025777678105e+13, "-6E+13", "%2.E"}, + {__LINE__, -6.291364254323924e+10, "-6.3E+10", "%3.2G"}, + {__LINE__, -6.292428812164449e+15, "-6292428812164448.714839", "%.6f"}, + {__LINE__, -6.292600606358002e+29, "-6.29260E+29", "%#G"}, + {__LINE__, -6.292739629144148e-15, "-6.292740E-15", "%E"}, + {__LINE__, -6.296471626465745e+28, "-6.29647E+28", "%G"}, + {__LINE__, -6.299575066640315e+27, "-6.300E+27", "%.3E"}, + {__LINE__, -6.315234679394876e-24, "-6E-24", "%2.G"}, + {__LINE__, -6.320883246383228e-01, "-0.632088", "%2g"}, + {__LINE__, -6.324938413548937e-11, "-6e-11", "%.1g"}, + {__LINE__, -6.336312983176250e+04, "-6.336313e+04", "%e"}, + {__LINE__, -6.341786787214541e+06, "-6.341787E+06", "%+7.6E"}, + {__LINE__, -6.360189291106185e-15, "-0.0000000", "%#.7f"}, + {__LINE__, -6.364818355457748e-15, "-0.0000000", "%1.7f"}, + {__LINE__, -6.366291103431814e+04, "-63662.9", "%#G"}, + {__LINE__, -6.366334042923153e-05, "-6.37e-05", "%5.3g"}, + {__LINE__, -6.370477455143194e-12, "-0.000000", "%f"}, + {__LINE__, -6.372829256546279e+23, "-6.37283E+23", "%G"}, + {__LINE__, -6.375208490193110e-23, "-6.37521e-23", "%4.5e"}, + {__LINE__, -6.382595100891736e-24, "-6.3826E-24", "%5G"}, + {__LINE__, -6.396882421146790e-22, "-6.39688e-22", "%+g"}, + {__LINE__, -6.407190354039938e+08, "-6.40719e+08", "%+g"}, + {__LINE__, -6.408581541430886e-10, "-6.E-10", "%#0.0G"}, + {__LINE__, -6.409206904981703e-03, "-0.006", "%+.0G"}, + {__LINE__, -6.416106714707772e+26, "-641610671470777216285341637.558304", "%f"}, + {__LINE__, -6.417436981761998e-04, "-0.000642", "%+#f"}, + {__LINE__, -6.429997249673124e+11, "-642999724967.312414", "%#f"}, + {__LINE__, -6.440827429825250e+16, "-6.44083E+16", "%G"}, + {__LINE__, -6.444869858444955e+02, "-6e+02", "%6.g"}, + {__LINE__, -6.471701890976228e-25, " -6e-25", "%7.1g"}, + {__LINE__, -6.485393161670371e-12, "-6.485393e-12", "%.6e"}, + {__LINE__, -6.487710907063584e+23, "-6.E+23", "%#3.E"}, + {__LINE__, -6.492942931343439e-08, "-0.", "%+#2.0f"}, + {__LINE__, -6.496010652113223e+18, "-6.49601e+18", "%g"}, + {__LINE__, -6.502856921840228e+22, "-6.50286e+22", "%4g"}, + {__LINE__, -6.523559906055000e-10, "-6.52356E-10", "%.6G"}, + {__LINE__, -6.525899074126662e+04, "-6.5e+04", "%+.1e"}, + {__LINE__, -6.532216801155521e-09, "-6.53222E-09", "%G"}, + {__LINE__, -6.544601787025684e-27, "-0", "%+.0f"}, + {__LINE__, -6.558968312132168e-01, " -1", "%+6.f"}, + {__LINE__, -6.559654261655786e+08, "-6.559654e+08", "%e"}, + {__LINE__, -6.566562622196495e-21, "-6.56656E-21", "%.6G"}, + {__LINE__, -6.573486832071960e+04, "-65734.9", "%G"}, + {__LINE__, -6.573806290918275e+13, "-6.57381E+13", "%G"}, + {__LINE__, -6.578113771674787e+17, "-6.57811E+17", "%+#G"}, + {__LINE__, -6.584106931007506e+15, "-6.584107E+15", "%E"}, + {__LINE__, -6.590538844308877e+07, "-65905388.443089", "%f"}, + {__LINE__, -6.593708834068371e-07, "-0.000001", "%f"}, + {__LINE__, -6.597116446195875e+08, "-6.5971164e+08", "%#1.7e"}, + {__LINE__, -6.605813542127091e-04, "-0.0007", "%+0.g"}, + {__LINE__, -6.607491403866429e+07, "-7e+07", "%3.g"}, + {__LINE__, -6.616499847522278e+09, "-6.61650E+09", "%+#G"}, + {__LINE__, -6.618619768691332e+20, "-7E+20", "%2.G"}, + {__LINE__, -6.626748168962331e-22, "-7.E-22", "%+#3.E"}, + {__LINE__, -6.639335450348280e+12, "-6.63934e+12", "%g"}, + {__LINE__, -6.643910144912576e-03, "-0.006644", "%f"}, + {__LINE__, -6.650293872031870e-18, "-6.65029e-18", "%+#g"}, + {__LINE__, -6.654903858656310e-21, "-0.000000", "%f"}, + {__LINE__, -6.665834666726511e-12, "-6.665835E-12", "%E"}, + {__LINE__, -6.666428729917570e-19, "-0.000000", "%+#f"}, + {__LINE__, -6.668415789681128e+27, "-6.66842E+27", "%+G"}, + {__LINE__, -6.675214676269601e-28, "-6.67521e-28", "%#g"}, + {__LINE__, -6.679560072732262e+01, "-66.7956", "%#g"}, + {__LINE__, -6.692325075457020e-19, "-0.000000", "%1f"}, + {__LINE__, -6.697096655164652e+00, "-6.70", "%#.3g"}, + {__LINE__, -6.712436135928394e-28, "-7e-28", "%0.g"}, + {__LINE__, -6.720769486122685e-16, "-7e-16", "%0.e"}, + {__LINE__, -6.727196898490600e+26, "-672719689849060031860972230.8", "%.1f"}, + {__LINE__, -6.744132627576416e+02, "-674.413", "%6G"}, + {__LINE__, -6.757705576425288e+28, "-6.7577056e+28", "%.7e"}, + {__LINE__, -6.760554929237173e-02, "-0.067606", "%+f"}, + {__LINE__, -6.763538810629361e+10, "-6.7635E+10", "%.4E"}, + {__LINE__, -6.764712008860796e-29, "-6.76471E-29", "%+G"}, + {__LINE__, -6.767299719678443e+04, "-67672.997197", "%f"}, + {__LINE__, -6.768326491352134e+20, "-676832649135213415547.70", "%+.2f"}, + {__LINE__, -6.771116968952891e+03, "-7E+03", "%3.1G"}, + {__LINE__, -6.775218099238350e-30, "-7.e-30", "%+#6.g"}, + {__LINE__, -6.782142689928918e-18, "-0.00", "%4.2f"}, + {__LINE__, -6.795409770512149e+08, "-7E+08", "%+5.0G"}, + {__LINE__, -6.820966157097271e+14, "-6.820966e+14", "%e"}, + {__LINE__, -6.824972990592273e-22, "-0.00", "%+#1.2f"}, + {__LINE__, -6.830452914741750e+29, "-6.8E+29", "%+7.2G"}, + {__LINE__, -6.835797187132348e+10, "-6.8358E+10", "%+5G"}, + {__LINE__, -6.837040829636343e-03, "-0.00683704", "%+g"}, + {__LINE__, -6.852956218658224e+23, "-6.85296e+23", "%3g"}, + {__LINE__, -6.854102607287217e-26, "-7e-26", "%5.e"}, + {__LINE__, -6.865065870249438e+16, "-6.86507E+16", "%#G"}, + {__LINE__, -6.884819522625523e-13, "-6.88482E-13", "%5G"}, + {__LINE__, -6.916316600148513e-12, "-0.000000", "%f"}, + {__LINE__, -6.925312418761560e-05, "-6.92531E-05", "%#G"}, + {__LINE__, -6.929518694178331e+09, "-6929518694.178", "%#.3f"}, + {__LINE__, -6.936008056682024e+02, "-6.936008E+02", "%E"}, + {__LINE__, -6.944911117352400e+26, "-6.944911E+26", "%1.6E"}, + {__LINE__, -6.945829492125162e+05, "-6.9e+05", "%+2.2g"}, + {__LINE__, -6.946603162471856e-13, "-6.94660E-13", "%#G"}, + {__LINE__, -6.947529440406653e+22, "-6.9475e+22", "%+6.5g"}, + {__LINE__, -6.950167604854856e-30, "-0.000000", "%7f"}, + {__LINE__, -6.958122319262799e-26, "-7E-26", "%+1.E"}, + {__LINE__, -6.958978258390961e+16, "-6.95898E+16", "%+5.6G"}, + {__LINE__, -6.963780466334008e-06, "-6.96378E-06", "%2G"}, + {__LINE__, -6.965570896221966e+13, "-6.965571E+13", "%5E"}, + {__LINE__, -6.967741871945064e-10, "-6.96774E-10", "%+#G"}, + {__LINE__, -6.973815739524307e+19, "-69738157395243067782.076", "%6.3f"}, + {__LINE__, -6.982714545008106e+13, "-6.98271e+13", "%g"}, + {__LINE__, -6.985955885054476e+03, "-6985.96", "%6G"}, + {__LINE__, -6.986415266835747e+18, "-6.98642e+18", "%#g"}, + {__LINE__, -6.996461529596512e-08, "-7.0E-08", "%#.1E"}, + {__LINE__, -7.000144914012241e-05, "-7.00014e-05", "%#g"}, + {__LINE__, -7.001017894492730e-03, "-0.00700102", "%+#.6G"}, + {__LINE__, -7.003690685875917e+20, "-7E+20", "%0.G"}, + {__LINE__, -7.010454163965384e+00, "-7.010454e+00", "%+e"}, + {__LINE__, -7.011493550018082e-26, " -0", "%7.f"}, + {__LINE__, -7.018018443394008e+21, "-7.0E+21", "%+#1.1E"}, + {__LINE__, -7.027253777387243e-05, "-7.02725E-05", "%+G"}, + {__LINE__, -7.043679213677740e-17, "-0", "%1.f"}, + {__LINE__, -7.051690489227881e-16, "-7.052e-16", "%0.4g"}, + {__LINE__, -7.063422475274161e-16, "-7.063422E-16", "%E"}, + {__LINE__, -7.065069592235558e-30, "-7.06507e-30", "%+#g"}, + {__LINE__, -7.068265283935834e-29, "-7e-29", "%+5.e"}, + {__LINE__, -7.068748224536295e-13, "-0.000000", "%f"}, + {__LINE__, -7.069621910708177e-04, "-0.000707", "%1.3g"}, + {__LINE__, -7.079725450964823e-12, "-0.000000", "%f"}, + {__LINE__, -7.087255464668218e+17, "-7.1e+17", "%.1e"}, + {__LINE__, -7.088715102009605e-09, "-7e-09", "%6.0g"}, + {__LINE__, -7.090414916270137e-15, "-0.00000", "%.5f"}, + {__LINE__, -7.091868311008428e-03, " -0.0", "%5.1f"}, + {__LINE__, -7.094242165237718e+21, "-7.09424e+21", "%+g"}, + {__LINE__, -7.094324305740325e-05, "-7E-05", "%+3.G"}, + {__LINE__, -7.104544752289144e+04, "-71045.4", "%#g"}, + {__LINE__, -7.105164644813694e-29, "-0.000000", "%+f"}, + {__LINE__, -7.114513164219487e-12, "-7.11451e-12", "%+g"}, + {__LINE__, -7.115778236604137e-12, "-7.11578E-12", "%G"}, + {__LINE__, -7.126217683410162e-27, "-7.126218e-27", "%e"}, + {__LINE__, -7.136214260967733e+28, "-71362142609677334803564008325.338364", "%f"}, + {__LINE__, -7.143452595522573e+19, "-7.14345e+19", "%g"}, + {__LINE__, -7.156042088843537e+27, "-7156042088843537207765166385.7977837", "%4.7f"}, + {__LINE__, -7.173687683710490e+24, "-7.17369e+24", "%6g"}, + {__LINE__, -7.190531162598206e+25, "-71905311625982060164119503", "%4.f"}, + {__LINE__, -7.201301831373747e-09, "-7.2013e-09", "%g"}, + {__LINE__, -7.209601436737306e+10, "-7.2096e+10", "%g"}, + {__LINE__, -7.211058997356655e-06, "-7.211059E-06", "%E"}, + {__LINE__, -7.226756177676272e-09, "-7.22676E-09", "%+G"}, + {__LINE__, -7.230870817566419e+19, "-72308708175664193618.1040364", "%#.7f"}, + {__LINE__, -7.231355992133345e-05, "-7.231356E-05", "%#E"}, + {__LINE__, -7.245999575278407e-12, "-7.246e-12", "%g"}, + {__LINE__, -7.247426403040390e-09, "-7.2474E-09", "%+4.5G"}, + {__LINE__, -7.257348680308567e-12, "-7.3E-12", "%1.2G"}, + {__LINE__, -7.258184256387366e-26, "-7.25818E-26", "%+2G"}, + {__LINE__, -7.262633672900126e+10, "-7.26263e+10", "%#g"}, + {__LINE__, -7.268887462426250e+03, "-7.268887e+03", "%+#e"}, + {__LINE__, -7.275284494682963e+08, "-7.27528e+08", "%g"}, + {__LINE__, -7.276335846256479e-07, " -0", "%4.f"}, + {__LINE__, -7.312556378294452e+15, "-7.31256e+15", "%+6g"}, + {__LINE__, -7.334763752442417e-15, "-0.0000", "%#.4f"}, + {__LINE__, -7.354627097325888e-18, "-7E-18", "%0.E"}, + {__LINE__, -7.360087573342401e-25, "-7.4E-25", "%6.2G"}, + {__LINE__, -7.368533563361098e-29, "-7.4E-29", "%3.1E"}, + {__LINE__, -7.379267723540596e-06, "-0.000007", "%f"}, + {__LINE__, -7.384525781709565e-19, "-0.000000", "%+#f"}, + {__LINE__, -7.388940868679677e-09, "-7.388941E-09", "%E"}, + {__LINE__, -7.391602149099698e+00, "-7.391602E+00", "%E"}, + {__LINE__, -7.393159340196723e+22, "-7.39316e+22", "%#2.6g"}, + {__LINE__, -7.399783260198277e-16, "-7.39978E-16", "%G"}, + {__LINE__, -7.405609590448331e-06, "-7.40561e-06", "%g"}, + {__LINE__, -7.407396977847794e-11, "-7.40740E-11", "%#G"}, + {__LINE__, -7.433716848698637e+20, "-7.43372e+20", "%+g"}, + {__LINE__, -7.444176062769411e-01, "-0.744418", "%#g"}, + {__LINE__, -7.448314697244012e+12, "-7448314697244.011739", "%f"}, + {__LINE__, -7.449533988369018e+08, "-7.449534e+08", "%+#7e"}, + {__LINE__, -7.465682839758801e-01, "-7E-01", "%4.E"}, + {__LINE__, -7.466517843126368e-26, "-7.5E-26", "%.1E"}, + {__LINE__, -7.471385785539900e+24, "-7471385785539899515583783.795591", "%f"}, + {__LINE__, -7.478345583780341e+00, "-7.478346e+00", "%e"}, + {__LINE__, -7.524759284626724e-06, "-7.52476e-06", "%2g"}, + {__LINE__, -7.534831049342539e-19, "-7.53483E-19", "%G"}, + {__LINE__, -7.540546673179273e+15, "-8e+15", "%.1g"}, + {__LINE__, -7.543440436184003e-08, "-7.54344E-08", "%6G"}, + {__LINE__, -7.558224240835564e-06, "-7.55822e-06", "%g"}, + {__LINE__, -7.564132915154469e+23, "-756413291515446850610260.298708", "%+f"}, + {__LINE__, -7.566590720355392e+15, "-7.566591e+15", "%1.6e"}, + {__LINE__, -7.568565927479741e-01, "-7.568566e-01", "%#6e"}, + {__LINE__, -7.615574141973305e-17, "-7.6156e-17", "%+.5g"}, + {__LINE__, -7.641297631509318e-28, "-8e-28", "%+.1g"}, + {__LINE__, -7.661227834163450e+09, "-7661227834.1634497", "%+#.7f"}, + {__LINE__, -7.665934364070126e+11, "-766593436407.0", "%.1f"}, + {__LINE__, -7.682500068463102e-27, "-0.000000", "%+#f"}, + {__LINE__, -7.709363160273798e+15, "-7.70936e+15", "%g"}, + {__LINE__, -7.712596019255238e+26, "-7.7e+26", "%.2g"}, + {__LINE__, -7.730213358437991e+25, "-7.7e+25", "%6.2g"}, + {__LINE__, -7.744420019068976e+05, "-7.74442E+05", "%.5E"}, + {__LINE__, -7.745813181942296e+11, "-7.7458132e+11", "%+.7e"}, + {__LINE__, -7.751004379716307e+16, "-7.751004e+16", "%e"}, + {__LINE__, -7.759862226564527e-28, "-7.75986e-28", "%g"}, + {__LINE__, -7.767838880221207e-27, "-7.76784e-27", "%g"}, + {__LINE__, -7.776301142157532e-19, "-0", "%2.f"}, + {__LINE__, -7.783944257077553e-14, "-8e-14", "%3.g"}, + {__LINE__, -7.801587579382377e+28, "-8e+28", "%+0.g"}, + {__LINE__, -7.806685979552780e+25, "-7.806686E+25", "%E"}, + {__LINE__, -7.825968891331719e-05, "-7.82597E-05", "%G"}, + {__LINE__, -7.826834158664018e+12, "-7.826834E+12", "%+#E"}, + {__LINE__, -7.832536798726886e+24, "-7.83254E+24", "%#1G"}, + {__LINE__, -7.840485340202362e-18, "-0.000000", "%.6f"}, + {__LINE__, -7.843236212099233e+21, "-7.84324e+21", "%g"}, + {__LINE__, -7.906644052019278e-13, "-7.906644E-13", "%E"}, + {__LINE__, -7.908090440678874e-20, "-7.90809E-20", "%#G"}, + {__LINE__, -7.917588593012283e+08, "-7.917589E+08", "%+E"}, + {__LINE__, -7.929100086742454e+29, "-792910008674245414539427656563.930213", "%f"}, + {__LINE__, -7.933235286034290e+26, "-7.933235E+26", "%E"}, + {__LINE__, -7.943431966567875e-03, "-0.0079434", "%+.5g"}, + {__LINE__, -7.950872643572970e-22, "-7.95087e-22", "%2g"}, + {__LINE__, -7.971225555313069e-01, "-0.797123", "%f"}, + {__LINE__, -7.978310272676090e-12, "-0.000000", "%#f"}, + {__LINE__, -8.006805393896414e-29, "-8.00681E-29", "%G"}, + {__LINE__, -8.006906303018830e+25, "-8.00691E+25", "%+G"}, + {__LINE__, -8.008484654476057e+18, "-8.008485e+18", "%5.6e"}, + {__LINE__, -8.008943512904249e+27, "-8008943512904249217854157905.0943", "%+.4f"}, + {__LINE__, -8.016539743121665e+27, "-8.01654E+27", "%G"}, + {__LINE__, -8.018247227006128e-05, " -8E-05", "%7.G"}, + {__LINE__, -8.044391842561705e+21, "-8.04439e+21", "%g"}, + {__LINE__, -8.081902305002036e-02, "-8.081902E-02", "%E"}, + {__LINE__, -8.084193011936438e-03, "-0.0080842", "%+5.5g"}, + {__LINE__, -8.105813534846529e-27, "-0.000000", "%f"}, + {__LINE__, -8.128116892989251e+00, "-8.12812", "%G"}, + {__LINE__, -8.136119035731877e+05, "-8e+05", "%+0.g"}, + {__LINE__, -8.140584224052606e+14, "-8E+14", "%5.G"}, + {__LINE__, -8.145928897003907e+13, "-8.15E+13", "%.3G"}, + {__LINE__, -8.164495905907508e-02, "-0.081645", "%G"}, + {__LINE__, -8.169602113313905e+20, "-8.16960e+20", "%#g"}, + {__LINE__, -8.179181640418333e+24, "-8.E+24", "%#.1G"}, + {__LINE__, -8.184324492264231e-18, "-8.18432E-18", "%G"}, + {__LINE__, -8.186480473850516e-28, "-0.000000", "%+f"}, + {__LINE__, -8.196858948158896e+07, "-8.1969E+07", "%.4E"}, + {__LINE__, -8.213138534699043e-30, "-0.000000", "%f"}, + {__LINE__, -8.221181368676532e-21, "-8.221181E-21", "%#1E"}, + {__LINE__, -8.222605734191438e+16, "-8.22261E+16", "%+G"}, + {__LINE__, -8.223925661091432e-14, "-8.223926e-14", "%0e"}, + {__LINE__, -8.232281541044777e-01, "-0.823228", "%f"}, + {__LINE__, -8.245536794508725e+22, "-8E+22", "%6.G"}, + {__LINE__, -8.270687365305925e+25, "-82706873653059247430974210.146815", "%f"}, + {__LINE__, -8.288978945738204e+11, "-8.28898e+11", "%5g"}, + {__LINE__, -8.290628698333139e+02, "-829.063", "%+G"}, + {__LINE__, -8.292416206056451e-16, "-8.29242e-16", "%+g"}, + {__LINE__, -8.296322623746486e-13, "-8.29632E-13", "%0.6G"}, + {__LINE__, -8.298321941376933e-16, "-0.000000", "%+f"}, + {__LINE__, -8.302331258878365e+29, "-8.30233E+29", "%0G"}, + {__LINE__, -8.309022429255061e+06, "-8309022.429255", "%+f"}, + {__LINE__, -8.312786829254646e-23, "-8.312787e-23", "%e"}, + {__LINE__, -8.313852965178063e-15, "-8.313853e-15", "%#7e"}, + {__LINE__, -8.317529094827869e+16, "-8.31753E+16", "%2G"}, + {__LINE__, -8.322847660882248e-17, "-0.000000", "%f"}, + {__LINE__, -8.324060602752638e-30, "-8.32406e-30", "%#g"}, + {__LINE__, -8.325043500735461e+27, "-8325043500735461066142306663.095951", "%#f"}, + {__LINE__, -8.332432016286935e-02, "-0.0833243", "%g"}, + {__LINE__, -8.334251670232117e-09, "-8.33425e-09", "%g"}, + {__LINE__, -8.338076225141778e+02, "-833.808", "%g"}, + {__LINE__, -8.338349587571534e-23, "-8.33835e-23", "%+2g"}, + {__LINE__, -8.342420812231939e+23, "-834242081223193920891390.00745", "%+0.5f"}, + {__LINE__, -8.347404637940894e+17, "-8.347405e+17", "%+e"}, + {__LINE__, -8.367002601133880e-12, "-0.000000", "%#2.6f"}, + {__LINE__, -8.368579538210858e-17, "-8.36858e-17", "%5g"}, + {__LINE__, -8.392398522472401e-10, "-0.0000", "%.4f"}, + {__LINE__, -8.393029677635258e-29, " -8E-29", "%7.G"}, + {__LINE__, -8.393843230819225e-11, "-8.393843E-11", "%E"}, + {__LINE__, -8.397239871789148e-11, "-8.39724e-11", "%g"}, + {__LINE__, -8.402316358199041e-29, "-0.000", "%3.3f"}, + {__LINE__, -8.402910159034304e-14, "-8.4e-14", "%+0.3g"}, + {__LINE__, -8.414960962391726e+09, "-8414960962.391726", "%#f"}, + {__LINE__, -8.417512471384889e-28, "-8.417512e-28", "%e"}, + {__LINE__, -8.418719240222911e+21, "-8418719240222911182058.851409", "%f"}, + {__LINE__, -8.421210956044195e-09, "-0.00000", "%.5f"}, + {__LINE__, -8.422001733529095e+24, "-8E+24", "%0.G"}, + {__LINE__, -8.443614453772469e+21, "-8.44361E+21", "%+G"}, + {__LINE__, -8.445883044175737e-19, "-0", "%+1.f"}, + {__LINE__, -8.460545304711022e-01, "-0.846055", "%G"}, + {__LINE__, -8.470462532754567e+12, "-8.47E+12", "%6.3G"}, + {__LINE__, -8.478488782426476e-07, "-8.478489E-07", "%E"}, + {__LINE__, -8.478657582923923e+09, "-8.5e+09", "%.2g"}, + {__LINE__, -8.482732098043366e+12, "-8482732098043", "%5.f"}, + {__LINE__, -8.489112373854447e+07, "-8.489e+07", "%#3.3e"}, + {__LINE__, -8.494153144629106e+02, "-849.415", "%+g"}, + {__LINE__, -8.496331191616493e+28, "-8E+28", "%+6.G"}, + {__LINE__, -8.503711894495339e+05, "-850371", "%g"}, + {__LINE__, -8.505271893964268e+14, "-8.505272E+14", "%E"}, + {__LINE__, -8.509873985358741e+15, "-9.e+15", "%#7.g"}, + {__LINE__, -8.518336897898081e-20, "-8.51834E-20", "%G"}, + {__LINE__, -8.529588044136128e+21, "-8.529588E+21", "%E"}, + {__LINE__, -8.539706586811079e-23, "-8.53971E-23", "%G"}, + {__LINE__, -8.545924619642008e+10, "-8.545925e+10", "%6e"}, + {__LINE__, -8.572893681637353e+09, "-8.57289E+09", "%G"}, + {__LINE__, -8.585483717692345e+29, "-8.58548E+29", "%+G"}, + {__LINE__, -8.586092014292309e+27, "-8.59e+27", "%.2e"}, + {__LINE__, -8.604716827086833e-26, "-8.60472e-26", "%g"}, + {__LINE__, -8.621349224186615e-04, "-0.000862", "%f"}, + {__LINE__, -8.626097065201103e-21, " -0", "%5.f"}, + {__LINE__, -8.631700514212522e-16, "-8.631701E-16", "%+E"}, + {__LINE__, -8.634703359975640e-09, "-0.000000", "%+5f"}, + {__LINE__, -8.639393025443855e-17, "-8.63939e-17", "%g"}, + {__LINE__, -8.640641942556812e-11, "-8.64064e-11", "%#g"}, + {__LINE__, -8.646260250525495e-09, "-0.000", "%.3f"}, + {__LINE__, -8.667322015806242e+09, "-8667322015.806242", "%+#f"}, + {__LINE__, -8.690705655554451e+10, "-8.690706E+10", "%#E"}, + {__LINE__, -8.714299893763934e-07, "-8.7143E-07", "%.5G"}, + {__LINE__, -8.715729756264988e+27, "-8.71573E+27", "%+.6G"}, + {__LINE__, -8.716518487180945e+16, "-9e+16", "%3.e"}, + {__LINE__, -8.744404488756237e+25, "-87444044887562366596966967.335902", "%4f"}, + {__LINE__, -8.754720498369242e+13, "-8.75472e+13", "%g"}, + {__LINE__, -8.763198097931010e-19, "-8.76320e-19", "%#g"}, + {__LINE__, -8.779007408852458e+28, "-8.77901E+28", "%G"}, + {__LINE__, -8.794576202907937e+11, "-8.79458E+11", "%#2.6G"}, + {__LINE__, -8.799091520612418e-11, "-8.799E-11", "%3.4G"}, + {__LINE__, -8.799246265524921e+11, "-8.79925E+11", "%G"}, + {__LINE__, -8.809010508550436e-04, "-8.8090E-04", "%.4E"}, + {__LINE__, -8.817389999872653e-10, "-8.81739e-10", "%g"}, + {__LINE__, -8.842022428985267e-28, "-8.842022E-28", "%E"}, + {__LINE__, -8.851265987586864e-07, "-0.000001", "%f"}, + {__LINE__, -8.861985131432196e+03, "-8861.985", "%+.7G"}, + {__LINE__, -8.874449013455113e-29, "-8.874449e-29", "%e"}, + {__LINE__, -8.878752609483453e+18, "-8.87875E+18", "%G"}, + {__LINE__, -8.882501665315313e-04, "-0.00088825", "%+G"}, + {__LINE__, -8.892056241505784e-14, "-8.89206E-14", "%G"}, + {__LINE__, -8.895327674961603e-30, "-8.89533E-30", "%G"}, + {__LINE__, -8.900059462213669e-30, "-8.900059E-30", "%+#E"}, + {__LINE__, -8.957100548759815e+18, "-9e+18", "%3.0e"}, + {__LINE__, -8.961352369869012e-30, "-8.961352e-30", "%+#2e"}, + {__LINE__, -8.962296474587800e+02, "-896", "%4.f"}, + {__LINE__, -8.962536469328530e-12, "-8.96254E-12", "%G"}, + {__LINE__, -8.963299420391932e+21, "-8.9633e+21", "%g"}, + {__LINE__, -8.967736672941522e-11, "-8.96774e-11", "%g"}, + {__LINE__, -8.994077362462679e+11, "-8.9940774e+11", "%+#.7e"}, + {__LINE__, -9.000452862345622e+15, "-9e+15", "%2.e"}, + {__LINE__, -9.007489135361462e+07, "-9.0075E+07", "%+2.4E"}, + {__LINE__, -9.036271805879910e+16, "-9.03627E+16", "%G"}, + {__LINE__, -9.036319073700248e+22, "-9.03632e+22", "%1g"}, + {__LINE__, -9.043207635989237e+11, "-9.043208e+11", "%#e"}, + {__LINE__, -9.043856598625815e-26, "-9e-26", "%+1.g"}, + {__LINE__, -9.052760561065698e+14, "-9.052761E+14", "%E"}, + {__LINE__, -9.066480297957160e-06, "-9E-06", "%+1.G"}, + {__LINE__, -9.070971376440752e-01, "-0.907097", "%g"}, + {__LINE__, -9.073301831888273e+09, "-9.07330E+09", "%#G"}, + {__LINE__, -9.091228662702147e+28, "-9E+28", "%4.G"}, + {__LINE__, -9.093652024983832e+04, "-9.093652E+04", "%7.6E"}, + {__LINE__, -9.098945831139295e-04, "-9.098946E-04", "%+1.6E"}, + {__LINE__, -9.124981449916591e+05, "-912498", "%G"}, + {__LINE__, -9.132038703003394e-02, "-0.0913204", "%#G"}, + {__LINE__, -9.138271437433964e-04, "-0.000913827", "%5g"}, + {__LINE__, -9.158186427463699e-04, "-0.000915819", "%g"}, + {__LINE__, -9.160846358172526e+16, "-9.160846E+16", "%#E"}, + {__LINE__, -9.160884330810163e+17, "-9E+17", "%+5.G"}, + {__LINE__, -9.190271387375542e+21, "-9.19027e+21", "%+g"}, + {__LINE__, -9.191651872412619e-04, "-9.191652E-04", "%E"}, + {__LINE__, -9.196426161984341e-10, "-9E-10", "%4.G"}, + {__LINE__, -9.201074139774962e+09, "-9E+09", "%4.G"}, + {__LINE__, -9.223294284802762e+09, "-9.22329E+09", "%G"}, + {__LINE__, -9.224740266754996e+02, "-9E+02", "%6.0G"}, + {__LINE__, -9.231583780512302e-01, " -0.9", "%6.g"}, + {__LINE__, -9.241998826543689e+07, "-92419988", "%1.f"}, + {__LINE__, -9.243603351372128e+27, "-9.243603e+27", "%#e"}, + {__LINE__, -9.255922697415071e+11, "-9.25592e+11", "%g"}, + {__LINE__, -9.265734968114124e-02, "-0.092657", "%f"}, + {__LINE__, -9.273132068521061e+11, "-9.27313E+11", "%G"}, + {__LINE__, -9.276017912826685e+27, "-9.E+27", "%+#5.G"}, + {__LINE__, -9.279781279788505e+17, "-9.27978E+17", "%7G"}, + {__LINE__, -9.305057549822465e-19, "-9.30506E-19", "%5G"}, + {__LINE__, -9.313182384508469e+18, "-9.31318E+18", "%G"}, + {__LINE__, -9.313350925182641e-12, "-9.31E-12", "%.3G"}, + {__LINE__, -9.362202657509130e+08, "-9e+08", "%.1g"}, + {__LINE__, -9.367344757598381e+19, "-9.36734e+19", "%g"}, + {__LINE__, -9.374222399774300e+26, "-9.37422e+26", "%4g"}, + {__LINE__, -9.385734023305105e+02, "-9.385734e+02", "%+0e"}, + {__LINE__, -9.392042570618909e+17, "-9.39204E+17", "%G"}, + {__LINE__, -9.395742939311926e+20, "-939574293931192627837.8451", "%.4f"}, + {__LINE__, -9.409066155962469e+09, "-9.40907E+09", "%#G"}, + {__LINE__, -9.412851077799790e+23, "-9.412851E+23", "%E"}, + {__LINE__, -9.431808019049818e+08, "-9.43181e+08", "%g"}, + {__LINE__, -9.465236900519924e-27, "-9.46524e-27", "%g"}, + {__LINE__, -9.478330386415852e+17, "-9.478330e+17", "%e"}, + {__LINE__, -9.510393719697428e+15, "-9.51039E+15", "%+G"}, + {__LINE__, -9.534229599909890e-09, "-0.000000", "%f"}, + {__LINE__, -9.541731189284823e-17, "-1.E-16", "%+#7.G"}, + {__LINE__, -9.548861908445902e+24, "-9548861908445902102471336.547751", "%f"}, + {__LINE__, -9.578447281451794e+14, "-957844728145179", "%5.f"}, + {__LINE__, -9.580512736933464e+11, "-9.58051E+11", "%G"}, + {__LINE__, -9.596838169770637e-28, "-1E-27", "%+6.G"}, + {__LINE__, -9.597528852877852e-22, "-1e-21", "%2.1g"}, + {__LINE__, -9.599943658427051e+02, "-9.599944E+02", "%E"}, + {__LINE__, -9.603227991185260e-14, "-1E-13", "%+0.E"}, + {__LINE__, -9.606818733892343e+08, "-960681873.389", "%1.3f"}, + {__LINE__, -9.617442692720937e+16, "-9.61744E+16", "%G"}, + {__LINE__, -9.628685516961109e+29, "-9.62869e+29", "%3g"}, + {__LINE__, -9.638354750455226e-11, "-0.000000", "%f"}, + {__LINE__, -9.644266379029137e+16, "-96442663790291369.707575", "%f"}, + {__LINE__, -9.645563533575482e+06, "-1E+07", "%1.G"}, + {__LINE__, -9.645993536742941e-29, "-9.64599e-29", "%+g"}, + {__LINE__, -9.647147223548563e+00, "-9.647147e+00", "%e"}, + {__LINE__, -9.671225879906396e-11, "-0", "%0.f"}, + {__LINE__, -9.675000471729906e-09, "-9.675000E-09", "%E"}, + {__LINE__, -9.683992878297159e-26, "-9.68e-26", "%2.2e"}, + {__LINE__, -9.695491325144765e+10, "-9.69549E+10", "%#G"}, + {__LINE__, -9.695661526907136e-24, " -0.", "%#6.f"}, + {__LINE__, -9.703124881970338e+07, "-9.703e+07", "%0.4g"}, + {__LINE__, -9.707701257031864e+26, "-970770125703186437249314622.022212", "%f"}, + {__LINE__, -9.709879792694702e+09, "-9.709880E+09", "%E"}, + {__LINE__, -9.736052226907940e+26, "-9.73605e+26", "%+#g"}, + {__LINE__, -9.745037157520795e+07, "-9.74504e+07", "%#5.6g"}, + {__LINE__, -9.757293950670832e-29, "-9.757E-29", "%0.4G"}, + {__LINE__, -9.762126832689880e+12, "-9.76213E+12", "%G"}, + {__LINE__, -9.801328150341989e-01, " -1", "%7.G"}, + {__LINE__, -9.837332964629669e-20, "-9.83733E-20", "%0G"}, + {__LINE__, -9.837790327283010e+23, "-1E+24", "%.1G"}, + {__LINE__, -9.839636176463729e+23, "-9.83964E+23", "%#6.5E"}, + {__LINE__, -9.841454250618272e+11, "-9.84E+11", "%+2.3G"}, + {__LINE__, -9.852920805249280e-12, "-9.852921e-12", "%.7g"}, + {__LINE__, -9.854092850182351e+12, "-9.85409e+12", "%0g"}, + {__LINE__, -9.866796026839712e+02, "-9.9E+02", "%#.1E"}, + {__LINE__, -9.867413260289803e-21, "-1e-20", "%.1g"}, + {__LINE__, -9.882136052131983e-08, "-9.88214e-08", "%g"}, + {__LINE__, -9.882755697941866e+20, "-9.882756E+20", "%E"}, + {__LINE__, -9.897275811087050e+20, "-9.9E+20", "%0.3G"}, + {__LINE__, -9.899860651812364e-04, "-9.899861e-04", "%e"}, + {__LINE__, -9.906754113555550e-11, "-9.90675e-11", "%3g"}, + {__LINE__, -9.926067557389940e+11, "-9.92607E+11", "%G"}, + {__LINE__, -9.929638609014063e+17, "-992963860901406292.214233", "%1f"}, + {__LINE__, -9.941214552193284e-24, "-0.000000", "%+#f"}, + {__LINE__, -9.942875240256573e+14, "-9.942875e+14", "%+1e"}, + {__LINE__, -9.944492909695798e-01, "-9.944E-01", "%.3E"}, + {__LINE__, -9.954710507359939e-27, "-1e-26", "%+0.2g"}, + {__LINE__, -9.955410507742851e+03, "-9955.41", "%+G"}, + {__LINE__, -9.974437672251590e+02, "-997.444", "%#G"}, + {__LINE__, -9.975683165288929e-26, "-9.97568E-26", "%6G"}, + {__LINE__, 1.003827370583415e+06, "1003827.370583", "%3f"}, + {__LINE__, 1.004189065268560e-27, "1.004189E-27", "%.7G"}, + {__LINE__, 1.005840059175462e-28, "+1.00584E-28", "%+G"}, + {__LINE__, 1.006586790090557e-12, "0.000000", "%#f"}, + {__LINE__, 1.007598594773359e+18, "1.0076E+18", "%G"}, + {__LINE__, 1.007902307001894e+29, "1.0079e+29", "%g"}, + {__LINE__, 1.008607405036580e-15, "1.00861E-15", "%6G"}, + {__LINE__, 1.008769102466771e+16, "+1.00877E+16", "%+G"}, + {__LINE__, 1.009545698372534e-08, "+1E-08", "%+0.0G"}, + {__LINE__, 1.010173673945099e-12, "+1.01017e-12", "%+#0g"}, + {__LINE__, 1.011375000606627e+09, "1011375000.606627", "%f"}, + {__LINE__, 1.011944652221650e+15, "1011944652221649.98", "%3.2f"}, + {__LINE__, 1.013057788090379e-21, "0.000000", "%#f"}, + {__LINE__, 1.014525729953198e+15, "1.01453e+15", "%3g"}, + {__LINE__, 1.016760538234615e-21, "+1.016761E-21", "%+3E"}, + {__LINE__, 1.017052611781237e-29, "0.000000", "%f"}, + {__LINE__, 1.018471223361229e+14, "1.01847E+14", "%G"}, + {__LINE__, 1.021646959220873e+15, "1021646959220872.6", "%4.1f"}, + {__LINE__, 1.022304833976590e+27, "1.0223e+27", "%g"}, + {__LINE__, 1.022500312067325e-12, "1.0225e-12", "%6g"}, + {__LINE__, 1.023019285462627e-20, "0.000000", "%f"}, + {__LINE__, 1.024192579400824e+06, "1.02419e+06", "%g"}, + {__LINE__, 1.024517953555766e-28, "1.02452E-28", "%G"}, + {__LINE__, 1.026673589339585e+21, "1.02667E+21", "%G"}, + {__LINE__, 1.027231090958880e-19, "1.E-19", "%#3.G"}, + {__LINE__, 1.028249904956487e-27, "1E-27", "%5.G"}, + {__LINE__, 1.028570144661448e-28, "+1.02857E-28", "%+G"}, + {__LINE__, 1.028934898454705e-13, "+1.028935E-13", "%+E"}, + {__LINE__, 1.029071053545906e-26, "1.029071E-26", "%E"}, + {__LINE__, 1.032672895881148e-30, "+1.032673E-30", "%+E"}, + {__LINE__, 1.033502358979511e+06, "1.0335E+06", "%.5G"}, + {__LINE__, 1.036790427717847e+19, "1e+19", "%4.g"}, + {__LINE__, 1.037022928821648e+03, "1037.02", "%5g"}, + {__LINE__, 1.040551683941284e+14, "1.04055E+14", "%G"}, + {__LINE__, 1.044499252101308e-17, "1.044499E-17", "%E"}, + {__LINE__, 1.045791899570889e+15, "+1.04579e+15", "%+g"}, + {__LINE__, 1.048730383198703e+28, "1.049e+28", "%.4g"}, + {__LINE__, 1.050654419882509e-18, "0.000000", "%f"}, + {__LINE__, 1.052600569262127e-27, "+0.000", "%+2.3f"}, + {__LINE__, 1.053213014784149e+15, "1E+15", "%4.G"}, + {__LINE__, 1.057553916225948e-15, "+0.000000", "%+4f"}, + {__LINE__, 1.058191244482453e+19, "1.058e+19", "%.3e"}, + {__LINE__, 1.058746269793972e-26, "+1.1E-26", "%+.2G"}, + {__LINE__, 1.058793271960762e-01, "+1.058793E-01", "%+4E"}, + {__LINE__, 1.058869592738370e-19, "1.05887e-19", "%3g"}, + {__LINE__, 1.060402312803008e+15, "1060402312803008.229025", "%f"}, + {__LINE__, 1.061106284763095e+00, "1.061106", "%0f"}, + {__LINE__, 1.061180160987467e+09, "1e+09", "%2.g"}, + {__LINE__, 1.061181537176067e-06, "+1.06118e-06", "%+g"}, + {__LINE__, 1.065021381771174e+20, "1.06502e+20", "%g"}, + {__LINE__, 1.065464040401130e-16, "1.065464e-16", "%e"}, + {__LINE__, 1.065573419819459e-05, "0.00001", "%.5f"}, + {__LINE__, 1.066107764306644e+13, "1.066108e+13", "%#e"}, + {__LINE__, 1.071318759598956e+12, "1.071319e+12", "%e"}, + {__LINE__, 1.071564727222321e+10, "1.072E+10", "%3.4G"}, + {__LINE__, 1.074652481218139e+14, "1.0747E+14", "%.4E"}, + {__LINE__, 1.078453684911309e-02, "0.0107845", "%g"}, + {__LINE__, 1.078550811446675e-05, "1.07855e-05", "%g"}, + {__LINE__, 1.078780494515273e-04, "0.000107878", "%4G"}, + {__LINE__, 1.079467488876157e-16, "+1.079467E-16", "%+E"}, + {__LINE__, 1.080529722917934e-20, "0.000000", "%f"}, + {__LINE__, 1.082169127709439e+01, "10.8217", "%#5g"}, + {__LINE__, 1.087241285590951e+22, "1E+22", "%4.G"}, + {__LINE__, 1.091049208406195e-14, "0.0000", "%.4f"}, + {__LINE__, 1.095316064213237e+16, "+1e+16", "%+0.g"}, + {__LINE__, 1.095349083237975e-04, "1.095349e-04", "%5e"}, + {__LINE__, 1.098002465452836e+12, "1098002465452.836205", "%f"}, + {__LINE__, 1.098445764138997e+13, "1.09845E+13", "%G"}, + {__LINE__, 1.099968047892474e-13, "1.1e-13", "%2.5g"}, + {__LINE__, 1.101017598311363e-04, "0.000110102", "%G"}, + {__LINE__, 1.102776332077817e+18, "1.103e+18", "%.3e"}, + {__LINE__, 1.103734053887830e-01, "0.110373", "%f"}, + {__LINE__, 1.105730106869006e-03, "0.00110573", "%g"}, + {__LINE__, 1.106366781854058e-10, "1.10637e-10", "%g"}, + {__LINE__, 1.107354763213839e+15, "1.107355e+15", "%6e"}, + {__LINE__, 1.108151709609825e-10, "+1.10815E-10", "%+G"}, + {__LINE__, 1.110054501993647e+21, "+1.11005E+21", "%+G"}, + {__LINE__, 1.111574814737873e-17, "+1.112E-17", "%+1.4G"}, + {__LINE__, 1.111865512360108e-15, "1E-15", "%.0G"}, + {__LINE__, 1.112281568330498e-03, "1.112282e-03", "%.6e"}, + {__LINE__, 1.112625415174238e+21, "+1.11263e+21", "%+g"}, + {__LINE__, 1.112744974910395e-02, "0.011127", "%f"}, + {__LINE__, 1.114726566979885e-10, "1.11473e-10", "%g"}, + {__LINE__, 1.115395843055731e-20, "+0.000000", "%+6f"}, + {__LINE__, 1.115983414693121e+15, "1.11598e+15", "%5.6g"}, + {__LINE__, 1.116118842074266e+27, "1.116119e+27", "%e"}, + {__LINE__, 1.118386983012328e+19, "11183869830123276400.968280", "%1f"}, + {__LINE__, 1.119344607892718e-22, "1.119345e-22", "%e"}, + {__LINE__, 1.120560837110279e-19, "0.000000", "%f"}, + {__LINE__, 1.123620157906291e-02, "0.0112362", "%G"}, + {__LINE__, 1.126804857639478e+29, "1.1268E+29", "%#0.5G"}, + {__LINE__, 1.128962199461581e+11, "1.12896e+11", "%g"}, + {__LINE__, 1.129878714246809e-16, "1E-16", "%0.0G"}, + {__LINE__, 1.130331982972407e-06, "+0.", "%+#1.f"}, + {__LINE__, 1.134167332070028e-16, "0", "%0.0f"}, + {__LINE__, 1.134248080053598e-28, "0.000000", "%f"}, + {__LINE__, 1.136023160708119e-10, "+0.000000", "%+1f"}, + {__LINE__, 1.136167141059036e+23, "113616714105903593434732.101741", "%f"}, + {__LINE__, 1.136439499920164e+10, "+1.13644E+10", "%+G"}, + {__LINE__, 1.136859734932182e+24, "1.13686e+24", "%g"}, + {__LINE__, 1.138985939448731e+09, "1.13899e+09", "%2g"}, + {__LINE__, 1.139287324790407e-25, "1e-25", "%.1g"}, + {__LINE__, 1.140559912153251e+06, "1.14056e+06", "%g"}, + {__LINE__, 1.141318036027086e-26, "1.14132E-26", "%G"}, + {__LINE__, 1.142586049368452e-20, "+1.14259E-20", "%+7.5E"}, + {__LINE__, 1.143283863993333e-17, "1.143284E-17", "%3E"}, + {__LINE__, 1.144637911632432e-28, "1.144638E-28", "%#3E"}, + {__LINE__, 1.145791416532065e-10, "1.14579e-10", "%g"}, + {__LINE__, 1.146958047315780e-17, "1.146958e-17", "%e"}, + {__LINE__, 1.147898346886569e-08, "1E-08", "%3.0E"}, + {__LINE__, 1.149724744965608e-14, "1.14972e-14", "%5g"}, + {__LINE__, 1.155383721940441e-10, "1e-10", "%1.g"}, + {__LINE__, 1.157066617729094e-02, "0", "%1.f"}, + {__LINE__, 1.157893614537215e+05, "1.157894E+05", "%E"}, + {__LINE__, 1.160476344451928e-19, "1.2e-19", "%.1e"}, + {__LINE__, 1.161610499315966e-26, "1.161610E-26", "%E"}, + {__LINE__, 1.162345042181490e+29, "116234504218148981813385489658.685401", "%5.6f"}, + {__LINE__, 1.162376053722862e+23, "1.16238e+23", "%g"}, + {__LINE__, 1.162996084782483e+18, "+1e+18", "%+0.g"}, + {__LINE__, 1.163544861478966e+26, "1.16354E+26", "%G"}, + {__LINE__, 1.167300137450931e+06, "1E+06", "%.0G"}, + {__LINE__, 1.168693829096401e-30, "+1.16869e-30", "%+g"}, + {__LINE__, 1.172791369381396e+15, "1.173E+15", "%.4G"}, + {__LINE__, 1.174427110782028e-29, " 1E-29", "%7.G"}, + {__LINE__, 1.179498322112450e+27, "1179498322112449759657692993.641831", "%f"}, + {__LINE__, 1.179555606293547e+27, "1.17956e+27", "%3g"}, + {__LINE__, 1.180815814881269e+06, "1.180816e+06", "%e"}, + {__LINE__, 1.181494870072805e+20, "1.181495e+20", "%5e"}, + {__LINE__, 1.181524119225619e+12, "+1181524119225.61917", "%+5.5f"}, + {__LINE__, 1.182111212289243e-20, "1e-20", "%4.g"}, + {__LINE__, 1.184503315019769e-27, "1.1845e-27", "%7g"}, + {__LINE__, 1.186413646767670e+29, "1.18641e+29", "%g"}, + {__LINE__, 1.186852938885004e-13, "1.18685e-13", "%4g"}, + {__LINE__, 1.188837612473914e+05, "1e+05", "%.0g"}, + {__LINE__, 1.190317482928293e-29, "1.190317e-29", "%e"}, + {__LINE__, 1.190527491143987e+02, "1.190527E+02", "%E"}, + {__LINE__, 1.191823062060233e-30, "1.2E-30", "%6.2G"}, + {__LINE__, 1.191926974812428e-23, "1.2e-23", "%.2g"}, + {__LINE__, 1.193549622366544e-25, "1E-25", "%4.1G"}, + {__LINE__, 1.195517368629765e-21, "1.195517e-21", "%1.7g"}, + {__LINE__, 1.195573061651289e-27, "1.19557e-27", "%#g"}, + {__LINE__, 1.195806681188325e-03, "+0.00120", "%+#.3G"}, + {__LINE__, 1.196842275192189e-28, "1.19684e-28", "%g"}, + {__LINE__, 1.197307550969576e+04, "1.1973E+04", "%.4E"}, + {__LINE__, 1.197608525847607e+15, "1197608525847606.8062805", "%4.7f"}, + {__LINE__, 1.197801338159407e+04, "11978", "%5G"}, + {__LINE__, 1.197813329735025e+27, "1.19781E+27", "%7G"}, + {__LINE__, 1.199483904123253e-12, "1.19948e-12", "%g"}, + {__LINE__, 1.199535292169766e-09, "1.199535e-09", "%e"}, + {__LINE__, 1.201478067515135e+05, "120147.806752", "%f"}, + {__LINE__, 1.202054662662158e+17, "1.20205E+17", "%#G"}, + {__LINE__, 1.202111922368321e+07, "+1.202112E+07", "%+#E"}, + {__LINE__, 1.202536892743791e-01, "0.120254", "%#g"}, + {__LINE__, 1.205698674119882e-29, "1.2057E-29", "%G"}, + {__LINE__, 1.208091664701942e-13, " 0.", "%#3.f"}, + {__LINE__, 1.208942413954872e-17, "1.20894E-17", "%G"}, + {__LINE__, 1.209704891496613e+10, "1.210e+10", "%2.3e"}, + {__LINE__, 1.211355639334831e+29, "1E+29", "%.0G"}, + {__LINE__, 1.211447553804203e+17, " 1E+17", "%7.E"}, + {__LINE__, 1.212481583429790e-16, "1.212482e-16", "%e"}, + {__LINE__, 1.212849001551862e+26, "121284900155186181613942153.4899157", "%6.7f"}, + {__LINE__, 1.213057538677801e+06, "1213057.538678", "%#.6f"}, + {__LINE__, 1.214609592911893e+25, "1.214610e+25", "%#e"}, + {__LINE__, 1.216086266251665e+01, "1e+01", "%5.e"}, + {__LINE__, 1.216468565931026e-22, "1.216469E-22", "%1E"}, + {__LINE__, 1.216503126598765e+14, "+1E+14", "%+0.E"}, + {__LINE__, 1.216641013695553e-14, "0.000000", "%f"}, + {__LINE__, 1.223142246779504e-23, "0.000000", "%f"}, + {__LINE__, 1.223884786443274e+08, "122388479", "%5.f"}, + {__LINE__, 1.224012562770076e+29, "1.22401e+29", "%0g"}, + {__LINE__, 1.225098157528297e+14, "1.22510e+14", "%#g"}, + {__LINE__, 1.226306848505242e-22, "1.22631E-22", "%G"}, + {__LINE__, 1.227487485547996e-08, "+1.22749e-08", "%+g"}, + {__LINE__, 1.237206486909689e+02, "+123.721", "%+#.6g"}, + {__LINE__, 1.240281126177077e-02, "+0.01", "%+3.g"}, + {__LINE__, 1.241197211306994e-06, "1.241197E-06", "%E"}, + {__LINE__, 1.241776311097410e+07, "1.241776E+07", "%E"}, + {__LINE__, 1.245995986024999e-03, "0.001246", "%g"}, + {__LINE__, 1.246082428199607e+03, "1246.082428", "%f"}, + {__LINE__, 1.247021567954220e+05, " 1e+05", "%7.g"}, + {__LINE__, 1.248140089618390e-30, "+1.24814E-30", "%+G"}, + {__LINE__, 1.248403361652064e-30, "+0.000000", "%+f"}, + {__LINE__, 1.251098538918842e-26, "+1.251099E-26", "%+E"}, + {__LINE__, 1.251952633022061e+25, "1.25195e+25", "%g"}, + {__LINE__, 1.253029705843461e-04, "+1.E-04", "%+#4.E"}, + {__LINE__, 1.259562132729488e-09, "1e-09", "%1.e"}, + {__LINE__, 1.261702205492260e-27, "0.000000", "%f"}, + {__LINE__, 1.265910361926660e-19, "+1.265910e-19", "%+e"}, + {__LINE__, 1.267411912651087e+12, "1.26741E+12", "%1G"}, + {__LINE__, 1.267830718285980e-10, "1.26783e-10", "%g"}, + {__LINE__, 1.268238378987517e-23, "1E-23", "%5.E"}, + {__LINE__, 1.275543253354167e+10, "1.27554E+10", "%G"}, + {__LINE__, 1.277255234454465e-10, "1.27726E-10", "%5G"}, + {__LINE__, 1.280590949834150e-21, "1.280591E-21", "%E"}, + {__LINE__, 1.285570453788242e-02, "1.285570E-02", "%E"}, + {__LINE__, 1.287712130719031e+09, "1287712130.719031", "%#f"}, + {__LINE__, 1.290142876187105e+29, "+1.290143E+29", "%+E"}, + {__LINE__, 1.293129213191961e+21, "1.29313E+21", "%G"}, + {__LINE__, 1.293317101334714e-23, "+0.000000", "%+f"}, + {__LINE__, 1.294506813069071e-13, "0.0", "%3.1f"}, + {__LINE__, 1.295576232685739e-22, "+0.000000", "%+f"}, + {__LINE__, 1.296010470431800e-19, "+0.000000", "%+6f"}, + {__LINE__, 1.298798231947674e+19, "1.2988E+19", "%2G"}, + {__LINE__, 1.299521114379381e+09, "1.29952E+09", "%G"}, + {__LINE__, 1.299847637892712e+24, "1.299848e+24", "%e"}, + {__LINE__, 1.301269777843698e+29, "130126977784369834978406288428.232074", "%f"}, + {__LINE__, 1.302911786437618e-15, " 0", "%6.f"}, + {__LINE__, 1.303863159906719e+27, "1303863159906719415559450681", "%0.f"}, + {__LINE__, 1.304396472326846e-12, "+1E-12", "%+1.0G"}, + {__LINE__, 1.306180443528427e-30, "+1e-30", "%+.1g"}, + {__LINE__, 1.308469138968514e+22, "1.30847E+22", "%0G"}, + {__LINE__, 1.312700156826057e-11, "1.3127e-11", "%g"}, + {__LINE__, 1.315364075120764e+21, "+1.31536E+21", "%+G"}, + {__LINE__, 1.320376485288444e-09, "+1.3204E-09", "%+6.5G"}, + {__LINE__, 1.321434154364635e-08, "1.32143e-08", "%1g"}, + {__LINE__, 1.322777272579176e+19, "+1e+19", "%+3.e"}, + {__LINE__, 1.322861663428564e+00, "1.322862E+00", "%#E"}, + {__LINE__, 1.323566013489230e+14, "+1.323566E+14", "%+1E"}, + {__LINE__, 1.327446904132973e-20, "+1.32745E-20", "%+4.6G"}, + {__LINE__, 1.328226362528158e+19, "1e+19", "%2.g"}, + {__LINE__, 1.329167460803610e+08, "1e+08", "%3.g"}, + {__LINE__, 1.335371420823160e+14, "1.33537E+14", "%7G"}, + {__LINE__, 1.336116185095935e-21, "0.000000", "%f"}, + {__LINE__, 1.338766774704671e-22, "+1.33877e-22", "%+g"}, + {__LINE__, 1.339199373014647e-12, "1E-12", "%1.E"}, + {__LINE__, 1.344293357481519e+26, "134429335748151945750805680.290796", "%#2f"}, + {__LINE__, 1.344328188122843e+29, "1.34433e+29", "%g"}, + {__LINE__, 1.344382581316972e-05, "1E-05", "%5.0E"}, + {__LINE__, 1.349835616116184e+11, "134983561611.6", "%2.1f"}, + {__LINE__, 1.349955669989707e+20, "134995566998970728533.890906", "%7f"}, + {__LINE__, 1.350230411093841e+20, "135023041109384145386.229648", "%f"}, + {__LINE__, 1.353391369565576e+10, " 1E+10", "%7.1G"}, + {__LINE__, 1.356889483699471e+22, "+1.35689E+22", "%+G"}, + {__LINE__, 1.358141775798243e+24, "+1358141775798242578687791.137781", "%+f"}, + {__LINE__, 1.358547541975523e-15, "1.35855e-15", "%g"}, + {__LINE__, 1.363402539800791e+11, "1.3634E+11", "%G"}, + {__LINE__, 1.363676837988798e+16, "+13636768379887982.4053", "%+2.4f"}, + {__LINE__, 1.364592026494839e-24, "1.36459e-24", "%g"}, + {__LINE__, 1.366664212399413e-09, "+1E-09", "%+6.G"}, + {__LINE__, 1.367446193117463e-17, "1.3674e-17", "%2.4e"}, + {__LINE__, 1.368681648785823e-18, "1.36868E-18", "%3G"}, + {__LINE__, 1.370635189583606e+05, "1.370635E+05", "%E"}, + {__LINE__, 1.371395540772186e-18, "+1.371396e-18", "%+e"}, + {__LINE__, 1.371945318043159e+10, "1E+10", "%0.E"}, + {__LINE__, 1.373780604772988e-21, "1e-21", "%3.g"}, + {__LINE__, 1.374244970441862e-28, "0.000000", "%7.6f"}, + {__LINE__, 1.375874695067149e-25, "1.37587E-25", "%#3G"}, + {__LINE__, 1.377165614832621e+20, "1.37717E+20", "%#G"}, + {__LINE__, 1.381541864946684e-09, "1.38154E-09", "%G"}, + {__LINE__, 1.382901694835415e+00, "1.382902E+00", "%E"}, + {__LINE__, 1.384250577530184e-21, "1.384e-21", "%.4g"}, + {__LINE__, 1.385322753374640e-03, " 1E-03", "%6.E"}, + {__LINE__, 1.387026156054724e+19, "1.387026E+19", "%E"}, + {__LINE__, 1.388726735790498e-27, "+1.388727E-27", "%+E"}, + {__LINE__, 1.388819105742044e+16, "1.38882e+16", "%g"}, + {__LINE__, 1.389941086024951e-19, "0.000000", "%f"}, + {__LINE__, 1.390101174785536e+25, "1.3901E+25", "%G"}, + {__LINE__, 1.392210785638597e+24, "+1.39221E+24", "%+G"}, + {__LINE__, 1.396148856283474e-26, "1.4e-26", "%7.3g"}, + {__LINE__, 1.398153728631994e-21, "1.39815E-21", "%G"}, + {__LINE__, 1.398332446762342e-14, "+1.39833E-14", "%+5G"}, + {__LINE__, 1.400250919607987e+10, "1.40025E+10", "%G"}, + {__LINE__, 1.400662469019739e+03, "1.E+03", "%#0.0E"}, + {__LINE__, 1.401720273747805e-12, "0.000000", "%#f"}, + {__LINE__, 1.402151358748719e+22, "1.402151e+22", "%e"}, + {__LINE__, 1.402351913752357e-28, "1.40235E-28", "%#1.6G"}, + {__LINE__, 1.403285877973810e+13, "+14032858779738.097255", "%+4f"}, + {__LINE__, 1.404540981735861e+04, "14045.409817", "%4f"}, + {__LINE__, 1.406420622355064e+19, "1.40642E+19", "%G"}, + {__LINE__, 1.412552725962301e-29, "+1e-29", "%+1.e"}, + {__LINE__, 1.413266982485044e+10, "1.41327e+10", "%g"}, + {__LINE__, 1.413627189411456e+21, "1.41363E+21", "%0G"}, + {__LINE__, 1.416647216002592e-25, "+0.000000", "%+#f"}, + {__LINE__, 1.417107155080584e-10, "1e-10", "%1.e"}, + {__LINE__, 1.418829895346648e+19, "14188298953466484952.912197", "%f"}, + {__LINE__, 1.419404559267523e-11, "1.4194e-11", "%g"}, + {__LINE__, 1.422421321425472e+15, "1.422421E+15", "%E"}, + {__LINE__, 1.424858902008998e+18, "1.42486E+18", "%2.5E"}, + {__LINE__, 1.428863051254205e+22, "1.428863e+22", "%e"}, + {__LINE__, 1.429533727936725e-02, "0.0142953", "%g"}, + {__LINE__, 1.430982219743369e-19, " 1E-19", "%6.G"}, + {__LINE__, 1.431974118434703e+17, "1E+17", "%3.G"}, + {__LINE__, 1.432418341970152e+16, "+1.432418e+16", "%+5e"}, + {__LINE__, 1.433470281650523e+04, "14334.7", "%g"}, + {__LINE__, 1.434446243424653e+24, " +1e+24", "%+7.g"}, + {__LINE__, 1.435118019241039e+24, "+1e+24", "%+4.g"}, + {__LINE__, 1.435691648420278e-01, "0.1435692", "%#4.7g"}, + {__LINE__, 1.437569598098744e+27, "1.437570E+27", "%#E"}, + {__LINE__, 1.437633484061726e-25, "+1.43763e-25", "%+7g"}, + {__LINE__, 1.437866591230707e-13, "1.43787e-13", "%g"}, + {__LINE__, 1.440593154445915e-01, "+0.144059", "%+1G"}, + {__LINE__, 1.441368205977342e+16, "1.441368E+16", "%#E"}, + {__LINE__, 1.441825266684367e+28, "1.44183e+28", "%g"}, + {__LINE__, 1.442374183199456e+20, "1.442374E+20", "%E"}, + {__LINE__, 1.445101893951061e-24, "0", "%0.f"}, + {__LINE__, 1.446037835160094e-20, "+1.44604E-20", "%+2G"}, + {__LINE__, 1.449245376093616e+04, "1.449245e+04", "%e"}, + {__LINE__, 1.454126845620100e+09, "1.45413E+09", "%G"}, + {__LINE__, 1.455764608801107e+09, "1.5e+09", "%6.1e"}, + {__LINE__, 1.457176183149955e-12, "1.45718e-12", "%#g"}, + {__LINE__, 1.458821535020046e-05, "1.45882e-05", "%#g"}, + {__LINE__, 1.460179141161202e-19, "1.460179E-19", "%#E"}, + {__LINE__, 1.461701055446198e-20, "1.461701e-20", "%#2.7g"}, + {__LINE__, 1.462408181482172e+10, "1.4624082E+10", "%3.7E"}, + {__LINE__, 1.463706296748154e+24, "1e+24", "%2.g"}, + {__LINE__, 1.464891255780761e-19, "+1.46489e-19", "%+g"}, + {__LINE__, 1.467903978945872e+25, "1.4679E+25", "%G"}, + {__LINE__, 1.468585992857062e+22, "14685859928570619281629.205943", "%f"}, + {__LINE__, 1.469803528668286e+29, "+1E+29", "%+6.G"}, + {__LINE__, 1.469883002609266e-23, "1.E-23", "%#2.E"}, + {__LINE__, 1.469941481858809e+08, "+146994148.185881", "%+f"}, + {__LINE__, 1.470744493304611e+13, "1.47074e+13", "%g"}, + {__LINE__, 1.471857261085004e+23, "1E+23", "%2.G"}, + {__LINE__, 1.474419778873037e+06, "1474419.7789", "%#.4f"}, + {__LINE__, 1.483134762223381e-03, "0", "%0.0f"}, + {__LINE__, 1.483575501240724e-13, "1.48358e-13", "%g"}, + {__LINE__, 1.486068112294452e+20, "1.486068e+20", "%e"}, + {__LINE__, 1.488665528787761e-03, " +0", "%+4.f"}, + {__LINE__, 1.492145267536713e+07, "14921452.675367", "%f"}, + {__LINE__, 1.492589762884761e-01, "0.149259", "%f"}, + {__LINE__, 1.494784286168215e+01, "1.494784E+01", "%E"}, + {__LINE__, 1.495945331501655e+04, "1.5e+04", "%.2g"}, + {__LINE__, 1.501383201904700e+14, "2e+14", "%1.g"}, + {__LINE__, 1.501387105011959e-02, "0.0150139", "%g"}, + {__LINE__, 1.505784488562271e+26, "1.50578e+26", "%5g"}, + {__LINE__, 1.506367986495534e+10, "1.50637e+10", "%2g"}, + {__LINE__, 1.507421710226296e+19, "1.507422E+19", "%#E"}, + {__LINE__, 1.507960881206134e+16, "2e+16", "%.0g"}, + {__LINE__, 1.508974301049424e+14, "+1.508974E+14", "%+E"}, + {__LINE__, 1.509204025111090e-18, "1.509204E-18", "%E"}, + {__LINE__, 1.511351799767759e+21, "1511351799767759462866.93397", "%.5f"}, + {__LINE__, 1.511712197184520e-06, "+1.51171e-06", "%+1g"}, + {__LINE__, 1.514703727491400e+02, "151.47", "%.5g"}, + {__LINE__, 1.514855355408287e+04, "15148.6", "%g"}, + {__LINE__, 1.516256896575301e+06, "1.516257e+06", "%.6e"}, + {__LINE__, 1.517712083681069e+14, "1.51771e+14", "%0g"}, + {__LINE__, 1.522102209167607e-18, "1.52210e-18", "%#g"}, + {__LINE__, 1.526264862895663e-12, "0.000000", "%f"}, + {__LINE__, 1.527165480858125e+10, "1.527e+10", "%.4g"}, + {__LINE__, 1.528363280308369e+00, "+1.52836", "%+0G"}, + {__LINE__, 1.529108490733420e-22, "1.529108E-22", "%E"}, + {__LINE__, 1.529783364474522e+19, "15297833644745216119.531506", "%7f"}, + {__LINE__, 1.530698363199346e-01, "0.1531", "%#.4f"}, + {__LINE__, 1.531520796537450e+22, "1.53152E+22", "%G"}, + {__LINE__, 1.533314559644813e+06, "+1533314.559645", "%+f"}, + {__LINE__, 1.534682791112854e+01, "+15.3468", "%+0G"}, + {__LINE__, 1.534714026386730e-11, "0.000000", "%f"}, + {__LINE__, 1.537145729498115e+00, "1.537146E+00", "%E"}, + {__LINE__, 1.538740040875751e-23, "1.538740E-23", "%E"}, + {__LINE__, 1.546248240596482e-03, "0.001546", "%f"}, + {__LINE__, 1.546808012239302e-09, "+1.54681E-09", "%+G"}, + {__LINE__, 1.546903877359107e+06, "1.5e+06", "%.2g"}, + {__LINE__, 1.550153973747718e-18, "2e-18", "%.0g"}, + {__LINE__, 1.551703460384378e+00, "+1.5517", "%+.4f"}, + {__LINE__, 1.553995673101369e+29, "1.554E+29", "%G"}, + {__LINE__, 1.555477017531899e+28, "1.55548e+28", "%g"}, + {__LINE__, 1.555548963448462e+12, "1555548963448.46227", "%6.5f"}, + {__LINE__, 1.558702451007712e+16, "2e+16", "%5.1g"}, + {__LINE__, 1.561641587723724e+29, "1.561642e+29", "%e"}, + {__LINE__, 1.561868589559509e-05, "1.56187E-05", "%G"}, + {__LINE__, 1.565229056438949e+13, "1.56523e+13", "%1.6g"}, + {__LINE__, 1.570074406600442e+14, "+1.57007E+14", "%+4G"}, + {__LINE__, 1.570951909913194e+13, "1.57095E+13", "%.6G"}, + {__LINE__, 1.572186421520727e-30, "+1.57219e-30", "%+g"}, + {__LINE__, 1.574374582066945e+12, "1.57e+12", "%5.2e"}, + {__LINE__, 1.577789404823585e+12, "1.577789E+12", "%E"}, + {__LINE__, 1.579641278389186e+04, "15796.413", "%7.3f"}, + {__LINE__, 1.581602330975388e+17, "1.5816E+17", "%#.5G"}, + {__LINE__, 1.587809692297490e-18, "+1.58781e-18", "%+2g"}, + {__LINE__, 1.588672954832388e-05, "1.58867E-05", "%G"}, + {__LINE__, 1.594548954259978e+25, "+1.595e+25", "%+.3e"}, + {__LINE__, 1.596653742160718e+10, "15966537421.6072", "%.4f"}, + {__LINE__, 1.597416186584641e+25, "1.59742e+25", "%g"}, + {__LINE__, 1.597810706039500e-04, "0.000159781", "%g"}, + {__LINE__, 1.601425691153542e+01, "16.0143", "%G"}, + {__LINE__, 1.601491150913706e-15, "+1.60149e-15", "%+g"}, + {__LINE__, 1.609357026469645e+02, "160.936", "%0g"}, + {__LINE__, 1.611064881461188e+06, "+1.611065E+06", "%+E"}, + {__LINE__, 1.611324319640770e-03, "0.00161132", "%G"}, + {__LINE__, 1.613202907940803e+19, "1.6E+19", "%#.1E"}, + {__LINE__, 1.613883500056636e-12, "0.000000", "%5f"}, + {__LINE__, 1.618254213010772e+07, "16182542.130108", "%6f"}, + {__LINE__, 1.620441271211248e-08, "1.62044E-08", "%0G"}, + {__LINE__, 1.622548435024803e-01, "+0.162255", "%+5G"}, + {__LINE__, 1.623740394555269e+19, "16237403945552689066.289531", "%3f"}, + {__LINE__, 1.625774250389937e+18, "1.625774e+18", "%1e"}, + {__LINE__, 1.626300864432426e-02, "0.016263", "%G"}, + {__LINE__, 1.626351146877694e-11, "1.6263511e-11", "%2.7e"}, + {__LINE__, 1.626568757587995e+25, "16265687575879949733348439.62220", "%6.5f"}, + {__LINE__, 1.626717482094360e-28, "+1.626717e-28", "%+3e"}, + {__LINE__, 1.630801585998995e-28, "1.6308e-28", "%0g"}, + {__LINE__, 1.631827173682962e+03, "1632", "%1.4g"}, + {__LINE__, 1.631907571243379e+18, "1631907571243378818.337533", "%f"}, + {__LINE__, 1.632058420447239e-14, " +2E-14", "%+7.G"}, + {__LINE__, 1.632847882621240e+18, "+1.63285E+18", "%+2G"}, + {__LINE__, 1.637329146233172e-09, "+1.63733e-09", "%+g"}, + {__LINE__, 1.638315287442427e-16, "+1.63832E-16", "%+G"}, + {__LINE__, 1.641284849351445e+15, "1641284849351445.096488", "%f"}, + {__LINE__, 1.644871927486929e+10, "2e+10", "%1.e"}, + {__LINE__, 1.645917293047431e-19, "1.64592e-19", "%.6g"}, + {__LINE__, 1.649201265647819e-07, "0.000000", "%f"}, + {__LINE__, 1.650169065733559e+23, "165016906573355903731226.135278", "%3f"}, + {__LINE__, 1.651217291298196e-30, "2E-30", "%4.G"}, + {__LINE__, 1.652680660160331e+08, "2.e+08", "%#3.g"}, + {__LINE__, 1.654171892948767e-15, "1.65417e-15", "%g"}, + {__LINE__, 1.655435863725412e+17, "+1.655436e+17", "%+#e"}, + {__LINE__, 1.656015606204101e+28, "+1.7E+28", "%+3.2G"}, + {__LINE__, 1.656814723110478e-21, "+0.000000", "%+f"}, + {__LINE__, 1.658632655199721e-19, "2.E-19", "%#4.G"}, + {__LINE__, 1.659915061311444e+27, "1.66E+27", "%.3G"}, + {__LINE__, 1.664258574522914e-29, "+1.664259E-29", "%+E"}, + {__LINE__, 1.667662840654469e-28, "+2e-28", "%+0.g"}, + {__LINE__, 1.673124993246863e-25, "+0.000000", "%+f"}, + {__LINE__, 1.677788498058833e-20, "1.678e-20", "%.4g"}, + {__LINE__, 1.681211731173386e-07, "1.68121e-07", "%0.6g"}, + {__LINE__, 1.686341560076196e+02, "169", "%.0f"}, + {__LINE__, 1.686507685287281e+08, "1.686508E+08", "%E"}, + {__LINE__, 1.689500448795801e+03, "+1689.500449", "%+0f"}, + {__LINE__, 1.690639426041009e-13, "2e-13", "%5.0g"}, + {__LINE__, 1.691554939595928e+16, "+1.6916e+16", "%+.5g"}, + {__LINE__, 1.698597126229626e-09, "1.699e-09", "%3.4g"}, + {__LINE__, 1.700093083173516e+16, "17000930831735159", "%5.f"}, + {__LINE__, 1.703653732982710e+13, "+1.70365e+13", "%+g"}, + {__LINE__, 1.705353380573352e-16, "0.000000", "%f"}, + {__LINE__, 1.705973328700179e-26, "1.70597e-26", "%5g"}, + {__LINE__, 1.717797289369145e+22, "+1.717797E+22", "%+7E"}, + {__LINE__, 1.722819196705361e-28, "1.722819E-28", "%1.7G"}, + {__LINE__, 1.723775772891202e+01, "17.237758", "%f"}, + {__LINE__, 1.723787102325353e-23, "0.000000", "%2f"}, + {__LINE__, 1.724551301171870e-13, "0.000000", "%f"}, + {__LINE__, 1.726098078655758e-20, "0.0000000", "%7.7f"}, + {__LINE__, 1.726302822039762e+18, "+2E+18", "%+1.G"}, + {__LINE__, 1.726659209108151e+18, "+1.72666E+18", "%+6G"}, + {__LINE__, 1.728324925097269e-25, "1.728325e-25", "%7e"}, + {__LINE__, 1.728357491215602e+02, "172.836", "%G"}, + {__LINE__, 1.729612227517587e+22, "1.729612e+22", "%e"}, + {__LINE__, 1.731753104740805e-06, "1.73175e-06", "%2g"}, + {__LINE__, 1.736066279733589e+18, "+1.736066E+18", "%+3E"}, + {__LINE__, 1.736626769480182e-19, "2e-19", "%.0g"}, + {__LINE__, 1.737445267713118e-13, " 2e-13", "%7.g"}, + {__LINE__, 1.739264683023077e+05, "173926.468302", "%f"}, + {__LINE__, 1.739423702667596e-16, "+1.73942e-16", "%+g"}, + {__LINE__, 1.741053616961658e-14, "1.74105E-14", "%G"}, + {__LINE__, 1.741085952255057e+29, "1.7e+29", "%#.1e"}, + {__LINE__, 1.743673705633426e+03, "2E+03", "%5.0G"}, + {__LINE__, 1.750940899205665e+27, "1.75094e+27", "%g"}, + {__LINE__, 1.753871003884151e-26, "0.", "%#.0f"}, + {__LINE__, 1.755237470854478e-14, "1.755237e-14", "%4e"}, + {__LINE__, 1.757491419837315e-03, "0.002", "%1.G"}, + {__LINE__, 1.758657797688126e+26, "+1.75866E+26", "%+#G"}, + {__LINE__, 1.760491452270889e+08, "1.76049E+08", "%G"}, + {__LINE__, 1.760816275862939e-10, "2e-10", "%.1g"}, + {__LINE__, 1.760905893493003e-22, "1.76e-22", "%.2e"}, + {__LINE__, 1.762101125986743e-12, "2e-12", "%.0g"}, + {__LINE__, 1.763855968659571e+27, "1.763856E+27", "%E"}, + {__LINE__, 1.764595217341348e-13, "1.764595E-13", "%E"}, + {__LINE__, 1.766737296048445e+08, "+1.77e+08", "%+.3g"}, + {__LINE__, 1.769916386969961e-05, "+1.76992e-05", "%+g"}, + {__LINE__, 1.773873506344176e-01, "1.773874e-01", "%e"}, + {__LINE__, 1.775392554371421e+03, "+1775.39", "%+3.2f"}, + {__LINE__, 1.776007623006870e+24, "1776007623006870161930237.372871", "%f"}, + {__LINE__, 1.777418921678653e-27, " 0", "%6.f"}, + {__LINE__, 1.780967607234234e-18, "1.780968E-18", "%E"}, + {__LINE__, 1.782510583486435e+24, "+2e+24", "%+3.g"}, + {__LINE__, 1.784002921603004e+14, "1.784E+14", "%G"}, + {__LINE__, 1.784231151778382e+11, "1.7842E+11", "%.5G"}, + {__LINE__, 1.785589091453195e+02, " 179.", "%#5.f"}, + {__LINE__, 1.786402639400039e+19, "2e+19", "%0.g"}, + {__LINE__, 1.786506485794647e-25, "2E-25", "%.1G"}, + {__LINE__, 1.787513971482493e-04, "+0.000178751", "%+G"}, + {__LINE__, 1.799765409320039e+23, "179976540932003885586710", "%6.0f"}, + {__LINE__, 1.800451864218989e+08, "+1.80045e+08", "%+g"}, + {__LINE__, 1.800743538258572e+04, " +18007", "%+7.f"}, + {__LINE__, 1.801583764453362e+25, "1.8016e+25", "%0.5g"}, + {__LINE__, 1.804502093739547e+14, "2e+14", "%2.g"}, + {__LINE__, 1.805600104488678e-17, "1.805600E-17", "%E"}, + {__LINE__, 1.811342448081048e+17, "1.811342e+17", "%.6e"}, + {__LINE__, 1.812252160066930e+19, "2e+19", "%0.e"}, + {__LINE__, 1.816287564395273e+02, "182", "%2.f"}, + {__LINE__, 1.817097386762552e-13, "2E-13", "%3.1G"}, + {__LINE__, 1.817881381387254e+06, "1.81788E+06", "%G"}, + {__LINE__, 1.818416380830953e-30, "1.81842E-30", "%G"}, + {__LINE__, 1.824788290177454e-23, "1.82479e-23", "%g"}, + {__LINE__, 1.827832506678437e-18, "1.82783E-18", "%G"}, + {__LINE__, 1.828048053242609e+01, "18.2805", "%g"}, + {__LINE__, 1.828939681844203e-21, "1.82894E-21", "%.6G"}, + {__LINE__, 1.829763900251753e+12, "1829763900251.752773", "%1f"}, + {__LINE__, 1.833100407114602e-05, "0.000018", "%#f"}, + {__LINE__, 1.833672780034284e-07, "1.833673e-07", "%e"}, + {__LINE__, 1.834307692387540e+21, "2E+21", "%5.G"}, + {__LINE__, 1.835119931666753e+14, "+1.835120e+14", "%+e"}, + {__LINE__, 1.835956566920861e-26, "0.000000", "%#f"}, + {__LINE__, 1.837784131899354e+22, "1.83778E+22", "%G"}, + {__LINE__, 1.842867094224664e-09, "1.84287e-09", "%g"}, + {__LINE__, 1.844234823805319e+28, "2E+28", "%1.G"}, + {__LINE__, 1.844877682008962e+12, "1.84488e+12", "%g"}, + {__LINE__, 1.846530424340488e-22, "1.846530e-22", "%#.7g"}, + {__LINE__, 1.849111603036448e-08, "0.00", "%.2f"}, + {__LINE__, 1.850158752678734e+04, "+18502", "%+.5G"}, + {__LINE__, 1.851431391104701e-06, " +2e-06", "%+7.e"}, + {__LINE__, 1.851487430609031e-04, "0.000185149", "%G"}, + {__LINE__, 1.853171650128773e+03, "1853.17", "%G"}, + {__LINE__, 1.854743263740068e-16, "1.854743E-16", "%6.6E"}, + {__LINE__, 1.864399020932753e-11, "+0.000000", "%+f"}, + {__LINE__, 1.865028568072397e-22, "1.86503E-22", "%.6G"}, + {__LINE__, 1.868128423759223e+14, "1.86813E+14", "%4G"}, + {__LINE__, 1.868453558435480e+21, "1.86845E+21", "%G"}, + {__LINE__, 1.870663011627498e-06, "1.87E-06", "%.3G"}, + {__LINE__, 1.873273487748907e+17, "+1.873273E+17", "%+E"}, + {__LINE__, 1.878885220839805e-04, "0.000187889", "%G"}, + {__LINE__, 1.879102515623569e+17, "1.8791e+17", "%g"}, + {__LINE__, 1.889343972100858e-10, "2E-10", "%2.E"}, + {__LINE__, 1.891833282879762e-24, "+2e-24", "%+.1g"}, + {__LINE__, 1.895148778941240e-07, "0.000000", "%0f"}, + {__LINE__, 1.896950834067578e-28, "+1.89695e-28", "%+#g"}, + {__LINE__, 1.898464546986629e-05, "1.898465e-05", "%.7g"}, + {__LINE__, 1.900851427578321e-19, "1.90085e-19", "%6g"}, + {__LINE__, 1.901171344577750e+27, "1.901171e+27", "%7.7g"}, + {__LINE__, 1.903563335316359e+02, "190.356", "%0g"}, + {__LINE__, 1.903817306004701e-16, "+1.90e-16", "%+#6.2e"}, + {__LINE__, 1.910606410246797e+21, "1.91061E+21", "%2.5E"}, + {__LINE__, 1.912537759564710e+29, "1.91254E+29", "%G"}, + {__LINE__, 1.913606675894566e+27, "1.91361E+27", "%7.6G"}, + {__LINE__, 1.916473734025505e-05, " 2e-05", "%7.g"}, + {__LINE__, 1.916507511720523e+23, "+2E+23", "%+.0E"}, + {__LINE__, 1.917688262248837e-28, "1.918e-28", "%.4g"}, + {__LINE__, 1.921375594217083e-12, "1.92138E-12", "%G"}, + {__LINE__, 1.923916000932815e-25, "1.92392E-25", "%G"}, + {__LINE__, 1.926303652776462e-01, "+0.2", "%+0.G"}, + {__LINE__, 1.929411084211293e+21, "1.92941E+21", "%6G"}, + {__LINE__, 1.929996820297491e-26, "1.93e-26", "%.6g"}, + {__LINE__, 1.937301472034748e-29, "1.9373E-29", "%G"}, + {__LINE__, 1.937301660220894e-11, "+1.9373E-11", "%+G"}, + {__LINE__, 1.939038538587083e-02, "0.0193904", "%g"}, + {__LINE__, 1.940575489112444e-09, "1.94058E-09", "%G"}, + {__LINE__, 1.946550455606677e-26, "1.946550E-26", "%#1E"}, + {__LINE__, 1.954250777559491e-14, "1.95425E-14", "%G"}, + {__LINE__, 1.955646327688473e-16, "1.956E-16", "%#.3E"}, + {__LINE__, 1.956999911995683e+20, "2E+20", "%2.G"}, + {__LINE__, 1.959125254298784e-21, "1.95913E-21", "%#G"}, + {__LINE__, 1.960330340481290e+26, "1.96033e+26", "%.6g"}, + {__LINE__, 1.964156478075422e+01, "+19.6416", "%+g"}, + {__LINE__, 1.964702507676036e+19, "2.0e+19", "%2.1e"}, + {__LINE__, 1.965762191674409e-30, "2E-30", "%1.G"}, + {__LINE__, 1.967492699686803e-29, "+1.967493E-29", "%+#E"}, + {__LINE__, 1.970072604062236e-11, "+1.97007E-11", "%+G"}, + {__LINE__, 1.975631055550387e+05, "197563.105555", "%.6f"}, + {__LINE__, 1.975722425389177e+28, "+1.975722e+28", "%+5.6e"}, + {__LINE__, 1.977938328895365e-05, " 2e-05", "%6.e"}, + {__LINE__, 1.981950849019640e+13, "1.981951E+13", "%E"}, + {__LINE__, 1.982543168856985e-26, "1.98254e-26", "%4g"}, + {__LINE__, 1.984873317384181e-20, "1.98487E-20", "%4G"}, + {__LINE__, 1.986146420877074e+02, "+1.986146e+02", "%+0e"}, + {__LINE__, 1.986465942785167e-28, "1.98647e-28", "%g"}, + {__LINE__, 1.988250323235468e-05, " +0", "%+7.f"}, + {__LINE__, 1.989966623080645e-09, "1.989967e-09", "%e"}, + {__LINE__, 1.991243122514519e+11, "199124312251", "%5.f"}, + {__LINE__, 1.993287894645908e+25, "+1.993288E+25", "%+E"}, + {__LINE__, 1.995172329888890e-30, "+1.99517e-30", "%+3g"}, + {__LINE__, 1.997075127236432e+05, "1.997E+05", "%#.4G"}, + {__LINE__, 2.000651599487290e+04, "2E+04", "%2.E"}, + {__LINE__, 2.001429412876339e-28, "0.000000", "%6f"}, + {__LINE__, 2.003535646264196e+03, " 2E+03", "%7.G"}, + {__LINE__, 2.011751504116246e+06, "2E+06", "%2.G"}, + {__LINE__, 2.016361237694652e-30, "2.01636e-30", "%4g"}, + {__LINE__, 2.018266414065554e-08, "0.00", "%2.2f"}, + {__LINE__, 2.020706780608565e+03, "2E+03", "%.0G"}, + {__LINE__, 2.025098418552005e-16, "+2.025098E-16", "%+2E"}, + {__LINE__, 2.026100592518976e-11, "2.026101e-11", "%6e"}, + {__LINE__, 2.026167291572980e+11, "2.02617E+11", "%G"}, + {__LINE__, 2.026782170272331e+07, "2.026782E+07", "%E"}, + {__LINE__, 2.029133469449347e-06, " 2e-06", "%6.g"}, + {__LINE__, 2.031191570768443e-20, "2.031192E-20", "%2.7G"}, + {__LINE__, 2.031884221862863e-16, "2.031884e-16", "%e"}, + {__LINE__, 2.032992924118323e+29, "203299292411832333016263874014.84", "%#0.2f"}, + {__LINE__, 2.035799610097827e+28, "+20357996100978272835391180706.2104344", "%+3.7f"}, + {__LINE__, 2.038008183612069e+25, "20380081836120691463065668", "%7.0f"}, + {__LINE__, 2.041632205119365e-22, "+2.04163e-22", "%+g"}, + {__LINE__, 2.042769811159352e-10, "2e-10", "%.1g"}, + {__LINE__, 2.043034975847005e-08, "2.043035e-08", "%e"}, + {__LINE__, 2.045930666285880e+26, "2.04593e+26", "%g"}, + {__LINE__, 2.048377276651386e-21, "0.00000", "%2.5f"}, + {__LINE__, 2.051785787301292e-23, "0.000000", "%f"}, + {__LINE__, 2.055085792048183e-10, "0.000000", "%f"}, + {__LINE__, 2.055783028451040e-21, "+0", "%+1.f"}, + {__LINE__, 2.057641607509489e-17, "+2E-17", "%+2.G"}, + {__LINE__, 2.058348703001600e-15, "2.05835E-15", "%#G"}, + {__LINE__, 2.059594758787322e+24, "2.05959E+24", "%1G"}, + {__LINE__, 2.062710740295018e+01, "20.6271", "%G"}, + {__LINE__, 2.063240676447750e-11, "0.000000", "%f"}, + {__LINE__, 2.063799238238917e-09, "+0.000000", "%+f"}, + {__LINE__, 2.064564135160425e-17, "2.06456E-17", "%G"}, + {__LINE__, 2.066363476927650e-05, "2.07E-05", "%.3G"}, + {__LINE__, 2.066871450514214e-02, "+2.066871e-02", "%+e"}, + {__LINE__, 2.067258256169148e+07, "2.06726e+07", "%g"}, + {__LINE__, 2.068466590729350e-22, "0.0000", "%.4f"}, + {__LINE__, 2.068779510112540e-26, "2.06878e-26", "%g"}, + {__LINE__, 2.069258770387493e+19, "20692587703874929516.700831", "%3f"}, + {__LINE__, 2.069547778447951e+26, "2.069548e+26", "%6e"}, + {__LINE__, 2.070479507710941e-23, "2.07048E-23", "%G"}, + {__LINE__, 2.071809640061785e+22, "2.071810E+22", "%E"}, + {__LINE__, 2.073364463564950e-06, "2.07336e-06", "%g"}, + {__LINE__, 2.073478953644888e-10, "+2.07E-10", "%+.3G"}, + {__LINE__, 2.076039194312519e+12, "2.07604E+12", "%G"}, + {__LINE__, 2.081490398946229e-07, "+2.08149e-07", "%+g"}, + {__LINE__, 2.084941170287895e-07, "2.084941E-07", "%7E"}, + {__LINE__, 2.087035885023382e-18, "+0.000000", "%+f"}, + {__LINE__, 2.091025884363342e-09, "2.09103E-09", "%G"}, + {__LINE__, 2.091830555397864e+08, "209183056", "%0.f"}, + {__LINE__, 2.091998109232084e-22, "0.000000", "%#f"}, + {__LINE__, 2.093406473464940e-17, "2.09341e-17", "%g"}, + {__LINE__, 2.094646724039720e-26, "2.094647e-26", "%0.7g"}, + {__LINE__, 2.095218667083208e-22, "2.09522e-22", "%.5e"}, + {__LINE__, 2.096932364992728e-27, "2.1E-27", "%.2G"}, + {__LINE__, 2.097012452732083e+17, "2.09701E+17", "%G"}, + {__LINE__, 2.102022216908102e-07, "0.000000", "%f"}, + {__LINE__, 2.104648382618938e-04, "0.00021", "%.3G"}, + {__LINE__, 2.109159578853690e-19, "2.10916e-19", "%6g"}, + {__LINE__, 2.111732624641178e-13, "+2.111733E-13", "%+7.7G"}, + {__LINE__, 2.112676138351330e+21, " 2e+21", "%6.g"}, + {__LINE__, 2.117332904051741e-09, "+0.000000", "%+f"}, + {__LINE__, 2.118001353767757e-14, "2.118E-14", "%4.3E"}, + {__LINE__, 2.119413720893955e+12, "2.119414E+12", "%.7G"}, + {__LINE__, 2.119610992647014e+07, "+21196109.9265", "%+.4f"}, + {__LINE__, 2.120504022069221e+25, "21205040220692210617414730.223", "%#.3f"}, + {__LINE__, 2.120634617123718e-16, "2.120635e-16", "%#e"}, + {__LINE__, 2.128702437175385e+12, "2128702437175.385", "%.3f"}, + {__LINE__, 2.131148830213536e-12, "2.131149e-12", "%e"}, + {__LINE__, 2.132682622145255e+04, "+21326.83", "%+#5.7G"}, + {__LINE__, 2.133864841676473e-01, " +0.2", "%+6.g"}, + {__LINE__, 2.133939058496273e+16, "2E+16", "%4.G"}, + {__LINE__, 2.135087006806302e-24, "0.000000", "%f"}, + {__LINE__, 2.138983961194584e-20, "+2.138984e-20", "%+7e"}, + {__LINE__, 2.146534189669224e+17, "+2.147E+17", "%+.4G"}, + {__LINE__, 2.147375595676503e+09, "2.147376e+09", "%e"}, + {__LINE__, 2.152994986418075e+02, "2E+02", "%0.E"}, + {__LINE__, 2.154127135896811e+06, "2.15E+06", "%2.3G"}, + {__LINE__, 2.154613053892588e-29, "2.1546E-29", "%.4E"}, + {__LINE__, 2.160830430730653e-12, "2.16083E-12", "%#G"}, + {__LINE__, 2.161740591663027e+28, "2.161741e+28", "%e"}, + {__LINE__, 2.167181665934011e-06, "2e-06", "%1.e"}, + {__LINE__, 2.167348761729060e-04, "2.167349e-04", "%#e"}, + {__LINE__, 2.170270852816708e-10, "2.17027E-10", "%0G"}, + {__LINE__, 2.173048229189370e-06, "2.173e-06", "%.5g"}, + {__LINE__, 2.175554537855024e+10, "2.17555E+10", "%G"}, + {__LINE__, 2.177447372527968e-30, "+0.000000", "%+.6f"}, + {__LINE__, 2.178591661569858e+05, "2.1786e+05", "%1.5g"}, + {__LINE__, 2.184700207174818e-29, "0.000000", "%f"}, + {__LINE__, 2.190817031437247e+03, "2.E+03", "%#3.0E"}, + {__LINE__, 2.191396212145558e-01, "2.191E-01", "%6.3E"}, + {__LINE__, 2.191786353372880e-23, "2.19179e-23", "%.5e"}, + {__LINE__, 2.193471126151079e+19, "2.1935E+19", "%.4E"}, + {__LINE__, 2.194750177630526e-15, "2.194750e-15", "%e"}, + {__LINE__, 2.196145170358973e+05, "+219615", "%+g"}, + {__LINE__, 2.199602360934320e-09, "2.19960E-09", "%#6.6G"}, + {__LINE__, 2.202913988776998e+17, "+2.20291e+17", "%+g"}, + {__LINE__, 2.207094560707703e-10, "2.207095e-10", "%e"}, + {__LINE__, 2.207557214621658e-13, " 0", "%4.f"}, + {__LINE__, 2.209428206272229e+13, "2.20943e+13", "%g"}, + {__LINE__, 2.212662463615175e-11, " 0", "%4.0f"}, + {__LINE__, 2.215732710968468e-30, "2E-30", "%.1G"}, + {__LINE__, 2.218490841936778e-10, "2.21849e-10", "%2g"}, + {__LINE__, 2.218850610567959e-01, "+0.221885", "%+G"}, + {__LINE__, 2.220796939261542e-03, "0.002221", "%#f"}, + {__LINE__, 2.221819894808024e+24, "2.2e+24", "%5.1e"}, + {__LINE__, 2.223804993235507e+27, "2.223805e+27", "%1e"}, + {__LINE__, 2.224715386046563e-17, "0.00000", "%#.5f"}, + {__LINE__, 2.224864709983882e-16, "+2.224865e-16", "%+e"}, + {__LINE__, 2.225764510969505e+16, "2.E+16", "%#4.G"}, + {__LINE__, 2.233229189161284e-07, "+2.23323e-07", "%+6g"}, + {__LINE__, 2.236522807209868e+17, "2.23652e+17", "%g"}, + {__LINE__, 2.236641620849775e+20, "2E+20", "%0.G"}, + {__LINE__, 2.237089952728626e-13, "2E-13", "%5.E"}, + {__LINE__, 2.238531255563381e-11, " 2E-11", "%7.1G"}, + {__LINE__, 2.242782296436871e+12, "2242782296436.871103", "%f"}, + {__LINE__, 2.249177852069393e-02, "+2.249178E-02", "%+5E"}, + {__LINE__, 2.250735782732076e+29, "+2.25074e+29", "%+g"}, + {__LINE__, 2.257455203557544e-11, "+2e-11", "%+4.0g"}, + {__LINE__, 2.258002527939529e+24, "2.258e+24", "%g"}, + {__LINE__, 2.266955929448160e+20, "226695592944815960123.6056915", "%.7f"}, + {__LINE__, 2.269019719123250e-23, "0.000000", "%f"}, + {__LINE__, 2.269022332502809e+02, "+226.902233", "%+f"}, + {__LINE__, 2.271165222038591e-03, "0.002", "%1.1g"}, + {__LINE__, 2.273965946408021e+14, "+227396594640802.085507", "%+f"}, + {__LINE__, 2.277221153386242e+22, "22772211533862418697538.032575", "%#f"}, + {__LINE__, 2.280214920187521e-01, "0.2", "%2.G"}, + {__LINE__, 2.280762993019740e+06, "2.28076E+06", "%G"}, + {__LINE__, 2.283479263040833e-24, "+0.000000", "%+f"}, + {__LINE__, 2.283686319235123e-07, "2.2837E-07", "%5.5G"}, + {__LINE__, 2.285842617231066e-26, "0.000000", "%f"}, + {__LINE__, 2.293145864755873e-02, "0.02", "%.0g"}, + {__LINE__, 2.293439381531532e+03, "+2.293439E+03", "%+#1E"}, + {__LINE__, 2.297972500660698e-22, "2.29797e-22", "%g"}, + {__LINE__, 2.298725366073681e+23, "2.29873E+23", "%G"}, + {__LINE__, 2.303151535483950e-29, "2.30315E-29", "%G"}, + {__LINE__, 2.308565313657699e-25, " 0", "%4.f"}, + {__LINE__, 2.309305373760733e-07, "2.309305E-07", "%E"}, + {__LINE__, 2.309693761334710e-19, "2.30969e-19", "%g"}, + {__LINE__, 2.312218220995774e-20, "+2.31222E-20", "%+.6G"}, + {__LINE__, 2.313115729670525e+24, "2.31312E+24", "%G"}, + {__LINE__, 2.315325159866773e-21, "2.315325E-21", "%E"}, + {__LINE__, 2.316932917620091e-19, "0.000000", "%f"}, + {__LINE__, 2.317548394633895e+13, "2.31755E+13", "%0G"}, + {__LINE__, 2.318951465093612e+02, "+2.32e+02", "%+1.2e"}, + {__LINE__, 2.319151794905482e-17, "+0.000000", "%+0f"}, + {__LINE__, 2.319708617851078e-27, "0.000000", "%f"}, + {__LINE__, 2.320019976591725e+20, "2e+20", "%.1g"}, + {__LINE__, 2.322859962551666e+06, "2.32286e+06", "%g"}, + {__LINE__, 2.326474568074649e-29, "2.326e-29", "%.4g"}, + {__LINE__, 2.328400844172053e-07, "2.3284E-07", "%G"}, + {__LINE__, 2.333695247698112e+16, "2.3337e+16", "%g"}, + {__LINE__, 2.333717120257130e-19, "+0.000000", "%+f"}, + {__LINE__, 2.334711793234782e-19, "2.33471E-19", "%5G"}, + {__LINE__, 2.335524987281242e+02, "+233.55", "%+7.5g"}, + {__LINE__, 2.335556767836369e-30, "2.34e-30", "%.3g"}, + {__LINE__, 2.337696964360052e-10, "2.3377e-10", "%1g"}, + {__LINE__, 2.337858249184500e-14, "2.337858E-14", "%5.6E"}, + {__LINE__, 2.339984354781169e-14, "2.339984E-14", "%E"}, + {__LINE__, 2.340849041430089e-04, "0.00023", "%0.2G"}, + {__LINE__, 2.342388410373363e-24, "2.34239E-24", "%G"}, + {__LINE__, 2.343933106737237e-22, "2.34393e-22", "%g"}, + {__LINE__, 2.344870855713960e-08, "0.000000", "%.6f"}, + {__LINE__, 2.347368965433808e+24, "2347368965433808352116785", "%4.f"}, + {__LINE__, 2.349417462171421e-02, "+0.0234942", "%+G"}, + {__LINE__, 2.351071111431207e+11, "235107111143.12", "%.2f"}, + {__LINE__, 2.352756222810670e+19, "+2.e+19", "%+#4.g"}, + {__LINE__, 2.355862529217003e-22, "2.355863e-22", "%#4e"}, + {__LINE__, 2.356804045401445e-30, "2.3568E-30", "%G"}, + {__LINE__, 2.362100710185559e-26, "2.3621e-26", "%g"}, + {__LINE__, 2.368330779173562e-12, " 0", "%4.f"}, + {__LINE__, 2.383329784369796e+22, "2.38333E+22", "%G"}, + {__LINE__, 2.386845229536477e+01, "+23.868452", "%+#f"}, + {__LINE__, 2.388207830036780e-05, "0.000024", "%f"}, + {__LINE__, 2.391809468802907e+21, "+2.391809e+21", "%+e"}, + {__LINE__, 2.395172908564692e-09, "+0.000000", "%+f"}, + {__LINE__, 2.395447167030886e-29, "2.39545e-29", "%g"}, + {__LINE__, 2.397292973389182e+16, "23972929733891823", "%6.f"}, + {__LINE__, 2.401749832237687e-30, "2.401750E-30", "%E"}, + {__LINE__, 2.403610502544347e-03, "0.00240361", "%4G"}, + {__LINE__, 2.404676421776132e+17, "240467642177613206", "%6.f"}, + {__LINE__, 2.406327689091479e+25, "2.406328e+25", "%e"}, + {__LINE__, 2.407341999590511e-02, "0.024073", "%f"}, + {__LINE__, 2.407352797581004e+05, "240735.", "%#g"}, + {__LINE__, 2.407903467439017e+13, "2.4079E+13", "%G"}, + {__LINE__, 2.407979635013539e+21, " +2E+21", "%+7.G"}, + {__LINE__, 2.409513517930790e+29, "240951351793079027174826478585.600853", "%f"}, + {__LINE__, 2.412530651221551e+10, "+2.41253E+10", "%+G"}, + {__LINE__, 2.419943224673811e+00, "2.41994", "%#g"}, + {__LINE__, 2.422474399040258e-15, "0.000000", "%f"}, + {__LINE__, 2.426060206689458e+18, "2.42606E+18", "%1G"}, + {__LINE__, 2.439982659679872e+14, "+2.439983E+14", "%+E"}, + {__LINE__, 2.440528851375447e+13, "24405288513754.466173", "%f"}, + {__LINE__, 2.441340473292679e+19, "2.44134E+19", "%G"}, + {__LINE__, 2.443521636943916e+19, " 2.e+19", "%#7.g"}, + {__LINE__, 2.445925211597624e-27, "2.445925E-27", "%E"}, + {__LINE__, 2.446966179060722e+25, "2.446966e+25", "%5e"}, + {__LINE__, 2.447714218717278e+11, "2e+11", "%1.e"}, + {__LINE__, 2.448339744613286e+06, "2.4483e+06", "%3.5g"}, + {__LINE__, 2.448772993496189e+03, "2448.77", "%G"}, + {__LINE__, 2.448857654325229e+22, "+2.44886e+22", "%+g"}, + {__LINE__, 2.450082452098890e-27, "2.4501E-27", "%#3.5G"}, + {__LINE__, 2.451293602221637e+05, "245129.360222", "%f"}, + {__LINE__, 2.454531490229426e+02, "245.453", "%G"}, + {__LINE__, 2.458958369944980e+14, "2.5E+14", "%6.1E"}, + {__LINE__, 2.463666680775038e+14, "+246366668077503.80", "%+#.2f"}, + {__LINE__, 2.471582990960795e+05, "2.471583e+05", "%e"}, + {__LINE__, 2.474107179274687e+22, "2.47411e+22", "%g"}, + {__LINE__, 2.474332114849132e-08, "+2.47433e-08", "%+g"}, + {__LINE__, 2.476956762431716e+18, "+2476956762431715919.348107", "%+#f"}, + {__LINE__, 2.479091221850607e-22, "0.000000", "%f"}, + {__LINE__, 2.479819586598431e-24, "2.47982e-24", "%g"}, + {__LINE__, 2.480006174601455e-05, "2.48001E-05", "%G"}, + {__LINE__, 2.482672677638334e-26, "+0.000000", "%+f"}, + {__LINE__, 2.492816492208918e-14, " 0", "%7.f"}, + {__LINE__, 2.492964173197140e-12, " 2e-12", "%7.g"}, + {__LINE__, 2.494646635961173e+02, "249.465", "%g"}, + {__LINE__, 2.494687818780545e+11, "249468781878.054546", "%#7f"}, + {__LINE__, 2.510083560147301e-13, "+2.510084e-13", "%+#e"}, + {__LINE__, 2.511186607989480e-30, "2.51E-30", "%.3G"}, + {__LINE__, 2.514164516133643e-11, "2.51416e-11", "%g"}, + {__LINE__, 2.517242520804735e+11, "2.517243e+11", "%e"}, + {__LINE__, 2.518526126400833e-26, "2.51853e-26", "%g"}, + {__LINE__, 2.520313416401176e+09, "2520313416.401176", "%5f"}, + {__LINE__, 2.521653160738683e-29, "2.52165e-29", "%#g"}, + {__LINE__, 2.521941342615338e-16, "2.52194e-16", "%g"}, + {__LINE__, 2.523554774354461e-03, "+3E-03", "%+.0E"}, + {__LINE__, 2.525434130825058e+06, "+2.525434E+06", "%+E"}, + {__LINE__, 2.527616380113364e+02, "2.527616E+02", "%E"}, + {__LINE__, 2.531871347913505e+09, "+2.53187E+09", "%+#G"}, + {__LINE__, 2.532167428661069e+06, "2532167.428661", "%f"}, + {__LINE__, 2.545585718405995e+14, "+2.54559E+14", "%+G"}, + {__LINE__, 2.546305097286406e+10, "2.546305e+10", "%e"}, + {__LINE__, 2.547467156069069e-30, "+0.00", "%+3.2f"}, + {__LINE__, 2.548728793004506e-14, "2.54873E-14", "%G"}, + {__LINE__, 2.560375602395090e+11, "256037560239.509032", "%0f"}, + {__LINE__, 2.560555687476687e+03, "2561", "%.4g"}, + {__LINE__, 2.561709077363443e-24, "+0.000000", "%+f"}, + {__LINE__, 2.563763849675242e+10, "2.5637638E+10", "%.7E"}, + {__LINE__, 2.567482414574355e+11, "+2.567482e+11", "%+e"}, + {__LINE__, 2.571575046303674e-17, "3E-17", "%2.0E"}, + {__LINE__, 2.572997971296986e+11, "257299797129.698593", "%f"}, + {__LINE__, 2.578625935900331e+22, "25786259359003311786295.853381", "%f"}, + {__LINE__, 2.579663282966370e+12, "2.579663e+12", "%e"}, + {__LINE__, 2.593141782397610e-08, "0.000000", "%f"}, + {__LINE__, 2.594386109584196e+04, "3.E+04", "%#6.0E"}, + {__LINE__, 2.598069318007816e-22, "2.59807e-22", "%g"}, + {__LINE__, 2.600910462290091e+09, "2.600910E+09", "%6E"}, + {__LINE__, 2.602580183614458e-03, "2.602580e-03", "%e"}, + {__LINE__, 2.606540360440264e+09, "+2606540360.4", "%+#0.1f"}, + {__LINE__, 2.610016419698116e-21, "+3.e-21", "%+#3.g"}, + {__LINE__, 2.612279323574882e-20, "2.61228E-20", "%G"}, + {__LINE__, 2.614157324336453e-14, "2.61416e-14", "%g"}, + {__LINE__, 2.614688721873993e-09, "2.61e-09", "%6.2e"}, + {__LINE__, 2.616661104472416e-15, " 0", "%5.f"}, + {__LINE__, 2.616742079283195e-09, " +3E-09", "%+7.E"}, + {__LINE__, 2.618075304717427e+24, "2.618075e+24", "%e"}, + {__LINE__, 2.624118573335769e+26, "262411857333576925555007619.550452", "%1f"}, + {__LINE__, 2.625718894274227e+24, "+2625718894274227110940955.753904", "%+f"}, + {__LINE__, 2.627081999477812e+03, "2627.081999", "%f"}, + {__LINE__, 2.631061062224705e+14, "263106106222470.481626", "%f"}, + {__LINE__, 2.631545877128814e+27, "+2.63155e+27", "%+g"}, + {__LINE__, 2.632694395848818e-11, "2.63269e-11", "%g"}, + {__LINE__, 2.636728891022008e-22, "+2.63673e-22", "%+#4g"}, + {__LINE__, 2.638495675008130e-28, "+2.638496e-28", "%+e"}, + {__LINE__, 2.639704195859799e-11, "0.", "%#.0f"}, + {__LINE__, 2.641645264652665e-20, "0", "%0.f"}, + {__LINE__, 2.642012075064497e-20, "3E-20", "%0.E"}, + {__LINE__, 2.648725869006487e-29, " 3E-29", "%6.G"}, + {__LINE__, 2.649060724417770e+12, "3E+12", "%3.G"}, + {__LINE__, 2.651188545120166e-17, "0.000", "%.3f"}, + {__LINE__, 2.652302152621621e+14, "2.7E+14", "%.2G"}, + {__LINE__, 2.653309718412604e-28, "0.000000", "%f"}, + {__LINE__, 2.658344750491858e-21, " 3e-21", "%6.g"}, + {__LINE__, 2.664625074612594e+15, "3e+15", "%1.g"}, + {__LINE__, 2.666953728270800e-15, "3e-15", "%0.e"}, + {__LINE__, 2.674515419678877e-11, " 3E-11", "%6.E"}, + {__LINE__, 2.680054917256578e+15, "2680054917256577.5", "%#2.1f"}, + {__LINE__, 2.680495609883415e-11, "2.68E-11", "%#.3G"}, + {__LINE__, 2.685757893641070e+23, "268575789364107020418259.70809", "%1.5f"}, + {__LINE__, 2.695551226058178e+16, "26955512260581775.407786", "%f"}, + {__LINE__, 2.696346377519671e+04, "+26963.5", "%+G"}, + {__LINE__, 2.714262310601257e+17, "+2.714262E+17", "%+E"}, + {__LINE__, 2.719227450016317e-01, "0.271923", "%G"}, + {__LINE__, 2.724135433346056e-30, "+2.72414e-30", "%+g"}, + {__LINE__, 2.725143224130276e+14, "272514322413027.576530", "%6f"}, + {__LINE__, 2.729355189648310e-03, "+0.00273", "%+.5f"}, + {__LINE__, 2.732872167724945e+11, "2.73287E+11", "%G"}, + {__LINE__, 2.737709476435412e+17, "273770947643541218.141650", "%f"}, + {__LINE__, 2.739299356074967e-15, "2.7E-15", "%.2G"}, + {__LINE__, 2.740793612304798e-27, "2.740794E-27", "%.7G"}, + {__LINE__, 2.742030156175960e+20, "2.74203e+20", "%2.6g"}, + {__LINE__, 2.744455324096085e+11, "2.74446E+11", "%G"}, + {__LINE__, 2.745179546531160e+07, "2.7452E+07", "%.5G"}, + {__LINE__, 2.747470562525333e+04, "3E+04", "%2.E"}, + {__LINE__, 2.750243314674629e+21, "2.75024E+21", "%#G"}, + {__LINE__, 2.750250224436030e+20, "+2.750250e+20", "%+0.6e"}, + {__LINE__, 2.752712858561084e-22, "2.752713e-22", "%e"}, + {__LINE__, 2.756982987656667e-03, "0.002756983", "%#.7G"}, + {__LINE__, 2.761841188479590e+13, "3e+13", "%1.g"}, + {__LINE__, 2.769498440434419e+00, "+3e+00", "%+0.e"}, + {__LINE__, 2.769993785786379e+10, "27699937857.863794", "%f"}, + {__LINE__, 2.772900256376753e-06, "+2.7729E-06", "%+7.6G"}, + {__LINE__, 2.774401482467457e-06, "2.8e-06", "%3.2g"}, + {__LINE__, 2.777691370374757e-02, "+0.027777", "%+f"}, + {__LINE__, 2.779836227365899e-09, "3e-09", "%5.0g"}, + {__LINE__, 2.780481651765741e+01, "2.780482E+01", "%E"}, + {__LINE__, 2.782228478714809e-26, "2.782228E-26", "%4.7G"}, + {__LINE__, 2.790457781719376e+13, "+2.8e+13", "%+.2g"}, + {__LINE__, 2.792026581166417e-30, " 3.e-30", "%#7.0g"}, + {__LINE__, 2.792396278299615e-08, "0.00", "%#.2f"}, + {__LINE__, 2.793658047689995e-10, "2.794e-10", "%#0.4g"}, + {__LINE__, 2.795707358229888e-25, "0.000000", "%f"}, + {__LINE__, 2.796253091758523e-06, "2.796E-06", "%.4G"}, + {__LINE__, 2.796756564788716e-24, "2.796757e-24", "%e"}, + {__LINE__, 2.798730444798773e-14, "2.79873e-14", "%g"}, + {__LINE__, 2.799108397670447e-24, "3E-24", "%.0G"}, + {__LINE__, 2.799389008872835e+06, "2799389.", "%#0.f"}, + {__LINE__, 2.800413998518039e-14, "0.000000", "%f"}, + {__LINE__, 2.803237602587100e+15, "+2803237602587100.418816", "%+5f"}, + {__LINE__, 2.803474415574551e-04, "0.0002803", "%.7f"}, + {__LINE__, 2.804957468647181e+25, "2.80496e+25", "%g"}, + {__LINE__, 2.809345112788226e+09, "2809345112.788226", "%.6f"}, + {__LINE__, 2.811518239408899e+10, "3e+10", "%1.g"}, + {__LINE__, 2.813188439967416e-16, "0.0000000", "%5.7f"}, + {__LINE__, 2.813497118051755e+08, "2.8135e+08", "%.5g"}, + {__LINE__, 2.815748256510577e-29, "0.000000", "%2f"}, + {__LINE__, 2.816076365485207e-01, "0.281608", "%0G"}, + {__LINE__, 2.816083345772131e+24, "2.8161e+24", "%6.4e"}, + {__LINE__, 2.818686957605178e+12, "2.8187E+12", "%.5G"}, + {__LINE__, 2.821903538737691e+20, "2.8219E+20", "%G"}, + {__LINE__, 2.823659589845680e+26, "2.82366e+26", "%2g"}, + {__LINE__, 2.823685630865012e+22, "2.82369E+22", "%G"}, + {__LINE__, 2.828826386007914e+21, "2.828826E+21", "%7E"}, + {__LINE__, 2.830997901034349e+04, "+3e+04", "%+0.e"}, + {__LINE__, 2.833886731091353e-26, "+2.833887e-26", "%+4e"}, + {__LINE__, 2.839965144893913e+28, "28399651448939131626048038015.1421", "%.4f"}, + {__LINE__, 2.840651452049947e-09, "2.841E-09", "%#.3E"}, + {__LINE__, 2.843388001911757e-01, "0.284339", "%g"}, + {__LINE__, 2.846122151080671e+14, "2.84612E+14", "%.5E"}, + {__LINE__, 2.851257828837595e+05, "+285126", "%+5.f"}, + {__LINE__, 2.853823884459520e+07, "+2.85382E+07", "%+G"}, + {__LINE__, 2.853870068368765e-06, "2.854E-06", "%4.3E"}, + {__LINE__, 2.856687358149867e+01, "+28.567", "%+6.5G"}, + {__LINE__, 2.858946600073752e+06, "2.8589466e+06", "%3.7e"}, + {__LINE__, 2.861525727138818e+24, "2.8615257e+24", "%2.7e"}, + {__LINE__, 2.865104175886071e-24, "0.000000", "%f"}, + {__LINE__, 2.870678920363198e-14, "2.87068E-14", "%G"}, + {__LINE__, 2.873298537233691e+09, "+2.8733e+09", "%+g"}, + {__LINE__, 2.877939609444375e-02, "0.028779", "%f"}, + {__LINE__, 2.878253985341728e+13, "2.87825E+13", "%G"}, + {__LINE__, 2.879299244903946e+29, "287929924490394597569320467301", "%0.f"}, + {__LINE__, 2.885516225515485e-26, "0.000000", "%f"}, + {__LINE__, 2.886013724129579e+20, "+3e+20", "%+4.g"}, + {__LINE__, 2.887032786975506e-30, "0.000000", "%f"}, + {__LINE__, 2.890415456531026e-29, "2.89042E-29", "%G"}, + {__LINE__, 2.893177360548214e-13, "2.893E-13", "%#6.3E"}, + {__LINE__, 2.895265536458195e+26, "2.89527e+26", "%5g"}, + {__LINE__, 2.903844533810152e+23, "290384453381015195105874.23", "%.2f"}, + {__LINE__, 2.909060558287504e+27, "2.90906e+27", "%g"}, + {__LINE__, 2.911615480973172e-05, "2.91162E-05", "%3G"}, + {__LINE__, 2.912692297221896e+09, "2912692297.221896", "%#f"}, + {__LINE__, 2.913595662485813e-24, "2.9136E-24", "%G"}, + {__LINE__, 2.915960840341896e-27, "0.000000", "%f"}, + {__LINE__, 2.920451095973991e-16, "2.92e-16", "%2.2e"}, + {__LINE__, 2.920528295810925e+06, "2.92053E+06", "%#G"}, + {__LINE__, 2.921564671017147e+20, "2.921565E+20", "%#6E"}, + {__LINE__, 2.921628350942189e+01, "2.921628E+01", "%E"}, + {__LINE__, 2.921843377455232e+20, "2.921843E+20", "%#E"}, + {__LINE__, 2.930156950319384e+29, "2.930E+29", "%1.3E"}, + {__LINE__, 2.931229858895071e-30, "2.9e-30", "%4.2g"}, + {__LINE__, 2.931753029689166e+20, "2.93175e+20", "%g"}, + {__LINE__, 2.933023693079342e+15, "3.E+15", "%#.1G"}, + {__LINE__, 2.933078733225520e+26, "2.93308E+26", "%G"}, + {__LINE__, 2.933528170896643e-14, "+2.93353e-14", "%+g"}, + {__LINE__, 2.938648437428148e+00, "2.938648e+00", "%e"}, + {__LINE__, 2.940752238221344e+26, "+2.94075E+26", "%+G"}, + {__LINE__, 2.942836470459675e+20, "2.9428e+20", "%6.4e"}, + {__LINE__, 2.943218333254941e+29, "294321833325494086608387078740.634024", "%f"}, + {__LINE__, 2.943690574007512e-27, "0.000000", "%f"}, + {__LINE__, 2.945452907046501e+09, "+2.9455E+09", "%+.5G"}, + {__LINE__, 2.946648725966953e+16, "29466487259669534.637396", "%4f"}, + {__LINE__, 2.955119322417825e+29, "2.95512E+29", "%G"}, + {__LINE__, 2.966481197538973e+24, "2.96648e+24", "%#g"}, + {__LINE__, 2.969362862661362e+08, "+2.969363e+08", "%+7e"}, + {__LINE__, 2.970062459990078e+21, "+2.97006E+21", "%+G"}, + {__LINE__, 2.971059959019791e+10, " 3E+10", "%7.G"}, + {__LINE__, 2.973020205606034e-29, "0.000000", "%f"}, + {__LINE__, 2.977223210301426e+04, "2.977223e+04", "%#e"}, + {__LINE__, 2.977467832772786e-26, "0.000000", "%f"}, + {__LINE__, 2.981433606423384e+18, "2981433606423384397.032805", "%f"}, + {__LINE__, 2.981615513287404e-17, "2.98162e-17", "%g"}, + {__LINE__, 2.983880743847276e+19, " 3e+19", "%7.e"}, + {__LINE__, 2.983927792297305e-28, "2.983928e-28", "%e"}, + {__LINE__, 2.984807359492058e-17, " 0", "%2.f"}, + {__LINE__, 2.985123412933032e+09, "+2.98512e+09", "%+g"}, + {__LINE__, 2.991132955408629e-27, "+2.99113e-27", "%+4g"}, + {__LINE__, 2.992345635923643e+19, "3E+19", "%4.G"}, + {__LINE__, 2.993024238285395e-05, "2.99302e-05", "%2g"}, + {__LINE__, 2.995303406756363e+16, "+2.995303E+16", "%+E"}, + {__LINE__, 2.995492577854335e+19, "+29954925778543346481.797016", "%+f"}, + {__LINE__, 2.996856271675341e-25, "+3e-25", "%+0.e"}, + {__LINE__, 2.997813968112619e+12, "2.99781e+12", "%#5g"}, + {__LINE__, 3.002097486457961e-17, "3.00210e-17", "%5.5e"}, + {__LINE__, 3.006538123158692e+28, "+3.00654E+28", "%+#G"}, + {__LINE__, 3.007293721729544e+04, "30072.937217", "%f"}, + {__LINE__, 3.008301791944493e-07, "3.008e-07", "%.3e"}, + {__LINE__, 3.011742184603817e-17, "3.011742E-17", "%#E"}, + {__LINE__, 3.024641547299177e-30, "3.02464e-30", "%g"}, + {__LINE__, 3.026525135110198e-28, "3e-28", "%.0e"}, + {__LINE__, 3.026768160756558e+20, "3.02677E+20", "%G"}, + {__LINE__, 3.031928829940975e+18, "3031928829940975234.1", "%0.1f"}, + {__LINE__, 3.039787705138620e+24, "+3.E+24", "%+#5.G"}, + {__LINE__, 3.039803824423916e-02, "0.030398", "%5f"}, + {__LINE__, 3.041236293199133e-26, "3.04124e-26", "%g"}, + {__LINE__, 3.045634954037886e+04, "30456.3", "%g"}, + {__LINE__, 3.047528114241850e+25, "3e+25", "%0.e"}, + {__LINE__, 3.047958193737501e-24, "3.04796E-24", "%#G"}, + {__LINE__, 3.049537324414302e-16, "3.04954E-16", "%G"}, + {__LINE__, 3.050500637681798e-30, "3.0505E-30", "%G"}, + {__LINE__, 3.051769626625307e-01, "0.305177", "%f"}, + {__LINE__, 3.057280201971847e+11, "+3.05728E+11", "%+.5E"}, + {__LINE__, 3.060046173306881e-10, "+3.060046e-10", "%+e"}, + {__LINE__, 3.069732667347204e+27, "+3069732667347204291274920251.453295", "%+f"}, + {__LINE__, 3.075060836786916e-14, "0.000000", "%f"}, + {__LINE__, 3.078175179670964e+13, "3.07818E+13", "%G"}, + {__LINE__, 3.080305344303183e-21, "3.08031e-21", "%6g"}, + {__LINE__, 3.088881497064043e+27, "+3.088881E+27", "%+3E"}, + {__LINE__, 3.089196877931209e-20, "3.089197e-20", "%e"}, + {__LINE__, 3.091400888880487e-08, "3e-08", "%2.e"}, + {__LINE__, 3.093410684178904e+16, "3.09341e+16", "%g"}, + {__LINE__, 3.104225344208216e-21, "0.000000", "%f"}, + {__LINE__, 3.105843728248599e+13, "3.e+13", "%#.0g"}, + {__LINE__, 3.106463071390893e-07, "0.0000", "%.4f"}, + {__LINE__, 3.107784123569379e+02, "+310.778", "%+G"}, + {__LINE__, 3.110605148983672e-20, "3.1106051E-20", "%.7E"}, + {__LINE__, 3.111702418162670e-04, "0.00031117", "%.5G"}, + {__LINE__, 3.117610675303153e-17, "3.11761e-17", "%g"}, + {__LINE__, 3.123620125717981e+07, "3.1236e+07", "%2.5g"}, + {__LINE__, 3.125648558809832e-24, "+3.125649E-24", "%+#0.6E"}, + {__LINE__, 3.129025163659283e+10, "31290251636.592825", "%#f"}, + {__LINE__, 3.130689119412709e-29, "+3.131E-29", "%+#.4G"}, + {__LINE__, 3.135681222132527e+13, "3.13568E+13", "%G"}, + {__LINE__, 3.138290485073330e-10, "3.13829E-10", "%G"}, + {__LINE__, 3.141255250155306e-12, "3.14126E-12", "%G"}, + {__LINE__, 3.143224520918429e+25, "3.14322E+25", "%#1G"}, + {__LINE__, 3.144746921366173e-16, " 0", "%7.f"}, + {__LINE__, 3.151336678241994e+19, "+3.15134E+19", "%+G"}, + {__LINE__, 3.161752935716549e+24, "3.2E+24", "%2.1E"}, + {__LINE__, 3.167106521258172e-10, "+3.167107e-10", "%+e"}, + {__LINE__, 3.167266522824146e-04, "3E-04", "%3.E"}, + {__LINE__, 3.169995217131489e+27, "3169995217131488907114089670.358226", "%f"}, + {__LINE__, 3.172117220467692e-21, "3.1721E-21", "%.5G"}, + {__LINE__, 3.173824170351611e+02, " 3e+02", "%6.e"}, + {__LINE__, 3.186291452544739e-28, " 0", "%2.f"}, + {__LINE__, 3.194750094186063e+03, "+3.194750E+03", "%+E"}, + {__LINE__, 3.195001037118137e-20, "0", "%0.0f"}, + {__LINE__, 3.199271564719560e+02, "319.927", "%g"}, + {__LINE__, 3.212803450638544e+20, "3.2128e+20", "%.6g"}, + {__LINE__, 3.214502877263883e+24, "3214502877263882840708220", "%2.f"}, + {__LINE__, 3.214658414074286e-01, "+0.321466", "%+#g"}, + {__LINE__, 3.217627975823673e+00, "3.217628", "%f"}, + {__LINE__, 3.218257328710536e-07, "3.21826e-07", "%6.5e"}, + {__LINE__, 3.221949479347008e+02, "322.194948", "%f"}, + {__LINE__, 3.222862935507443e-14, "3.222863E-14", "%E"}, + {__LINE__, 3.223750247261608e+19, "3.22375e+19", "%g"}, + {__LINE__, 3.236030335782375e+05, "3.236030e+05", "%e"}, + {__LINE__, 3.241078803072735e+19, "3.24108e+19", "%g"}, + {__LINE__, 3.248069569167045e-06, "0.000003", "%#f"}, + {__LINE__, 3.248148973717269e-15, "3.24815E-15", "%G"}, + {__LINE__, 3.251150704311790e+25, "+3.25115e+25", "%+5g"}, + {__LINE__, 3.254498593372140e+15, "+3.2545e+15", "%+g"}, + {__LINE__, 3.254949399612861e-13, "+3.255E-13", "%+7.3E"}, + {__LINE__, 3.255490928554106e-17, "3.255491e-17", "%e"}, + {__LINE__, 3.262333894422112e+17, "326233389442211185.738074", "%0f"}, + {__LINE__, 3.263923577545217e-24, "0.0000000", "%.7f"}, + {__LINE__, 3.267125289609703e+23, "3.26713e+23", "%#.5e"}, + {__LINE__, 3.267906049108331e+27, "3.267906E+27", "%6E"}, + {__LINE__, 3.269885039157328e+14, "326988503915732.797722", "%f"}, + {__LINE__, 3.296011393609953e-27, " 3E-27", "%7.E"}, + {__LINE__, 3.296452164568996e+29, "3.296452E+29", "%E"}, + {__LINE__, 3.296544736555325e+10, "+3.29654E+10", "%+.6G"}, + {__LINE__, 3.301861835798572e+03, "3301.862", "%4.7g"}, + {__LINE__, 3.311292283423002e+21, " 3E+21", "%6.G"}, + {__LINE__, 3.314868440076262e-10, "3.3149E-10", "%.5G"}, + {__LINE__, 3.318057982247451e-13, "3.3181e-13", "%0.5g"}, + {__LINE__, 3.318139218410071e-22, "0.000000", "%f"}, + {__LINE__, 3.326769904839351e-11, "+3.3268e-11", "%+0.4e"}, + {__LINE__, 3.327483659787219e+27, "+3.32748e+27", "%+g"}, + {__LINE__, 3.332666889640198e+17, "333266688964019763.830038", "%f"}, + {__LINE__, 3.333807449377253e+10, "+3.33e+10", "%+.3g"}, + {__LINE__, 3.334572302792625e-09, "3.334572E-09", "%E"}, + {__LINE__, 3.337567126586765e-17, "0.0000000", "%#3.7f"}, + {__LINE__, 3.340512607683786e-04, "+3E-04", "%+1.E"}, + {__LINE__, 3.344911557516870e+04, "33449.1", "%G"}, + {__LINE__, 3.346464302017296e+26, "+3.E+26", "%+#3.G"}, + {__LINE__, 3.348503166628953e+00, "+3.348503e+00", "%+e"}, + {__LINE__, 3.350025157778138e-19, "3.35003e-19", "%6g"}, + {__LINE__, 3.352826233035342e+11, "335282623303.534200", "%7f"}, + {__LINE__, 3.357174089765502e+10, "3.35717E+10", "%G"}, + {__LINE__, 3.369253166475501e+03, "+3369.25", "%+G"}, + {__LINE__, 3.371385975046735e+02, "337.", "%#.0f"}, + {__LINE__, 3.372532650462104e-04, "+0.000", "%+.3f"}, + {__LINE__, 3.376498162710442e-26, "3.376498e-26", "%e"}, + {__LINE__, 3.383510307689135e-12, " 3e-12", "%7.0e"}, + {__LINE__, 3.388427914080631e-04, "0.0003", "%2.4f"}, + {__LINE__, 3.390757423408097e+29, "3.3908E+29", "%.4E"}, + {__LINE__, 3.393963140962879e-11, "3.39396e-11", "%g"}, + {__LINE__, 3.399245742994444e+24, "3.399246E+24", "%E"}, + {__LINE__, 3.417690405546708e-26, "0.00000", "%4.5f"}, + {__LINE__, 3.421159360472045e-30, "3.42116E-30", "%G"}, + {__LINE__, 3.421973947898887e-06, "3.42197E-06", "%4G"}, + {__LINE__, 3.425949002482817e-10, "+3.42595E-10", "%+G"}, + {__LINE__, 3.428355150377972e+08, "3.42836E+08", "%G"}, + {__LINE__, 3.445035158951526e+15, "3445035158951526.454985", "%f"}, + {__LINE__, 3.447363996077534e+28, "+3e+28", "%+2.e"}, + {__LINE__, 3.451571062654907e-03, "0.00345157", "%G"}, + {__LINE__, 3.452787236877688e+09, "3.45279e+09", "%g"}, + {__LINE__, 3.454114826574939e-22, "3.e-22", "%#3.e"}, + {__LINE__, 3.455241965974631e-03, "0.003455", "%#f"}, + {__LINE__, 3.456190496554365e-18, "3.E-18", "%#5.E"}, + {__LINE__, 3.456804565717233e-19, "+0.000", "%+2.3f"}, + {__LINE__, 3.457077651539715e-28, "3.457078E-28", "%E"}, + {__LINE__, 3.472025705376229e+22, "3.472e+22", "%7.4g"}, + {__LINE__, 3.473308270919079e+03, "3.473308e+03", "%e"}, + {__LINE__, 3.474468013243007e-30, "3.47447e-30", "%g"}, + {__LINE__, 3.477976957097698e+22, "3.47798e+22", "%g"}, + {__LINE__, 3.501174631980057e-06, "4e-06", "%4.g"}, + {__LINE__, 3.501808481702140e+20, "3.50181E+20", "%G"}, + {__LINE__, 3.511760000705324e+14, "351176000070532.357000", "%f"}, + {__LINE__, 3.511870226306087e+29, "3.51187e+29", "%.5e"}, + {__LINE__, 3.518846859147841e+02, "+351.885", "%+G"}, + {__LINE__, 3.521659149753418e+25, "35216591497534182053641416", "%5.f"}, + {__LINE__, 3.521721228178747e+21, "4e+21", "%2.e"}, + {__LINE__, 3.526696007281458e+22, "3.5267e+22", "%g"}, + {__LINE__, 3.535631031379084e-11, "4e-11", "%5.0g"}, + {__LINE__, 3.537219665456759e-01, "0.353722", "%f"}, + {__LINE__, 3.537252728287785e-09, "3.537253E-09", "%E"}, + {__LINE__, 3.542561277796815e-19, "3.542561E-19", "%E"}, + {__LINE__, 3.548942336915745e+13, "3.54894E+13", "%.5E"}, + {__LINE__, 3.574385715121768e-24, "3.57439E-24", "%#G"}, + {__LINE__, 3.578068067760211e-13, "3.578068E-13", "%E"}, + {__LINE__, 3.583296432862266e-13, "3.5833e-13", "%g"}, + {__LINE__, 3.591567367115590e+19, "3.59157e+19", "%1g"}, + {__LINE__, 3.594902312287635e-24, "3.5949E-24", "%G"}, + {__LINE__, 3.602929486764515e+12, "3602929486764.514522", "%#f"}, + {__LINE__, 3.606699462631472e-01, "+0.360670", "%+f"}, + {__LINE__, 3.608605968319811e+17, "3.60861e+17", "%g"}, + {__LINE__, 3.608780761567885e+24, "4e+24", "%0.e"}, + {__LINE__, 3.623857274715022e-15, "3.62386E-15", "%1G"}, + {__LINE__, 3.627346251764432e-22, "3.627e-22", "%.4g"}, + {__LINE__, 3.652610391698086e-16, "0.000000", "%3f"}, + {__LINE__, 3.657463146689917e-19, " 0", "%4.0f"}, + {__LINE__, 3.658538858712938e-15, "4E-15", "%5.G"}, + {__LINE__, 3.660337267266058e+16, "+36603372672660579.034698", "%+f"}, + {__LINE__, 3.661588742065142e-01, "0.366159", "%g"}, + {__LINE__, 3.662296387211376e-25, "0.000000", "%f"}, + {__LINE__, 3.668511100303393e-29, "0.000000", "%7f"}, + {__LINE__, 3.669499303661920e+06, "3.6695e+06", "%1.5g"}, + {__LINE__, 3.676856420121343e-23, "3.6769e-23", "%0.4e"}, + {__LINE__, 3.677197473476901e-19, "+3.6772e-19", "%+g"}, + {__LINE__, 3.677281754506453e+12, "+3677281754506.452671", "%+f"}, + {__LINE__, 3.678420802401506e-19, "3.67842E-19", "%G"}, + {__LINE__, 3.679970245325769e+07, "3.67997e+07", "%g"}, + {__LINE__, 3.682528947621349e+05, "4.e+05", "%#5.e"}, + {__LINE__, 3.688257471304210e+22, "36882574713042104441740.320908", "%f"}, + {__LINE__, 3.689129734472166e-01, "0.368913", "%0.6G"}, + {__LINE__, 3.693483801463324e+12, "4E+12", "%3.E"}, + {__LINE__, 3.694612396584729e-21, "+3.69461E-21", "%+G"}, + {__LINE__, 3.706150073392112e-19, "0.000000", "%2f"}, + {__LINE__, 3.706824819530577e+21, "3706824819530576853310.321894", "%f"}, + {__LINE__, 3.709583789659276e+19, "+3.709584E+19", "%+#E"}, + {__LINE__, 3.711137503697284e+22, "3.7111E+22", "%.5G"}, + {__LINE__, 3.717307412969522e-22, "3.717307E-22", "%#E"}, + {__LINE__, 3.717434999853808e+24, " 4E+24", "%6.G"}, + {__LINE__, 3.720761662524312e+14, "+372076166252431.2285", "%+1.4f"}, + {__LINE__, 3.721613815237707e-10, "3.72161e-10", "%g"}, + {__LINE__, 3.725086467464346e+14, "3.72509E+14", "%G"}, + {__LINE__, 3.727427083626536e-15, "+4E-15", "%+.0G"}, + {__LINE__, 3.731138322599465e-13, "3.73114e-13", "%5g"}, + {__LINE__, 3.732248129614146e-04, " 4E-04", "%7.E"}, + {__LINE__, 3.744422223926118e-24, "3.744422E-24", "%E"}, + {__LINE__, 3.745595428897916e+21, "+3745595428897916079336.027906", "%+f"}, + {__LINE__, 3.751308304055989e-08, "+3.751308e-08", "%+e"}, + {__LINE__, 3.755395417696132e-02, "0.037554", "%f"}, + {__LINE__, 3.769103881505159e+09, "3.7691e+09", "%g"}, + {__LINE__, 3.769535572757430e+00, "3.769536", "%6.7G"}, + {__LINE__, 3.770823872348274e-28, "+0.000000", "%+f"}, + {__LINE__, 3.771160653578178e+29, "3.77116e+29", "%g"}, + {__LINE__, 3.776563752716444e-12, "4E-12", "%.0E"}, + {__LINE__, 3.777953798674786e-28, "3.77795e-28", "%g"}, + {__LINE__, 3.785994690686598e+28, "4E+28", "%5.G"}, + {__LINE__, 3.787487488835162e+01, "+37.874875", "%+5f"}, + {__LINE__, 3.788249311173359e-18, "3.788249E-18", "%E"}, + {__LINE__, 3.798728360791314e-08, "3.798728E-08", "%2E"}, + {__LINE__, 3.799038238867092e+05, "3.79904E+05", "%.5E"}, + {__LINE__, 3.799822564549600e+06, "3.79982E+06", "%.5E"}, + {__LINE__, 3.804862840499834e-16, "0", "%1.f"}, + {__LINE__, 3.805375156822481e+12, "3805375156822.4814861", "%.7f"}, + {__LINE__, 3.821612790153376e-17, "3.821613e-17", "%e"}, + {__LINE__, 3.825193659558693e+14, "3.82519E+14", "%#G"}, + {__LINE__, 3.834180638680996e+17, "+383418063868099565.638659", "%+f"}, + {__LINE__, 3.834759760605814e-12, "3.83476E-12", "%G"}, + {__LINE__, 3.839786235582770e+16, "+3.84e+16", "%+0.3g"}, + {__LINE__, 3.843164462248778e+28, "3.84316e+28", "%#g"}, + {__LINE__, 3.845599697858050e+22, "3.8456E+22", "%G"}, + {__LINE__, 3.850147271017228e-21, "3.85e-21", "%.4g"}, + {__LINE__, 3.850283557812101e+07, "3.85028E+07", "%G"}, + {__LINE__, 3.854235609725703e+03, "3854.24", "%G"}, + {__LINE__, 3.864901885489405e-15, "3.8649E-15", "%G"}, + {__LINE__, 3.868630187629983e-24, "3.868630e-24", "%e"}, + {__LINE__, 3.876764606134972e-03, "+3.8767646e-03", "%+#0.7e"}, + {__LINE__, 3.884553592855422e+08, "+3.8845536e+08", "%+4.7e"}, + {__LINE__, 3.887417494351062e+03, "3887.42", "%0g"}, + {__LINE__, 3.887561018972304e+03, "3887.56", "%G"}, + {__LINE__, 3.888554801724658e-24, "3.888555e-24", "%e"}, + {__LINE__, 3.892806891909861e-01, "0.389281", "%f"}, + {__LINE__, 3.914459791345755e+15, "+3.914460E+15", "%+E"}, + {__LINE__, 3.918383209642759e+01, "39.1838", "%#G"}, + {__LINE__, 3.923970658741865e-10, "3.92397E-10", "%G"}, + {__LINE__, 3.928163650272335e+18, "3928163650272335161.162118", "%f"}, + {__LINE__, 3.933053127721002e-20, "3.933053e-20", "%e"}, + {__LINE__, 3.939306552155218e-29, "3.93931E-29", "%G"}, + {__LINE__, 3.953007066379472e+07, "3.953007E+07", "%E"}, + {__LINE__, 3.954924824986267e-01, "3.954925E-01", "%E"}, + {__LINE__, 3.956156072067987e+15, "3.956E+15", "%0.4G"}, + {__LINE__, 3.957756196797224e+22, "4.0E+22", "%4.1E"}, + {__LINE__, 3.960011413261009e+27, "+3960011413261008783592842519.283295", "%+f"}, + {__LINE__, 3.961789076323378e+20, "396178907632337828914.614875", "%f"}, + {__LINE__, 3.961985468081708e-28, "3.96199E-28", "%1G"}, + {__LINE__, 3.975007582283812e-27, "0.000000", "%0.6f"}, + {__LINE__, 3.987586813142132e+15, "+3.98759e+15", "%+g"}, + {__LINE__, 3.992250836957379e+21, "3.99225E+21", "%0G"}, + {__LINE__, 3.992985048620057e+00, "3.9930", "%.4f"}, + {__LINE__, 4.000000000000000e+02, "400.00", "%.2f"}, + {__LINE__, 4.000145414240556e+14, "4.00015e+14", "%#6g"}, + {__LINE__, 4.000774453529974e-25, "4E-25", "%.0E"}, + {__LINE__, 4.002041494804383e+17, "4.002041E+17", "%E"}, + {__LINE__, 4.005505415013214e+17, " 4E+17", "%6.2G"}, + {__LINE__, 4.008960306876491e-28, "0.000", "%.3f"}, + {__LINE__, 4.032337828117640e+16, "4.03234E+16", "%G"}, + {__LINE__, 4.035414597530057e+26, "403541459753005682387083652.429283", "%f"}, + {__LINE__, 4.037065874793069e-01, "0.403707", "%f"}, + {__LINE__, 4.047856284449970e-14, "4.04786E-14", "%#G"}, + {__LINE__, 4.049037221323070e-04, "4.049037e-04", "%e"}, + {__LINE__, 4.053458853142009e-07, "4E-07", "%2.0E"}, + {__LINE__, 4.056455443275955e-22, "4.056455e-22", "%e"}, + {__LINE__, 4.058158020771355e-22, "4.05816e-22", "%#2g"}, + {__LINE__, 4.067283508945137e+02, "+4.07e+02", "%+5.2e"}, + {__LINE__, 4.072155715199509e+11, "4.072e+11", "%.4g"}, + {__LINE__, 4.074643403755990e-22, "4e-22", "%0.g"}, + {__LINE__, 4.077450352325251e+08, "4.1e+08", "%3.2g"}, + {__LINE__, 4.081492619284916e-08, "4.081493E-08", "%E"}, + {__LINE__, 4.083271801996951e-10, "4.083272E-10", "%#E"}, + {__LINE__, 4.090188547940879e-15, "4.090189E-15", "%#E"}, + {__LINE__, 4.091167728938537e-11, "4e-11", "%1.g"}, + {__LINE__, 4.091916745541154e+15, "4091916745541153.588306", "%f"}, + {__LINE__, 4.092366122921161e+23, "4E+23", "%0.E"}, + {__LINE__, 4.094638368212577e-11, "4.09464E-11", "%#G"}, + {__LINE__, 4.097148443124199e-16, "0.000000", "%f"}, + {__LINE__, 4.101057893946401e+06, "4e+06", "%4.g"}, + {__LINE__, 4.101209521231476e+28, "41012095212314756409455185348.633677", "%f"}, + {__LINE__, 4.105683659045903e+05, "+4.E+05", "%+#1.G"}, + {__LINE__, 4.111553717385758e-16, "4.11155e-16", "%g"}, + {__LINE__, 4.112186409918593e+14, "+4.11219e+14", "%+g"}, + {__LINE__, 4.117782144860865e+25, "4.117782E+25", "%5E"}, + {__LINE__, 4.119420921722146e-27, "4.11942e-27", "%g"}, + {__LINE__, 4.134953783635018e+14, "+4.1349538e+14", "%+.7e"}, + {__LINE__, 4.136990822648468e+11, "4.136991E+11", "%E"}, + {__LINE__, 4.140475788523046e+14, "+4E+14", "%+5.G"}, + {__LINE__, 4.149589679915584e+24, "4.14959E+24", "%2G"}, + {__LINE__, 4.151240342256744e-22, " 0", "%2.f"}, + {__LINE__, 4.155533104307272e-04, "+0.000416", "%+f"}, + {__LINE__, 4.155890511880097e+25, "4.155891e+25", "%e"}, + {__LINE__, 4.159907901074450e-19, "4.159908E-19", "%7E"}, + {__LINE__, 4.171899783464252e+18, "4E+18", "%.0E"}, + {__LINE__, 4.177920266276382e-17, "+0.0000", "%+1.4f"}, + {__LINE__, 4.181728014477237e-20, "4.18173e-20", "%.6g"}, + {__LINE__, 4.203600495086497e-30, " 4E-30", "%6.G"}, + {__LINE__, 4.211166112605717e-08, "4E-08", "%5.1G"}, + {__LINE__, 4.219513437404614e+18, "+4E+18", "%+.0E"}, + {__LINE__, 4.221426315236785e+08, "4.221426E+08", "%#E"}, + {__LINE__, 4.226224756005934e-13, " 4.e-13", "%#7.g"}, + {__LINE__, 4.226979046489921e-01, "4.226979e-01", "%#.6e"}, + {__LINE__, 4.236283521629158e-08, "+4.23628E-08", "%+G"}, + {__LINE__, 4.239850628514233e-07, "4.23985E-07", "%.6G"}, + {__LINE__, 4.241177358638621e+04, "42411.773586", "%2f"}, + {__LINE__, 4.245306724398964e-13, "0.000000", "%#f"}, + {__LINE__, 4.246194290300334e+16, "42461942903003340.177293", "%2f"}, + {__LINE__, 4.251238996137952e-05, "4.25124E-05", "%3G"}, + {__LINE__, 4.262432542017438e+13, "42624325420174.375978", "%1f"}, + {__LINE__, 4.266383084300715e+16, "4E+16", "%4.G"}, + {__LINE__, 4.292963398931474e-11, "4.292963E-11", "%E"}, + {__LINE__, 4.296530271399131e-29, "0.000000", "%6f"}, + {__LINE__, 4.303753949741171e+19, "4.30375E+19", "%2G"}, + {__LINE__, 4.303767633827431e-28, "4.30377e-28", "%g"}, + {__LINE__, 4.316181911403991e-30, "4.3162e-30", "%#7.5g"}, + {__LINE__, 4.318654697213126e-18, "4.31865e-18", "%g"}, + {__LINE__, 4.320618603119499e+05, "432061.860312", "%3f"}, + {__LINE__, 4.322443609118441e+21, "4.32244E+21", "%7.5E"}, + {__LINE__, 4.322522446810708e-15, "4.32252e-15", "%.6g"}, + {__LINE__, 4.334728493589115e-18, "0.000000", "%f"}, + {__LINE__, 4.335342531476346e-19, "4.33534E-19", "%G"}, + {__LINE__, 4.340579325084176e-30, "4.34058e-30", "%#0.6g"}, + {__LINE__, 4.340775659883185e+04, "43407.756599", "%6f"}, + {__LINE__, 4.361131891528634e-14, " 4E-14", "%6.G"}, + {__LINE__, 4.366662624371249e-02, "+0.04", "%+4.g"}, + {__LINE__, 4.369919308458348e+28, "+4.36992e+28", "%+2g"}, + {__LINE__, 4.369930393192433e-24, "4.369930e-24", "%e"}, + {__LINE__, 4.376283118322521e-01, "0.437628", "%g"}, + {__LINE__, 4.386868840825930e+19, "4.3869E+19", "%.5G"}, + {__LINE__, 4.389349113395235e+05, "+4.389349e+05", "%+e"}, + {__LINE__, 4.392447466753053e-08, "+4.392E-08", "%+.4G"}, + {__LINE__, 4.394068619246889e-13, "4.39407e-13", "%6g"}, + {__LINE__, 4.404889573700147e-09, "4.404890E-09", "%E"}, + {__LINE__, 4.410531039373014e+05, "+4.41e+05", "%+.2e"}, + {__LINE__, 4.412466606726400e-08, " 0.0", "%6.1f"}, + {__LINE__, 4.414693719279123e+17, "4.414694e+17", "%e"}, + {__LINE__, 4.417050329080679e-01, "+0.441705", "%+g"}, + {__LINE__, 4.419509841929196e-10, "4.4195098E-10", "%.7E"}, + {__LINE__, 4.421012777695611e+07, "+4.42101E+07", "%+0.6G"}, + {__LINE__, 4.426387732151208e+11, "4.42639e+11", "%g"}, + {__LINE__, 4.439567017550398e+26, "4.439567E+26", "%E"}, + {__LINE__, 4.446479816166258e-21, "4.446480e-21", "%0e"}, + {__LINE__, 4.453486178424380e+05, "445348.617842", "%f"}, + {__LINE__, 4.455733696043438e+06, "4.45573e+06", "%3g"}, + {__LINE__, 4.455870606312063e+16, "4.45587e+16", "%g"}, + {__LINE__, 4.458776435431700e+22, "4e+22", "%1.g"}, + {__LINE__, 4.466448605584151e-30, "0.000000", "%f"}, + {__LINE__, 4.471063097005706e+16, "4.47106E+16", "%G"}, + {__LINE__, 4.482001890035190e-22, "+4.482E-22", "%+G"}, + {__LINE__, 4.493246870093631e+05, "449325", "%1G"}, + {__LINE__, 4.496089639281023e+17, "4.49609e+17", "%g"}, + {__LINE__, 4.515066070117557e+15, "4.51507e+15", "%g"}, + {__LINE__, 4.518296460916194e+24, "+4.5183E+24", "%+G"}, + {__LINE__, 4.526548719445596e+02, "452.655", "%6.3f"}, + {__LINE__, 4.532756455106440e-26, "4.53e-26", "%4.2e"}, + {__LINE__, 4.534466782633055e-14, "4.53447E-14", "%G"}, + {__LINE__, 4.541313061854649e-14, "4.54131E-14", "%G"}, + {__LINE__, 4.541848265404338e+02, " 5E+02", "%7.G"}, + {__LINE__, 4.546603085406363e-26, "5E-26", "%3.G"}, + {__LINE__, 4.557349604829375e+28, "+45573496048293753446500886639.", "%+#1.f"}, + {__LINE__, 4.560736449944898e-27, "4.56074e-27", "%g"}, + {__LINE__, 4.563726230559341e-15, "+0.0", "%+2.1f"}, + {__LINE__, 4.572650965532532e-26, "+5E-26", "%+4.G"}, + {__LINE__, 4.574369572115099e-10, "+0.000000", "%+2.6f"}, + {__LINE__, 4.576480601519729e+28, "+4.576481e+28", "%+e"}, + {__LINE__, 4.587487640650499e+02, "+458.75", "%+3.2f"}, + {__LINE__, 4.598365231538559e-27, "4.59837E-27", "%G"}, + {__LINE__, 4.599348244725009e-28, "+4.5993482e-28", "%+#3.7e"}, + {__LINE__, 4.599897524047587e+22, "45998975240475870052136.997401", "%#f"}, + {__LINE__, 4.605415604725077e-25, "0.000000", "%f"}, + {__LINE__, 4.613055015797716e+28, "4.613055E+28", "%E"}, + {__LINE__, 4.618715275814238e-10, "4.618715E-10", "%E"}, + {__LINE__, 4.619044579489540e-14, "0.00", "%.2f"}, + {__LINE__, 4.633693310095410e-20, "+0.000000", "%+f"}, + {__LINE__, 4.648505395281916e-28, "0.000000", "%f"}, + {__LINE__, 4.651232770446398e+21, "4.65e+21", "%.2e"}, + {__LINE__, 4.659743589975352e+28, "+4.65974e+28", "%+g"}, + {__LINE__, 4.660181457075208e-13, "4.66018e-13", "%g"}, + {__LINE__, 4.669787018529686e+20, "4.66979e+20", "%g"}, + {__LINE__, 4.672649286126732e-21, "4.6726E-21", "%4.5G"}, + {__LINE__, 4.675431901120643e-11, " 0", "%3.f"}, + {__LINE__, 4.684404068169945e+26, "468440406816994503458317922.2", "%6.1f"}, + {__LINE__, 4.685438834234642e+19, "5.E+19", "%#6.G"}, + {__LINE__, 4.688915890732712e+00, "+5e+00", "%+2.e"}, + {__LINE__, 4.692999432046297e+00, "4.692999E+00", "%E"}, + {__LINE__, 4.708690772584701e+11, "4.70869e+11", "%g"}, + {__LINE__, 4.711821455782105e-11, "+4.71182e-11", "%+1g"}, + {__LINE__, 4.712413965116830e-01, "4.712414E-01", "%E"}, + {__LINE__, 4.719504715401049e-08, "0.000000", "%f"}, + {__LINE__, 4.719767896031655e+27, "4.71977e+27", "%#g"}, + {__LINE__, 4.722493017411588e-05, "0.000047", "%4f"}, + {__LINE__, 4.729482386761477e+08, "4.72948e+08", "%1g"}, + {__LINE__, 4.730102169800602e-06, "0.000005", "%f"}, + {__LINE__, 4.743951614209393e+24, "4.743952E+24", "%#E"}, + {__LINE__, 4.746077075605921e-16, "4.746E-16", "%.3E"}, + {__LINE__, 4.747802537919248e+24, "4747802537919247889419694", "%4.f"}, + {__LINE__, 4.754727690703025e-26, "0", "%0.f"}, + {__LINE__, 4.756952432926979e-29, " 0.", "%#3.f"}, + {__LINE__, 4.758335147956709e+03, "4758.335148", "%f"}, + {__LINE__, 4.760141880810268e-25, "4.760142e-25", "%e"}, + {__LINE__, 4.767079423650815e-07, "5.E-07", "%#0.G"}, + {__LINE__, 4.785662728343338e-28, "4.78566e-28", "%g"}, + {__LINE__, 4.787146245774150e-13, "+4.78715E-13", "%+G"}, + {__LINE__, 4.787415449888824e-17, "4.78742e-17", "%3g"}, + {__LINE__, 4.794589807429657e-05, "4.79459E-05", "%6G"}, + {__LINE__, 4.794948299666205e+08, "4.79495e+08", "%g"}, + {__LINE__, 4.802292865915992e-04, "4.802293e-04", "%e"}, + {__LINE__, 4.802513688198601e+07, "+4.8e+07", "%+2.3g"}, + {__LINE__, 4.810456746192536e+06, "5E+06", "%0.0G"}, + {__LINE__, 4.820631660081696e+20, "+4.82063E+20", "%+G"}, + {__LINE__, 4.827865857270075e-20, "4.82787e-20", "%g"}, + {__LINE__, 4.835054268490970e+21, "4835054268490970308391.752042", "%#f"}, + {__LINE__, 4.838136770808465e-18, "4.83814E-18", "%G"}, + {__LINE__, 4.839342397882353e-26, "4.839342E-26", "%E"}, + {__LINE__, 4.845130210072029e-16, "0", "%1.f"}, + {__LINE__, 4.845161043167169e-12, "+4.845e-12", "%+.4g"}, + {__LINE__, 4.857425142494964e+01, "48.574251", "%f"}, + {__LINE__, 4.858118337285513e-10, "+4.8581e-10", "%+.5g"}, + {__LINE__, 4.867478343525339e-15, "+4.867478E-15", "%+E"}, + {__LINE__, 4.886137001331278e-11, "0.000000", "%f"}, + {__LINE__, 4.886835850687998e-20, " 0", "%6.0f"}, + {__LINE__, 4.886880737482383e+26, "488688073748238327453918827.814050", "%4f"}, + {__LINE__, 4.888812049144075e-22, "4.888812E-22", "%E"}, + {__LINE__, 4.895869618002905e+02, "+489.587", "%+.7g"}, + {__LINE__, 4.902046593298549e+09, " 5e+09", "%7.g"}, + {__LINE__, 4.907918627564751e-05, "4.91e-05", "%.3g"}, + {__LINE__, 4.916048355579009e+19, "49160483555790088772", "%2.f"}, + {__LINE__, 4.917197806128638e+14, "+5e+14", "%+5.g"}, + {__LINE__, 4.918303274189911e+13, "4.918303e+13", "%e"}, + {__LINE__, 4.922687970321108e+26, "492268797032110771993984599.2485", "%0.4f"}, + {__LINE__, 4.929263362431195e+14, "4.92926e+14", "%g"}, + {__LINE__, 4.933385398543267e-17, "0.000000", "%#f"}, + {__LINE__, 4.942367126455025e+00, " +5", "%+6.f"}, + {__LINE__, 4.947687486717652e-04, "0.000495", "%.6f"}, + {__LINE__, 4.960855200003128e-08, "+4.960855e-08", "%+e"}, + {__LINE__, 4.968485435774085e-21, "0.0000", "%#2.4f"}, + {__LINE__, 4.972088381506133e+01, "49.7", "%.1f"}, + {__LINE__, 4.977561524480392e-15, "4.977562E-15", "%7E"}, + {__LINE__, 4.984592111249502e-13, "5.0e-13", "%.1e"}, + {__LINE__, 4.997502335602838e-14, "4.998e-14", "%6.4g"}, + {__LINE__, 5.001731554335935e-09, "5.00173e-09", "%g"}, + {__LINE__, 5.006231697107042e-17, "5.0062e-17", "%1.5g"}, + {__LINE__, 5.008035801093423e+24, "5.008036E+24", "%#E"}, + {__LINE__, 5.008756965733827e-28, "5.009E-28", "%.4G"}, + {__LINE__, 5.009774027622812e+20, "+5.00977E+20", "%+G"}, + {__LINE__, 5.010576312346293e+29, "5.01058E+29", "%G"}, + {__LINE__, 5.012335250996786e+29, "5.012335e+29", "%.7g"}, + {__LINE__, 5.012404365186907e+20, "5E+20", "%3.2G"}, + {__LINE__, 5.024670103250229e-01, "+5.024670E-01", "%+E"}, + {__LINE__, 5.025765369164560e+03, "5025.77", "%g"}, + {__LINE__, 5.027173841003918e+11, "+5.02717E+11", "%+G"}, + {__LINE__, 5.032093817639893e-26, "5e-26", "%3.e"}, + {__LINE__, 5.039636818525848e-02, "0.050396", "%#f"}, + {__LINE__, 5.040626671307691e+23, "5.040627E+23", "%E"}, + {__LINE__, 5.040788233368296e-11, "+5.04079e-11", "%+g"}, + {__LINE__, 5.040903321336150e-28, "5.0409E-28", "%G"}, + {__LINE__, 5.042078512958994e+12, "5.04208E+12", "%G"}, + {__LINE__, 5.045957900223303e+15, "5045957900223303", "%0.f"}, + {__LINE__, 5.048298764352134e-14, "5.048299e-14", "%1e"}, + {__LINE__, 5.048827326763192e+28, "50488273267631917917697137454.524636", "%f"}, + {__LINE__, 5.049714558347361e-23, "5e-23", "%5.0g"}, + {__LINE__, 5.051509904923853e+16, "50515099049238534", "%5.f"}, + {__LINE__, 5.052789863743305e-10, "5.05279E-10", "%6G"}, + {__LINE__, 5.057429728861999e-29, "0.000", "%#1.3f"}, + {__LINE__, 5.075313093968501e-13, "+5.07531e-13", "%+g"}, + {__LINE__, 5.075874503501582e+29, "5e+29", "%2.e"}, + {__LINE__, 5.079468079020803e+01, "50.795", "%.5G"}, + {__LINE__, 5.086214826494080e-28, " 0.0", "%4.1f"}, + {__LINE__, 5.096054881114421e+13, "5.096e+13", "%.4g"}, + {__LINE__, 5.099045274853458e-23, "5.09905E-23", "%0G"}, + {__LINE__, 5.100248195124433e+00, "5.100248", "%f"}, + {__LINE__, 5.101016114276598e-20, "5e-20", "%4.1g"}, + {__LINE__, 5.103213528670269e+07, "51032135.286703", "%6f"}, + {__LINE__, 5.108373625126768e+08, "+510837362.512677", "%+f"}, + {__LINE__, 5.113097157183416e+07, "5.1131E+07", "%#.4E"}, + {__LINE__, 5.114452611789777e+08, "+5.11445E+08", "%+G"}, + {__LINE__, 5.117099184715288e-16, "5.1171E-16", "%G"}, + {__LINE__, 5.119910534665511e-13, "+5.11991E-13", "%+G"}, + {__LINE__, 5.121320931953720e+23, "+5.121321e+23", "%+#e"}, + {__LINE__, 5.121900318443998e+06, "5.121900e+06", "%e"}, + {__LINE__, 5.135698679084286e+00, "5.1357", "%2g"}, + {__LINE__, 5.146355903104154e-10, "+5.14636E-10", "%+.6G"}, + {__LINE__, 5.148754210958986e-24, "+5.148754e-24", "%+e"}, + {__LINE__, 5.156238368448428e+26, "5e+26", "%5.g"}, + {__LINE__, 5.159924520667922e-19, "+5E-19", "%+0.1G"}, + {__LINE__, 5.159938266135425e-27, "0.000000", "%f"}, + {__LINE__, 5.165915205175676e-01, "5.165915e-01", "%e"}, + {__LINE__, 5.190205499401547e-11, "5e-11", "%2.1g"}, + {__LINE__, 5.193260005542003e+26, "5.19326e+26", "%#g"}, + {__LINE__, 5.194732077318269e+08, "519473207.731827", "%f"}, + {__LINE__, 5.196394616633798e-19, "0", "%.0f"}, + {__LINE__, 5.206753628035638e+19, "5.20675e+19", "%6.6g"}, + {__LINE__, 5.207364136540851e-23, " 0.000", "%6.3f"}, + {__LINE__, 5.210672737132108e-09, "5.21067E-09", "%G"}, + {__LINE__, 5.211423933057123e-20, "+5.21142E-20", "%+G"}, + {__LINE__, 5.219749528363367e-27, "5.219750e-27", "%e"}, + {__LINE__, 5.228031587478653e-06, "+5.2E-06", "%+3.1E"}, + {__LINE__, 5.229303095005359e-25, "+0.000000", "%+#f"}, + {__LINE__, 5.234703511938320e-06, " 0", "%7.f"}, + {__LINE__, 5.235655046937822e-20, "5.235655E-20", "%.6E"}, + {__LINE__, 5.237924986002288e-01, "+0.52379", "%+.5f"}, + {__LINE__, 5.249148093603826e+20, "5.24915E+20", "%0G"}, + {__LINE__, 5.262680920244596e+16, "5.26268E+16", "%G"}, + {__LINE__, 5.267944704715845e-06, "5.e-06", "%#3.g"}, + {__LINE__, 5.268543533730505e-08, "5.26854E-08", "%G"}, + {__LINE__, 5.275727269515247e-02, "0.0527573", "%.6g"}, + {__LINE__, 5.279215316873723e+24, "5279215316873722585455652.733799", "%f"}, + {__LINE__, 5.284326985680811e+16, "52843269856808108.286828", "%6f"}, + {__LINE__, 5.286192957344040e-10, "5.3E-10", "%.1E"}, + {__LINE__, 5.289451976001091e-23, "5.28945E-23", "%G"}, + {__LINE__, 5.289512908209300e+09, "+5.289513e+09", "%+e"}, + {__LINE__, 5.295696957972123e+11, "5.296E+11", "%#.3E"}, + {__LINE__, 5.303584684011050e+16, "53035846840110503.208621", "%f"}, + {__LINE__, 5.310315581980172e+23, "531031558198017172855998", "%4.f"}, + {__LINE__, 5.317492728410062e-14, "5.31749e-14", "%7g"}, + {__LINE__, 5.324506949499409e+18, "5.3245E+18", "%.5G"}, + {__LINE__, 5.329238068668336e-20, "5e-20", "%4.g"}, + {__LINE__, 5.336050125161774e+14, "5.33605e+14", "%g"}, + {__LINE__, 5.349921315003169e-17, "5.34992E-17", "%.6G"}, + {__LINE__, 5.355648481782587e-20, "5.355648e-20", "%e"}, + {__LINE__, 5.358945557589489e-26, "+5e-26", "%+0.g"}, + {__LINE__, 5.359638846465574e+21, "5.359639E+21", "%E"}, + {__LINE__, 5.377048469393900e+14, "5.377E+14", "%.5G"}, + {__LINE__, 5.387471194156434e+23, "5.387471E+23", "%.7G"}, + {__LINE__, 5.401622578962497e-03, "+0.0054", "%+5.2g"}, + {__LINE__, 5.406882732497444e-16, "5.406883E-16", "%E"}, + {__LINE__, 5.421474560523198e-11, "+5.42147e-11", "%+g"}, + {__LINE__, 5.440249323479418e-26, "5.44025E-26", "%7G"}, + {__LINE__, 5.440922682921101e-05, "5e-05", "%.1g"}, + {__LINE__, 5.444400103673185e-01, "0.54444", "%G"}, + {__LINE__, 5.449339470916152e+09, "5449339470.9162", "%.4f"}, + {__LINE__, 5.451583259558706e-15, "5.e-15", "%#4.e"}, + {__LINE__, 5.460153018660573e+26, "+546015301866057267687892817.775719", "%+f"}, + {__LINE__, 5.477591210511918e+08, "+5.47759E+08", "%+0.5E"}, + {__LINE__, 5.481665401407188e-02, "5.481665e-02", "%e"}, + {__LINE__, 5.482670784411319e-16, "5E-16", "%4.G"}, + {__LINE__, 5.487494580636099e+12, "5.48749e+12", "%g"}, + {__LINE__, 5.508630369473937e-10, "5.508630e-10", "%e"}, + {__LINE__, 5.528898001438273e+20, "6e+20", "%4.g"}, + {__LINE__, 5.530331734443152e-24, " 6e-24", "%6.g"}, + {__LINE__, 5.531704398969656e-24, "0.000000", "%f"}, + {__LINE__, 5.539906569043238e+05, "+553990.656904", "%+f"}, + {__LINE__, 5.554571854756323e-08, "+0.00000", "%+4.5f"}, + {__LINE__, 5.555155069925145e-28, "5.55516e-28", "%g"}, + {__LINE__, 5.555302705075539e-08, "+5.5553e-08", "%+g"}, + {__LINE__, 5.563805076159055e-05, "5.563805e-05", "%e"}, + {__LINE__, 5.565063508995002e+07, "5.565E+07", "%.3E"}, + {__LINE__, 5.566281664807526e-08, "5.56628E-08", "%G"}, + {__LINE__, 5.575245679736338e-08, "5.575246e-08", "%e"}, + {__LINE__, 5.578254777281501e-21, "0.", "%#.0f"}, + {__LINE__, 5.582389275770848e-01, " 0.6", "%5.G"}, + {__LINE__, 5.592215029176133e-04, "0.00056", "%.2g"}, + {__LINE__, 5.593536789867047e-25, "5.59354e-25", "%g"}, + {__LINE__, 5.605652054074862e-03, " 0.006", "%8.G"}, + {__LINE__, 5.606982382643258e+20, "+5.60698E+20", "%+G"}, + {__LINE__, 5.614646821116853e-18, "5.6E-18", "%.2G"}, + {__LINE__, 5.625586848606565e-11, "+5.62559E-11", "%+G"}, + {__LINE__, 5.626300428046732e+26, " 6e+26", "%7.g"}, + {__LINE__, 5.638236626881086e-17, " 6E-17", "%6.G"}, + {__LINE__, 5.645744817075691e+04, "5.645745E+04", "%E"}, + {__LINE__, 5.651410004691736e+06, "6.E+06", "%#3.E"}, + {__LINE__, 5.659582345929256e-11, "+0.000000", "%+f"}, + {__LINE__, 5.670968861413510e+16, "+5.67097E+16", "%+G"}, + {__LINE__, 5.672476851235796e+01, "+56.724769", "%+0f"}, + {__LINE__, 5.674563779921248e+28, " 6E+28", "%6.0G"}, + {__LINE__, 5.675558529939025e+19, "5.67556e+19", "%3g"}, + {__LINE__, 5.676326888314589e-08, " 6e-08", "%7.g"}, + {__LINE__, 5.677928507840897e-30, "5.67793e-30", "%0g"}, + {__LINE__, 5.686622552402630e-15, "5.69E-15", "%1.3G"}, + {__LINE__, 5.710441686922142e-14, "5.710442E-14", "%E"}, + {__LINE__, 5.713234603280163e-21, "0.00000", "%0.5f"}, + {__LINE__, 5.714968959046963e+12, "5.71497e+12", "%g"}, + {__LINE__, 5.722025141555638e-23, "5.72e-23", "%.2e"}, + {__LINE__, 5.725398571007033e-09, "5.7254E-09", "%.6G"}, + {__LINE__, 5.751604813862738e+18, "6E+18", "%.1G"}, + {__LINE__, 5.761025444751985e+20, "5.76103e+20", "%g"}, + {__LINE__, 5.762315767948593e+15, "5.76232e+15", "%4g"}, + {__LINE__, 5.764528858586032e-15, "5.764529E-15", "%6.7G"}, + {__LINE__, 5.766408541535810e-07, " 6E-07", "%6.1G"}, + {__LINE__, 5.771831571087174e-01, "0.577183", "%f"}, + {__LINE__, 5.790102497364865e-15, "+5.790102e-15", "%+e"}, + {__LINE__, 5.790222335547785e-08, "5.79022e-08", "%0.6g"}, + {__LINE__, 5.794082127091130e+21, "5794082127091130018925.468903", "%f"}, + {__LINE__, 5.804568463644165e+28, "5.80457e+28", "%g"}, + {__LINE__, 5.827356651901066e+20, "582735665190106555400.006982", "%f"}, + {__LINE__, 5.837553387436408e+18, "5.837553E+18", "%3E"}, + {__LINE__, 5.844458110907209e+22, "5.84446e+22", "%g"}, + {__LINE__, 5.851672125746866e-19, "5.85167e-19", "%g"}, + {__LINE__, 5.868843476784172e-12, "5.868843e-12", "%1.7g"}, + {__LINE__, 5.870854146748864e-04, "0.000587", "%2.3g"}, + {__LINE__, 5.877787821470433e+01, "+58.77788", "%+#3.5f"}, + {__LINE__, 5.881333514866498e+04, "5.881334E+04", "%E"}, + {__LINE__, 5.908427816128965e+28, "+5.908428E+28", "%+E"}, + {__LINE__, 5.918139800007388e+07, "59181398.000074", "%f"}, + {__LINE__, 5.925587467475260e+21, "5925587467475259551008.548442", "%f"}, + {__LINE__, 5.930403502679683e-22, "5.9304E-22", "%.6G"}, + {__LINE__, 5.961572644847521e+02, "+596.157", "%+G"}, + {__LINE__, 5.968917715225198e-21, "5.96892e-21", "%4g"}, + {__LINE__, 5.982184454670110e-08, "0", "%0.f"}, + {__LINE__, 5.988414319040855e+09, "6E+09", "%0.G"}, + {__LINE__, 5.996263783103995e-10, "5.996264e-10", "%e"}, + {__LINE__, 6.004634162276014e-18, "6.00463e-18", "%g"}, + {__LINE__, 6.018734975519166e-08, "6.01873E-08", "%G"}, + {__LINE__, 6.029071822986717e-14, "0.0000000", "%.7f"}, + {__LINE__, 6.030392278117406e+23, "6.030392e+23", "%e"}, + {__LINE__, 6.034553399237175e-27, "+6.03455e-27", "%+g"}, + {__LINE__, 6.034938873443862e+24, "6034938873443861595546877.651941", "%f"}, + {__LINE__, 6.038929148003457e-16, "6.03893e-16", "%g"}, + {__LINE__, 6.039149626573702e-13, "6.0391E-13", "%3.5G"}, + {__LINE__, 6.041247664739301e+29, "6.041248E+29", "%3E"}, + {__LINE__, 6.044220746789781e+20, "+6.04422e+20", "%+g"}, + {__LINE__, 6.045775647107433e+19, "6E+19", "%2.G"}, + {__LINE__, 6.051917010461611e-05, "6.05192E-05", "%G"}, + {__LINE__, 6.059773181566425e+17, "+605977318156642486", "%+5.f"}, + {__LINE__, 6.082239575475813e+01, "+6E+01", "%+.1G"}, + {__LINE__, 6.093984174629151e+18, "6.093984e+18", "%e"}, + {__LINE__, 6.102368380479137e+22, "6.1E+22", "%.2G"}, + {__LINE__, 6.103097446204007e+25, "61030974462040070704915706.301108", "%#0f"}, + {__LINE__, 6.105244994410556e-24, "0.0000000", "%2.7f"}, + {__LINE__, 6.110828906801633e-14, "+6.110829e-14", "%+3e"}, + {__LINE__, 6.124439072468681e-30, "6.12444e-30", "%g"}, + {__LINE__, 6.127714703273447e-15, "0", "%0.f"}, + {__LINE__, 6.128539582408870e-15, "6.12854e-15", "%g"}, + {__LINE__, 6.145470264744349e+24, "6145470264744348654062378.045637", "%f"}, + {__LINE__, 6.159177701667455e+26, "615917770166745537352426254.074089", "%#f"}, + {__LINE__, 6.159348213337442e+17, "6.15935e+17", "%g"}, + {__LINE__, 6.161953891020492e-21, "0.000000", "%f"}, + {__LINE__, 6.169474192777305e+29, "+6.169E+29", "%+.4G"}, + {__LINE__, 6.198519761010651e-15, "+0", "%+1.f"}, + {__LINE__, 6.201381824304919e-27, " 0", "%5.f"}, + {__LINE__, 6.204387065736372e-18, "6.204387E-18", "%7E"}, + {__LINE__, 6.209270088144063e-24, "0.000000", "%f"}, + {__LINE__, 6.209871738353546e-20, "6.20987E-20", "%G"}, + {__LINE__, 6.222733191871026e+14, "+6.22273e+14", "%+g"}, + {__LINE__, 6.234670085354310e+04, "+62346.700854", "%+f"}, + {__LINE__, 6.258389346602224e-09, "6E-09", "%.0G"}, + {__LINE__, 6.263326582587503e+12, "6263326582588.", "%#5.f"}, + {__LINE__, 6.272768026763922e+03, "+6272.77", "%+g"}, + {__LINE__, 6.287747868625765e+00, "6E+00", "%.0E"}, + {__LINE__, 6.297724027388795e-17, "+6E-17", "%+3.G"}, + {__LINE__, 6.309940679156400e+27, "6.30994e+27", "%6.5e"}, + {__LINE__, 6.312960327030170e+06, "+6.312960E+06", "%+E"}, + {__LINE__, 6.317658179632976e+02, "+631.766", "%+g"}, + {__LINE__, 6.321255960699571e-27, "0.000000", "%f"}, + {__LINE__, 6.323069932833900e+03, "6323", "%.4G"}, + {__LINE__, 6.337027835933034e+21, "6.33703e+21", "%#g"}, + {__LINE__, 6.343583177899838e-03, "0.00634358", "%7G"}, + {__LINE__, 6.347464241733904e-03, "6.e-03", "%#0.e"}, + {__LINE__, 6.352038720353924e+07, "63520387.203539", "%f"}, + {__LINE__, 6.355292378565109e+23, "+635529237856510942350496.407016", "%+f"}, + {__LINE__, 6.377901944439164e-29, "0.000", "%2.3f"}, + {__LINE__, 6.378660255554053e-04, "6.37866E-04", "%.5E"}, + {__LINE__, 6.382838195255167e-18, "0.000000", "%f"}, + {__LINE__, 6.391046303581911e+22, "6E+22", "%.0G"}, + {__LINE__, 6.404812348309621e+22, "6.404812E+22", "%.7G"}, + {__LINE__, 6.406154091357119e+16, "6.40615E+16", "%G"}, + {__LINE__, 6.419414726557980e+21, "+6.41941e+21", "%+g"}, + {__LINE__, 6.432166563008504e+10, " +6e+10", "%+7.g"}, + {__LINE__, 6.438463704193190e+19, "6.438464e+19", "%e"}, + {__LINE__, 6.445270237908565e+15, "+6.445270E+15", "%+E"}, + {__LINE__, 6.445536770502964e+09, "6.446e+09", "%.3e"}, + {__LINE__, 6.446614224811444e+28, "64466142248114444157636171439.662576", "%f"}, + {__LINE__, 6.457046289718297e+18, "6457046289718297416.015957", "%4f"}, + {__LINE__, 6.457682856890173e+01, "6.457683E+01", "%2E"}, + {__LINE__, 6.471026352792729e-16, "+6.47103e-16", "%+g"}, + {__LINE__, 6.474527749567342e+19, "6E+19", "%.1G"}, + {__LINE__, 6.481178401781131e-24, "+6.48E-24", "%+6.3G"}, + {__LINE__, 6.490736647261461e-15, "+6.49074e-15", "%+g"}, + {__LINE__, 6.493196535069719e+23, "+6.4932E+23", "%+G"}, + {__LINE__, 6.500296992935538e-20, "+0.0", "%+.1f"}, + {__LINE__, 6.502867735895890e-19, "+0.000000", "%+6f"}, + {__LINE__, 6.506627529164683e+14, "650662752916468", "%5.f"}, + {__LINE__, 6.511909298966434e-15, "+6.51191E-15", "%+G"}, + {__LINE__, 6.514463062693312e+01, "65.1446", "%G"}, + {__LINE__, 6.520721469484543e+16, "6.52072E+16", "%G"}, + {__LINE__, 6.528064508731680e-05, "6.528065E-05", "%7E"}, + {__LINE__, 6.529007214194039e-24, "0.000000", "%f"}, + {__LINE__, 6.537822760557410e-23, "0.000000", "%f"}, + {__LINE__, 6.552222096390805e+29, "+6.55222E+29", "%+G"}, + {__LINE__, 6.554569862717104e+12, "6.55457E+12", "%G"}, + {__LINE__, 6.563440840359989e-30, "7E-30", "%4.G"}, + {__LINE__, 6.586246985535526e+17, "6.58625E+17", "%#4G"}, + {__LINE__, 6.593339522442827e+16, "6.6E+16", "%#4.1E"}, + {__LINE__, 6.611179030024350e+02, "7E+02", "%4.E"}, + {__LINE__, 6.617541638586767e-10, "6.617542E-10", "%E"}, + {__LINE__, 6.619147920886991e-28, "7e-28", "%.1g"}, + {__LINE__, 6.622304444772819e-21, "6.62230E-21", "%#4G"}, + {__LINE__, 6.634766655157910e+12, "6634766655158", "%2.f"}, + {__LINE__, 6.635639771921218e+25, "+6.63564E+25", "%+G"}, + {__LINE__, 6.644575305929087e+17, "+6.64458e+17", "%+g"}, + {__LINE__, 6.648697591328432e+04, "6.648698E+04", "%3E"}, + {__LINE__, 6.665426012448100e+09, "6.66543E+09", "%G"}, + {__LINE__, 6.675222780441723e-23, "6.67522e-23", "%1g"}, + {__LINE__, 6.689765053880623e+00, "6.6898", "%.5g"}, + {__LINE__, 6.693874943680238e+25, "7.e+25", "%#1.g"}, + {__LINE__, 6.695033453546435e+19, "6.695033E+19", "%E"}, + {__LINE__, 6.720131534244976e+03, "+6720.132", "%+.3f"}, + {__LINE__, 6.725287004784564e+19, "+6.72529e+19", "%+g"}, + {__LINE__, 6.743599626906313e-18, "0.0000000", "%7.7f"}, + {__LINE__, 6.755534260704152e+29, "7.e+29", "%#5.e"}, + {__LINE__, 6.761855244766418e-18, "6.8E-18", "%.2G"}, + {__LINE__, 6.764974143681080e-02, "6.765E-02", "%2.3E"}, + {__LINE__, 6.766924477711975e-17, "0.000000", "%4f"}, + {__LINE__, 6.772195434106330e-19, "6.7722E-19", "%G"}, + {__LINE__, 6.779433073319225e-23, "0.00", "%.2f"}, + {__LINE__, 6.790317710068964e+05, "6.8e+05", "%.1e"}, + {__LINE__, 6.791378160292960e+02, "679.137816", "%f"}, + {__LINE__, 6.798381262104190e-27, "0.000000", "%f"}, + {__LINE__, 6.804165939424860e-14, "7e-14", "%4.g"}, + {__LINE__, 6.810668670623699e+11, "681066867062.369852", "%f"}, + {__LINE__, 6.838942637635821e-17, "+6.84e-17", "%+.2e"}, + {__LINE__, 6.868523988329111e-09, "+6.868524e-09", "%+e"}, + {__LINE__, 6.873228061403223e-15, "6.873228E-15", "%3E"}, + {__LINE__, 6.879370500093334e-12, "+0.000000", "%+f"}, + {__LINE__, 6.891525498686674e-10, "7e-10", "%0.g"}, + {__LINE__, 6.923027319286220e+21, "7.e+21", "%#1.g"}, + {__LINE__, 6.923565533024560e-11, "+6.92357e-11", "%+g"}, + {__LINE__, 6.931415640770737e-24, "+6.93142e-24", "%+g"}, + {__LINE__, 6.936582619246057e+09, "6.936583e+09", "%7e"}, + {__LINE__, 6.938661496670582e+05, "693866.1496671", "%2.7f"}, + {__LINE__, 6.946115378286550e-25, "0.000000", "%f"}, + {__LINE__, 6.955823211921219e-09, "6.95582e-09", "%g"}, + {__LINE__, 6.962365243425770e+29, "696236524342577034474288666388.019919", "%7f"}, + {__LINE__, 6.970432274812882e+05, "+7e+05", "%+1.0e"}, + {__LINE__, 6.975784942897122e-13, "6.975785e-13", "%e"}, + {__LINE__, 6.976786489904214e-07, "6.97679E-07", "%3G"}, + {__LINE__, 6.985245976357042e-05, "0.00", "%.2f"}, + {__LINE__, 6.993402879410720e-21, "6.9934e-21", "%g"}, + {__LINE__, 7.012183985341519e+28, "+70121839853415188770213717362", "%+2.f"}, + {__LINE__, 7.028670648856025e-15, "7.028671e-15", "%.7g"}, + {__LINE__, 7.034042985683665e-03, " 0", "%2.f"}, + {__LINE__, 7.044054273278726e+18, "7.044e+18", "%7.4g"}, + {__LINE__, 7.049706744250734e-06, "7E-06", "%0.E"}, + {__LINE__, 7.061982657056197e+13, "+7.061983e+13", "%+e"}, + {__LINE__, 7.066873668945899e+21, "7.06687E+21", "%G"}, + {__LINE__, 7.087941418633258e+26, "7.08794E+26", "%G"}, + {__LINE__, 7.108268134631547e+22, "7.108268E+22", "%E"}, + {__LINE__, 7.112095848565475e-19, "7.1121e-19", "%g"}, + {__LINE__, 7.116326241291862e+16, "7.116326e+16", "%e"}, + {__LINE__, 7.118854843597607e-22, "0.000000", "%f"}, + {__LINE__, 7.121423043456375e-27, "0.000000", "%f"}, + {__LINE__, 7.131415427096460e-03, "0.007131", "%3f"}, + {__LINE__, 7.132023279679892e+22, "7.e+22", "%#3.e"}, + {__LINE__, 7.146250280189992e-18, "0.000000", "%f"}, + {__LINE__, 7.150059058390724e+03, "7150.06", "%g"}, + {__LINE__, 7.161081578177381e-02, "+0.0716108", "%+G"}, + {__LINE__, 7.164935125149336e-27, "7.2E-27", "%#6.2G"}, + {__LINE__, 7.173125717489549e-10, "7.173126e-10", "%e"}, + {__LINE__, 7.174199549624193e+00, "7.1741995", "%.7f"}, + {__LINE__, 7.192493588077649e+27, "7.19249e+27", "%g"}, + {__LINE__, 7.215209568601445e-06, "7.215210e-06", "%e"}, + {__LINE__, 7.238322284100497e+03, "7238.3", "%.1f"}, + {__LINE__, 7.239203871123613e+06, "7239204", "%4.f"}, + {__LINE__, 7.245809072577019e-09, "+7.245809E-09", "%+E"}, + {__LINE__, 7.256275686433336e+03, "7.256276e+03", "%e"}, + {__LINE__, 7.265774291605193e+27, "+7.26577E+27", "%+G"}, + {__LINE__, 7.287968172227119e-21, "+7.287968e-21", "%+e"}, + {__LINE__, 7.306020169678527e+12, "7E+12", "%2.E"}, + {__LINE__, 7.315587463572568e-04, "0.", "%#.0f"}, + {__LINE__, 7.324627764547963e+09, "7.324628E+09", "%#E"}, + {__LINE__, 7.331904966719081e-06, "+7.3319E-06", "%+G"}, + {__LINE__, 7.334448152798243e-02, "0.07", "%0.g"}, + {__LINE__, 7.334487195961240e-01, "+0.733449", "%+#g"}, + {__LINE__, 7.381283575515707e+13, "7.381284E+13", "%E"}, + {__LINE__, 7.394854567245476e-11, "0.000000", "%7f"}, + {__LINE__, 7.401950211415377e-08, " 7e-08", "%6.e"}, + {__LINE__, 7.409023867864680e+03, "7409.023868", "%#3f"}, + {__LINE__, 7.411912956257733e-20, "7e-20", "%0.g"}, + {__LINE__, 7.445275019272160e+11, "744527501927.2159511", "%.7f"}, + {__LINE__, 7.450279765616891e-16, "7.45028e-16", "%.6g"}, + {__LINE__, 7.467047411334495e+14, "7.46705E+14", "%G"}, + {__LINE__, 7.485628870972725e+28, "7E+28", "%.0G"}, + {__LINE__, 7.495391782588563e+11, "749539178258.856253", "%f"}, + {__LINE__, 7.495824101611911e+06, "7.49582e+06", "%.6g"}, + {__LINE__, 7.499759867592402e+20, "+749975986759240154100.3", "%+.1f"}, + {__LINE__, 7.508983397140368e+04, "75089.8", "%g"}, + {__LINE__, 7.512585199581016e-27, "7.512585E-27", "%.6E"}, + {__LINE__, 7.516831372212545e-29, "+7.516831e-29", "%+e"}, + {__LINE__, 7.525789465978582e+00, "7.52579", "%G"}, + {__LINE__, 7.528655653725963e+06, "7.5287e+06", "%3.4e"}, + {__LINE__, 7.533217421035612e+28, "75332174210356122046050586504.861712", "%f"}, + {__LINE__, 7.534147071756384e+03, "7534.15", "%g"}, + {__LINE__, 7.542648637430919e-25, "+0.000000", "%+#f"}, + {__LINE__, 7.554380140947798e-15, " 8e-15", "%7.g"}, + {__LINE__, 7.557366996007743e+25, " 8E+25", "%7.G"}, + {__LINE__, 7.579228950138068e+08, "8e+08", "%3.e"}, + {__LINE__, 7.579773904052487e-13, "0.000000", "%3f"}, + {__LINE__, 7.580377544554059e+27, "7.58038e+27", "%#g"}, + {__LINE__, 7.589615147875915e-15, "7.59E-15", "%.3G"}, + {__LINE__, 7.593317194045158e-12, "+0.", "%+#1.f"}, + {__LINE__, 7.605535657484387e-07, "7.60554E-07", "%G"}, + {__LINE__, 7.609171121278006e-08, " 0", "%5.f"}, + {__LINE__, 7.612033900317304e-14, "7.61203e-14", "%g"}, + {__LINE__, 7.628040858080326e+23, "+7.62804e+23", "%+g"}, + {__LINE__, 7.632109382948695e-01, "0.763211", "%#f"}, + {__LINE__, 7.633415922627254e+28, "76334159226272539910951309138.908982", "%#f"}, + {__LINE__, 7.636190400774419e+22, "+7.636190E+22", "%+E"}, + {__LINE__, 7.636228368661314e-23, "0.000000", "%f"}, + {__LINE__, 7.653292362739654e-17, "7.65329E-17", "%#G"}, + {__LINE__, 7.664044705231460e+03, "7.664045E+03", "%5E"}, + {__LINE__, 7.664257283149626e-05, "7.66426E-05", "%0G"}, + {__LINE__, 7.668996632821614e-19, " 0.0", "%4.1f"}, + {__LINE__, 7.674502669497263e-24, "7.6745e-24", "%g"}, + {__LINE__, 7.681870119755193e+12, "+7.68187e+12", "%+#g"}, + {__LINE__, 7.693453198401315e+02, "769.3453198", "%5.7f"}, + {__LINE__, 7.705080073293603e-29, "7.705080E-29", "%1E"}, + {__LINE__, 7.707244083934683e-07, "7.71E-07", "%2.3G"}, + {__LINE__, 7.749445584970652e-17, "7.75E-17", "%6.3G"}, + {__LINE__, 7.755369447889403e+09, "7.8e+09", "%#4.2g"}, + {__LINE__, 7.760378169707072e-06, "7.76038e-06", "%g"}, + {__LINE__, 7.763518882114968e-10, "0.000000", "%f"}, + {__LINE__, 7.764720069569677e-18, "0.000000", "%0f"}, + {__LINE__, 7.768821339438552e-03, "0.00776882", "%g"}, + {__LINE__, 7.774767835990679e-29, "7.774768E-29", "%7E"}, + {__LINE__, 7.805567188246987e-04, "0.000780557", "%2G"}, + {__LINE__, 7.825157442935941e-26, "0.000000", "%f"}, + {__LINE__, 7.833373563161910e+29, "+783337356316190991378789476584.643126", "%+f"}, + {__LINE__, 7.875872661746674e-16, "7.875873E-16", "%E"}, + {__LINE__, 7.880664458920439e-28, "7.881E-28", "%#0.3E"}, + {__LINE__, 7.893084198630288e+18, "7893084198630288206", "%1.f"}, + {__LINE__, 7.912222737877417e+04, "79122.2", "%G"}, + {__LINE__, 7.913004582748724e-26, "0.000000", "%f"}, + {__LINE__, 7.913749944463836e+17, "791374994446383617.230367", "%f"}, + {__LINE__, 7.923881665760883e-24, "0.000000", "%f"}, + {__LINE__, 7.926699779993694e-03, "0.007927", "%5.6f"}, + {__LINE__, 7.941991860623354e-20, "7.941992e-20", "%e"}, + {__LINE__, 7.942700358097138e+17, "794270035809713803.587329", "%2f"}, + {__LINE__, 7.945451569935757e-16, "7.94545E-16", "%#4.6G"}, + {__LINE__, 7.948277588625241e-04, "0", "%.0f"}, + {__LINE__, 7.952265062569124e+21, "+7.95227e+21", "%+#g"}, + {__LINE__, 7.959953534668040e+11, "8e+11", "%2.e"}, + {__LINE__, 7.962059154424500e-22, "7.96206E-22", "%G"}, + {__LINE__, 7.962856142535673e-26, "7.9629E-26", "%#.5G"}, + {__LINE__, 7.966528574505771e+12, "7.96653e+12", "%g"}, + {__LINE__, 8.006496880305429e-21, "8.0065E-21", "%G"}, + {__LINE__, 8.023374861440542e+06, "+8023375", "%+6.f"}, + {__LINE__, 8.041139717082990e-20, "8.04114e-20", "%g"}, + {__LINE__, 8.044201752824126e+15, "8.04420E+15", "%.5E"}, + {__LINE__, 8.044262927409321e-10, "+8E-10", "%+2.2G"}, + {__LINE__, 8.058285708061202e+02, "+8.058286e+02", "%+e"}, + {__LINE__, 8.104422320765144e+10, "8.10442e+10", "%#4g"}, + {__LINE__, 8.104572628022330e-11, "0.000000", "%f"}, + {__LINE__, 8.112156369917432e+15, "+8.11216E+15", "%+G"}, + {__LINE__, 8.114566569709531e-18, "8.11457E-18", "%G"}, + {__LINE__, 8.114795069552519e+13, "8.114795E+13", "%E"}, + {__LINE__, 8.121382719830660e+03, "8121.382720", "%f"}, + {__LINE__, 8.125179335533733e-12, "+8.125179e-12", "%+e"}, + {__LINE__, 8.126383949107055e+19, "81263839491070548604.056967", "%f"}, + {__LINE__, 8.129961701307842e-04, "+0.00081", "%+5.2g"}, + {__LINE__, 8.143780077390936e+15, "8.14378E+15", "%G"}, + {__LINE__, 8.149891507777399e+16, "+8E+16", "%+1.G"}, + {__LINE__, 8.167395708830107e+03, "8167", "%3.f"}, + {__LINE__, 8.167703619221975e+01, "81.677", "%G"}, + {__LINE__, 8.178463030771759e+06, "+8.17846E+06", "%+G"}, + {__LINE__, 8.188188531273697e+12, "8.18819E+12", "%G"}, + {__LINE__, 8.189094866416537e+11, "+8E+11", "%+.1G"}, + {__LINE__, 8.205086844365809e-18, "+8.205087E-18", "%+#E"}, + {__LINE__, 8.205762333408320e-26, "0.000000", "%f"}, + {__LINE__, 8.212370598174696e-10, "8.2124E-10", "%.5G"}, + {__LINE__, 8.228054316085489e-14, "0.000000", "%3f"}, + {__LINE__, 8.244313484402404e-16, "8.24431e-16", "%g"}, + {__LINE__, 8.244472235472472e+19, "8.24447E+19", "%G"}, + {__LINE__, 8.245421473302411e-09, "+8.2454e-09", "%+1.5g"}, + {__LINE__, 8.252286626634840e-22, "8E-22", "%3.G"}, + {__LINE__, 8.259969177912707e-19, "0.000000", "%f"}, + {__LINE__, 8.265769991725211e+18, "8.26577e+18", "%.5e"}, + {__LINE__, 8.293986939496488e+25, "8.3E+25", "%.1E"}, + {__LINE__, 8.310348813512608e-23, "+8.31035e-23", "%+g"}, + {__LINE__, 8.316951996533247e-20, "0.000000", "%f"}, + {__LINE__, 8.318818016883803e+05, " 8e+05", "%6.1g"}, + {__LINE__, 8.324896920131877e-13, "+8.324897e-13", "%+e"}, + {__LINE__, 8.325228630004624e-03, "0.0083252", "%5.7f"}, + {__LINE__, 8.332538660129034e+14, "8.3e+14", "%5.2g"}, + {__LINE__, 8.343325212751775e+07, "8.34333e+07", "%#4g"}, + {__LINE__, 8.363117398136236e+20, "+8.36e+20", "%+.3g"}, + {__LINE__, 8.364181324448165e+27, "8.36418e+27", "%#g"}, + {__LINE__, 8.372159259848738e+10, "8.37216e+10", "%4g"}, + {__LINE__, 8.379252006152759e-26, "8.37925e-26", "%g"}, + {__LINE__, 8.392670395720252e+09, "8392670395.720252", "%f"}, + {__LINE__, 8.423360059147756e+05, "+842336.", "%+#G"}, + {__LINE__, 8.425921213167943e+09, "8.425921e+09", "%1.7g"}, + {__LINE__, 8.431664412515776e-16, "8.43166E-16", "%#G"}, + {__LINE__, 8.448608859842500e+02, "844.861", "%1.3f"}, + {__LINE__, 8.456292247478771e-14, "8.45629E-14", "%G"}, + {__LINE__, 8.460077225296853e-04, "0.000846008", "%G"}, + {__LINE__, 8.478635925746218e-10, "0.000000", "%f"}, + {__LINE__, 8.492455774427448e+06, "8.49246e+06", "%g"}, + {__LINE__, 8.494450528380746e-07, "8.494451e-07", "%e"}, + {__LINE__, 8.516435842947605e-23, "+0.000000", "%+1f"}, + {__LINE__, 8.519057789029134e-18, "0.000000", "%0f"}, + {__LINE__, 8.522602111109066e+18, " 9.e+18", "%#7.g"}, + {__LINE__, 8.529176788022152e-24, "8.529E-24", "%0.4G"}, + {__LINE__, 8.534979605642793e-07, "0.000001", "%f"}, + {__LINE__, 8.546859563634342e-07, "8.546860E-07", "%E"}, + {__LINE__, 8.552370027054106e+12, "9e+12", "%.0g"}, + {__LINE__, 8.561781328234041e+10, "8.56178e+10", "%4g"}, + {__LINE__, 8.562688793145107e-20, "8.562689e-20", "%1.7g"}, + {__LINE__, 8.573130147270046e-07, " 9E-07", "%7.G"}, + {__LINE__, 8.584571984387802e-18, "8.5846e-18", "%.5g"}, + {__LINE__, 8.596407996491291e+11, "8.596408E+11", "%#E"}, + {__LINE__, 8.604843726850381e+10, " 9E+10", "%6.G"}, + {__LINE__, 8.626884271938994e-23, "8.62688e-23", "%g"}, + {__LINE__, 8.631140282429168e+24, "8631140282429168308908629.", "%#.0f"}, + {__LINE__, 8.635194331917948e-16, "8.63519E-16", "%G"}, + {__LINE__, 8.641417311588688e-24, "+0.000000", "%+f"}, + {__LINE__, 8.649120264278466e+26, "8.65E+26", "%1.3G"}, + {__LINE__, 8.649745523383894e+06, "8.649746e+06", "%e"}, + {__LINE__, 8.654720740091021e+16, "8.65472e+16", "%g"}, + {__LINE__, 8.655445556834509e-08, "9e-08", "%4.g"}, + {__LINE__, 8.658954696751902e+06, "8.65895E+06", "%G"}, + {__LINE__, 8.665712368800818e-10, "+8.66571E-10", "%+G"}, + {__LINE__, 8.666937057116442e-10, "8.666937e-10", "%e"}, + {__LINE__, 8.670981239765155e+05, "867098", "%G"}, + {__LINE__, 8.679631934294932e-25, "+9.E-25", "%+#0.G"}, + {__LINE__, 8.683595173050962e-21, "8.68360E-21", "%#G"}, + {__LINE__, 8.684938704958039e+25, "8.684939E+25", "%E"}, + {__LINE__, 8.686745463281227e-12, "8.686745E-12", "%5.7G"}, + {__LINE__, 8.700227628706534e-12, "8.700228e-12", "%#e"}, + {__LINE__, 8.705101179577200e+04, "87051.011796", "%#2f"}, + {__LINE__, 8.707824829984700e-24, "9e-24", "%.1g"}, + {__LINE__, 8.717654041009233e+21, "+9E+21", "%+6.0E"}, + {__LINE__, 8.741736299906572e-11, "8.74174E-11", "%#0G"}, + {__LINE__, 8.742228350419966e+18, "+8742228350419965821.060941", "%+f"}, + {__LINE__, 8.743045146087558e-17, "+8.74305E-17", "%+2G"}, + {__LINE__, 8.747820269457588e+18, "8.74782E+18", "%G"}, + {__LINE__, 8.756274717008537e-28, "8.756275E-28", "%E"}, + {__LINE__, 8.769782309254687e-24, "+8.769782E-24", "%+2.6E"}, + {__LINE__, 8.788151659193398e-16, " 9E-16", "%6.E"}, + {__LINE__, 8.789514812202340e-07, "9E-07", "%0.G"}, + {__LINE__, 8.792657843164822e-07, "8.79266e-07", "%0g"}, + {__LINE__, 8.810976223440985e+05, "881097.622344", "%f"}, + {__LINE__, 8.822553973113614e+10, "8.82255E+10", "%G"}, + {__LINE__, 8.839440421530611e-04, "0.000883944", "%G"}, + {__LINE__, 8.842539073558434e-12, "0", "%1.f"}, + {__LINE__, 8.882818021261782e-13, "+8.9e-13", "%+4.2g"}, + {__LINE__, 8.899833909201039e+05, "8.8998E+05", "%.5G"}, + {__LINE__, 8.903167498000181e-13, "9e-13", "%0.g"}, + {__LINE__, 8.933727737932164e+09, "+8933727738", "%+4.f"}, + {__LINE__, 8.946226267100711e+06, "8.946E+06", "%1.4G"}, + {__LINE__, 8.953203780849794e-21, "8.9532E-21", "%G"}, + {__LINE__, 8.959934262635649e+28, "+8.959934e+28", "%+e"}, + {__LINE__, 8.969485341781558e-25, "0.000000", "%#f"}, + {__LINE__, 8.970058187654221e+02, "897.005819", "%f"}, + {__LINE__, 8.979846508565979e+02, "8.979847E+02", "%E"}, + {__LINE__, 8.984561117901212e+01, "8.984561E+01", "%E"}, + {__LINE__, 8.992157765875611e-12, "8.99216e-12", "%g"}, + {__LINE__, 9.004487016708012e+01, "9.004487e+01", "%#e"}, + {__LINE__, 9.007306978283218e-24, "9.007307e-24", "%e"}, + {__LINE__, 9.014546375043562e+17, "901454637504356171.007203", "%#3f"}, + {__LINE__, 9.028177786002161e-12, "9.02818E-12", "%G"}, + {__LINE__, 9.029635986381795e-02, "0.09", "%.1g"}, + {__LINE__, 9.032389962233431e-07, "+0.000001", "%+f"}, + {__LINE__, 9.038466945070887e+10, "+9.038467E+10", "%+E"}, + {__LINE__, 9.040166964322772e-27, "9.04017e-27", "%g"}, + {__LINE__, 9.044627673694681e-11, "9.04463E-11", "%G"}, + {__LINE__, 9.045906217628948e+17, "904590621762894819.823941", "%1f"}, + {__LINE__, 9.051764975661710e+11, "9.05176e+11", "%#g"}, + {__LINE__, 9.053142913711405e+29, "9.053143e+29", "%#e"}, + {__LINE__, 9.073185209160657e-19, "+9.07319e-19", "%+g"}, + {__LINE__, 9.074372574441451e+02, "907.437", "%g"}, + {__LINE__, 9.084624602048136e+08, "9.084625E+08", "%E"}, + {__LINE__, 9.088839346363631e+18, "9.09e+18", "%.2e"}, + {__LINE__, 9.091945159170871e-15, "9.09195e-15", "%5g"}, + {__LINE__, 9.115304318083716e+10, "9.115304e+10", "%e"}, + {__LINE__, 9.115978352902710e+28, "9.11598E+28", "%G"}, + {__LINE__, 9.121415008221017e-17, "9.E-17", "%#6.G"}, + {__LINE__, 9.127270978060388e+18, "9.E+18", "%#5.G"}, + {__LINE__, 9.143941729069086e+08, "9.143942E+08", "%#E"}, + {__LINE__, 9.162740105978580e-19, " 9.E-19", "%#7.G"}, + {__LINE__, 9.221509957559626e-18, "9.22151e-18", "%g"}, + {__LINE__, 9.227419774250317e-28, " 0.", "%#3.f"}, + {__LINE__, 9.230846660807540e-21, "0.000000", "%f"}, + {__LINE__, 9.238091727277130e-06, "+0.00001", "%+.5f"}, + {__LINE__, 9.244337357684406e+10, "9E+10", "%5.G"}, + {__LINE__, 9.259179793993285e-19, " 9E-19", "%7.0G"}, + {__LINE__, 9.274068541525759e-17, "9.274069e-17", "%e"}, + {__LINE__, 9.283833535882367e+16, "9.28383e+16", "%#g"}, + {__LINE__, 9.295693096364605e+11, "+9.295693E+11", "%+E"}, + {__LINE__, 9.301820438602407e+05, "930182", "%G"}, + {__LINE__, 9.322805251555376e-29, "9e-29", "%1.e"}, + {__LINE__, 9.358443042421307e-27, "9.35844e-27", "%g"}, + {__LINE__, 9.372658444745124e-23, "9.372658e-23", "%e"}, + {__LINE__, 9.380302971355292e+05, "938030.3", "%.7g"}, + {__LINE__, 9.381976354968076e-26, "+9.382E-26", "%+5.4G"}, + {__LINE__, 9.391072061980585e-15, "9.391072E-15", "%E"}, + {__LINE__, 9.403554117166546e-06, "0.000009", "%f"}, + {__LINE__, 9.403712900426614e-28, "9.40371e-28", "%g"}, + {__LINE__, 9.419046629820578e+03, "9419.046630", "%f"}, + {__LINE__, 9.422344695378412e+22, "94223446953784115720509.362291", "%f"}, + {__LINE__, 9.433327680467576e+01, "9.433328e+01", "%e"}, + {__LINE__, 9.443975205260596e+20, "9.44398e+20", "%g"}, + {__LINE__, 9.445134851965593e-04, "+9.445135E-04", "%+E"}, + {__LINE__, 9.448403585149890e+24, "9e+24", "%0.g"}, + {__LINE__, 9.463149430113036e+18, "9.46315e+18", "%g"}, + {__LINE__, 9.465735160722534e+27, "+9465735160722534402566452627.070248", "%+f"}, + {__LINE__, 9.495210794344892e-04, "0.000950", "%f"}, + {__LINE__, 9.501916506373814e-25, "9.50192E-25", "%#G"}, + {__LINE__, 9.514641335897739e+29, "9.51464E+29", "%G"}, + {__LINE__, 9.524633436992819e-04, " 0.001", "%6.G"}, + {__LINE__, 9.530925101873022e-18, "9.530925e-18", "%2e"}, + {__LINE__, 9.557903833216979e-22, "9.557904E-22", "%E"}, + {__LINE__, 9.587709102390903e-01, " 1", "%2.f"}, + {__LINE__, 9.592723000828453e-02, "9.592723E-02", "%5E"}, + {__LINE__, 9.603430008794172e+27, "9.60343e+27", "%g"}, + {__LINE__, 9.622648414989433e-18, "9.622648e-18", "%1e"}, + {__LINE__, 9.633326171289319e-23, "9.633326e-23", "%e"}, + {__LINE__, 9.662064616152408e+19, "96620646161524081918.5146393", "%1.7f"}, + {__LINE__, 9.668544846563163e-23, "9.668545e-23", "%e"}, + {__LINE__, 9.691014191346685e+28, "9.69101E+28", "%G"}, + {__LINE__, 9.693075414840598e+02, "+969.308", "%+G"}, + {__LINE__, 9.695013453291907e-30, "9.695013e-30", "%5e"}, + {__LINE__, 9.705983477801926e-24, "9.70598e-24", "%g"}, + {__LINE__, 9.709022568030226e-17, "0.000000", "%f"}, + {__LINE__, 9.715194901854826e+20, "9.715195e+20", "%e"}, + {__LINE__, 9.721011821337717e+16, "1E+17", "%0.G"}, + {__LINE__, 9.734895542899672e+14, "9.734896e+14", "%e"}, + {__LINE__, 9.741486438769710e-29, " 1e-28", "%6.g"}, + {__LINE__, 9.766657482315475e-24, "9.76666E-24", "%7G"}, + {__LINE__, 9.767283293054552e-02, "0.09767", "%5.5f"}, + {__LINE__, 9.769553159146005e-20, "9.76955E-20", "%G"}, + {__LINE__, 9.777220880605434e-10, "0.00", "%4.2f"}, + {__LINE__, 9.790290569034575e+20, "979029056903457473027.", "%#6.f"}, + {__LINE__, 9.793128245822718e-01, "0.979313", "%G"}, + {__LINE__, 9.804758536498200e+08, "980475853.650", "%.3f"}, + {__LINE__, 9.816883664191066e-02, "0.1", "%.0g"}, + {__LINE__, 9.836109821010300e+25, "9.83611e+25", "%g"}, + {__LINE__, 9.846197559631225e+03, "1E+04", "%2.G"}, + {__LINE__, 9.863289416819924e+12, "9.86329e+12", "%g"}, + {__LINE__, 9.865893798657353e+12, "9.866e+12", "%0.4g"}, + {__LINE__, 9.868248446640862e-15, "0.000000", "%#f"}, + {__LINE__, 9.869973080775134e+04, "98699.7", "%G"}, + {__LINE__, 9.899444006312953e+20, "1E+21", "%.1G"}, + {__LINE__, 9.904083146074285e-08, "9.904083e-08", "%6e"}, + {__LINE__, 9.909790408255471e+15, "9909790408255471.305665", "%f"}, + {__LINE__, 9.930297455798394e-13, "+9.930297E-13", "%+5.6E"}, + {__LINE__, 9.933314448709083e-15, "9.93331E-15", "%#.6G"}, + {__LINE__, 9.938714530509870e+29, "9.938715e+29", "%e"}, + {__LINE__, 9.953892603540162e+07, "9.95389E+07", "%G"}, + {__LINE__, 9.962084643867200e+14, "+996208464386720.038419", "%+f"}, + {__LINE__, 9.977706708809947e-09, "9.9777E-09", "%#.4E"}, +#endif + {__LINE__, 9.978034352999867e+15, "9.978034e+15", "%2.6e"}, + {__LINE__, 9.998315286730175e-30, "9.998315e-30", "%6e"}, + {__LINE__, 1.25, "1.2", "%.1f"}, + {__LINE__, 11.25, "11.2", "%.1f"}, + {__LINE__, 1.75, "1.8", "%.1f"}, + {__LINE__, 11.75, "11.8", "%.1f"}, + {__LINE__, 16, "0x1.0p+4", "%.1a"}, + {__LINE__, 16, "0x1.00000000000000000000p+4", "%.20a"}, + {__LINE__, 4444.88888888, "4445", "%2.F"}, + {__LINE__, 0.956, "1", "%.0g"}, + {__LINE__, 1.0956, "1.", "%#.0g"}, + {__LINE__, 0.956, "1.", "%#.0g"}, + {__LINE__, 0.0956, "0.1", "%#.0g"}, + {__LINE__, 0.00956, "0.01", "%#.0g"}, + {__LINE__, 0.000956, "0.001", "%#.0g"}, + {__LINE__, 0.000098, "0.0001", "%#.0g"}, + {__LINE__, 0.0000996, "0.00010", "%#.2g"}, + {__LINE__, 9.999999999999999e-05, "0.0001", "%g"}, + {__LINE__, 1.0, "1.000000e+00", "%e"}, + {__LINE__, .9999999999999999, "1.000000e+00", "%e"}, + + {__LINE__, 912.98, "913.0", "%#.4g"}, + {__LINE__, 50.999999, "51.000", "%#.5g"}, + {__LINE__, 0.956, "1", "%.1g"}, + {__LINE__, 0.956, "1.", "%#.1g"}, + {__LINE__, 0.996, "1", "%.2g"}, + {__LINE__, 0.996, "1.0", "%#.2g"}, + {__LINE__, 999.98, "1000", "%.4g"}, + {__LINE__, 999.98, "1000.", "%#.4g"}, + {__LINE__, 999.998, "1000", "%.5g"}, + {__LINE__, 999.998, "1000.0", "%#.5g"}, + {__LINE__, 999.9998, "1000", "%g"}, + {__LINE__, 999.9998, "1000.00", "%#g"}, + {__LINE__, 912.98, "913", "%.4g"}, + {__LINE__, 50.999999, "51", "%.5g"}, + + {0 } + +}; + +/* matches(s1, s2) is true if s1 is "approximately" equal to s2. + Any digits after the first required_precision digits do not have to match. + */ + +int required_precision = 13; + +static int +matches (char *result, const char *desired) +{ + int digits_seen = 0; + for (;; result++, desired++) { + if (*result == *desired) { + if (*result == 0) + return 1; + else if (*result >= '0' && *result <= '9') + digits_seen++; + } + else if (digits_seen >= required_precision + && *result >= '0' && *result <= '9' + && *desired >= '0' && *desired <= '9') + continue; + else + return 0; + } +} + +int main(int argc, char *argv[]) +{ + int errcount = 0; + int testcount = 0; + double d; +#define BSIZE 1024 + char buffer[BSIZE]; + sprint_double_type *dptr; + for (dptr = sprint_doubles; dptr->line; dptr++) + { + sprintf (buffer, dptr->format_string, dptr->value); + if (!matches(buffer, dptr->result)) + { + errcount++; + printf( + "Error in line %d using \"%s\". Result is \"%s\"; should be: \"%s\".\n", + dptr->line, dptr->format_string, buffer, dptr->result); + } + + sprintf (buffer, "%.999g", dptr->value); + sscanf (buffer, "%lg", &d); + if (dptr->value != d) + { + errcount++; + printf ("Error in line %d. String is \"%s\", value is %g.\n", + dptr->line, buffer, d); + } + testcount++; + } + + /* And one special test. */ + { + static const char ref[] = "1.7763568394002504646778106689453125e-15"; + int i; + d = 1.0; + for (i = 1; i < 50; ++i) + d /= 2; + sprintf (buffer, "%.100g", d); + if (!matches (buffer, ref)) + { + ++errcount; + printf ( + "Error in line %d using \"%s\". Result is \"%s\"; should be: \"%s\".\n", + __LINE__, "%.100g", buffer, ref); + } + } + + if (errcount == 0) + { + printf("Encountered no errors in %d tests.\n", testcount); + return 0; + } + else + { + printf("Encountered %d errors in %d tests.\n", + errcount, testcount); + return 1; + } +} diff --git a/REORG.TODO/stdio-common/tiformat.c b/REORG.TODO/stdio-common/tiformat.c new file mode 100644 index 0000000000..4d2eeb3002 --- /dev/null +++ b/REORG.TODO/stdio-common/tiformat.c @@ -0,0 +1,5070 @@ +#include <stdio.h> +#include <string.h> + +/* Tests taken from Cygnus C library. */ +typedef struct { + int line; + long value; + const char *result; + const char *format_string; +} sprint_int_type; + +sprint_int_type sprint_ints[] = +{ + {__LINE__, 0x000838d2, "838d2", "%.4x"}, + {__LINE__, 0x0063be46, "63BE46", "%-6X"}, + {__LINE__, -0x1b236c0, "-28456640", "%#0.d"}, + {__LINE__, -0x0000003, "-3", "% 0d"}, + {__LINE__, 0x0000ed51, "ed51", "%2.x"}, + {__LINE__, -0x00001f2, "-498", "%1ld"}, + {__LINE__, 0x0ea3e927, "EA3E927", "%+X"}, + {__LINE__, 0xffbef8da, "FFBEF8DA", "%5X"}, + {__LINE__, 0x62ff9f56, "62ff9f56", "%0x"}, + {__LINE__, 0x00000ad2, "AD2", "%.0X"}, + {__LINE__, 0x00000000, " ", "% 6.ld"}, + {__LINE__, 0xffffffff, "FFFFFFFF", "%1.4X"}, + {__LINE__, 0x0000208c, " 208C", "%5X"}, + {__LINE__, 0x0000003c, "3c", "%x"}, + {__LINE__, 0xffff6177, "0xffff6177", "%+#x"}, + {__LINE__, 0xffffdc8d, "ffffdc8d", "%+x"}, + {__LINE__, 0x00000000, "0", "%X"}, + {__LINE__, 0x00002434, "9268", "%0d"}, + {__LINE__, 0xd2c72cdb, "d2c72cdb", "%-x"}, + {__LINE__, 0xfe38012b, "0xfe38012b", "%+#7x"}, + {__LINE__, 0x00000001, "0001", "%#.4d"}, + {__LINE__, -0x008525a, "-0545370", "%06.7ld"}, + {__LINE__, 0xffffffac, "ffffffac", "%3.7x"}, + {__LINE__, 0x007424d2, "+7611602", "%+ld"}, + {__LINE__, 0x00001a85, "1A85", "%.4X"}, + {__LINE__, -0x0000019, "-25", "%3.d"}, + {__LINE__, 0xfffffffe, "fffffffe", "%-x"}, + {__LINE__, -0x34473b2, "-54817714", "% d"}, + {__LINE__, 0x000000ea, "234", "%1.ld"}, + {__LINE__, -0x0000004, "-4 ", "%-7.ld"}, + {__LINE__, 0x00006c94, "27796", "%0d"}, + {__LINE__, 0x00000001, "1", "%ld"}, + {__LINE__, 0x00000619, "619", "%1x"}, + {__LINE__, 0x0000209c, "8348", "%ld"}, + {__LINE__, -0x327f8ff, "-52951295", "%-0ld"}, + {__LINE__, 0xffffff0b, "FFFFFF0B", "%2.X"}, + {__LINE__, 0xf199d6ae, "F199D6AE", "%X"}, + {__LINE__, 0x3ca5602e, "1017471022", "%-1.ld"}, + {__LINE__, -0xfb2080b, "-263325707", "%3.5d"}, + {__LINE__, 0x00001cb8, "7352", "%d"}, + {__LINE__, 0x00000000, "0000000", "%3.7d"}, + {__LINE__, 0xffffff40, "FFFFFF40", "%+X"}, + {__LINE__, 0x14664450, "0x14664450", "%#x"}, + {__LINE__, 0x0000002e, "2e", "%1x"}, + {__LINE__, 0xffffffff, "ffffffff", "%x"}, + {__LINE__, 0xffff606a, "0XFFFF606A", "%#X"}, + {__LINE__, 0xffffff33, "0XFFFFFF33", "%#X"}, + {__LINE__, 0x00000000, "0", "%d"}, + {__LINE__, -0x0000012, "-00018", "%-2.5d"}, + {__LINE__, 0x0001fbe6, "130022", "%1.d"}, + {__LINE__, 0xfff59dd9, "fff59dd9", "%+x"}, + {__LINE__, 0x00000002, "2", "%0.0d"}, + {__LINE__, 0x00000fe1, "fe1 ", "%-7.x"}, + {__LINE__, 0x001f8f6a, "1F8F6A", "%1.X"}, + {__LINE__, 0x0000001b, "000001B", "%04.7X"}, + {__LINE__, 0x126a2609, " 308946441", "% 4d"}, + {__LINE__, 0xffffffe3, "0XFFFFFFE3", "%+#.1X"}, + {__LINE__, 0x1858f1c9, "1858f1c9", "%.3x"}, + {__LINE__, 0x003fc672, "3fc672", "%1x"}, + {__LINE__, 0x00c0bddc, "12631516", "%#d"}, + {__LINE__, 0x000006d6, "1750", "%#d"}, + {__LINE__, 0x000006a0, "6A0", "%X"}, + {__LINE__, 0x000007be, "7BE", "%X"}, + {__LINE__, -0x1c7cd1a, "-29871386", "%ld"}, + {__LINE__, 0x000000cc, "204", "%ld"}, + {__LINE__, 0x000002db, "731 ", "%-#5d"}, + {__LINE__, 0xffff67ad, "FFFF67AD", "% X"}, + {__LINE__, 0x00000008, "8", "%d"}, + {__LINE__, 0xffe07007, "FFE07007", "%5X"}, + {__LINE__, -0x0000001, " -1", "% 7d"}, + {__LINE__, 0xfffffffe, "fffffffe", "%x"}, + {__LINE__, 0x00027b68, "+162664", "%+ld"}, + {__LINE__, 0x0a7c1997, "+175905175", "%+2ld"}, + {__LINE__, 0xfe300896, "fe300896", "%.4x"}, + {__LINE__, 0x00000537, "537", "%-0.x"}, + {__LINE__, 0x3e981779, "3e981779", "%.6x"}, + {__LINE__, 0xfffff05e, "FFFFF05E", "%1.0X"}, + {__LINE__, -0x07bc0cf, "-8110287", "%-7d"}, + {__LINE__, -0x01371bc, "-1274300", "%.7ld"}, + {__LINE__, -0x0000013, "-19", "%.2ld"}, + {__LINE__, 0x000000d1, "0xd1", "%#x"}, + {__LINE__, -0x0000003, "-3", "%-ld"}, + {__LINE__, 0xfffffffc, "FFFFFFFC", "%4.1X"}, + {__LINE__, 0x00000000, "0", "%ld"}, + {__LINE__, 0x0001c8af, "116911", "%d"}, + {__LINE__, 0x000048c3, "48C3", "%X"}, + {__LINE__, 0x00000079, "0x0000079", "%-#0.7x"}, + {__LINE__, 0x0000615a, " 24922", "% d"}, + {__LINE__, 0xfffffff5, "fffffff5", "%x"}, + {__LINE__, 0x00000308, "0000308", "%+07.7x"}, + {__LINE__, 0xfcadc983, "fcadc983", "%x"}, + {__LINE__, 0x00000097, "151", "%#d"}, + {__LINE__, 0x000001c5, "453", "%0.2ld"}, + {__LINE__, 0x00000000, "00", "%-1.2x"}, + {__LINE__, 0x00000001, "+1", "%+02.d"}, + {__LINE__, 0x01eb4354, "1EB4354", "% X"}, + {__LINE__, 0xffffa7d1, "ffffa7d1", "%5.x"}, + {__LINE__, 0x0003170e, "0x3170e", "%#x"}, + {__LINE__, 0x000001ce, "1CE", "% .2X"}, + {__LINE__, 0x3a2991fb, "975802875", "%d"}, + {__LINE__, -0xcdad8e2, "-215668962", "%-d"}, + {__LINE__, 0xfe0261c3, "fe0261c3", "%x"}, + {__LINE__, -0x0006ea7, "-28327", "% ld"}, + {__LINE__, 0x032854a3, "0X32854A3", "% #6X"}, + {__LINE__, 0x0000004b, "4b", "%x"}, + {__LINE__, 0xffff6ca3, "FFFF6CA3", "%4.X"}, + {__LINE__, 0x00000000, "0", "%X"}, + {__LINE__, 0x00611f04, "611F04", "%.1X"}, + {__LINE__, 0x00000000, " 0", "%#6d"}, + {__LINE__, 0x0002c711, "2c711", "%-02.x"}, + {__LINE__, -0x07a2fe4, "-8007652", "%d"}, + {__LINE__, -0x0000547, "-1351", "%ld"}, + {__LINE__, 0x00013954, "0x13954", "%#x"}, + {__LINE__, -0x00523b7, "-336823", "%ld"}, + {__LINE__, -0x00f6c6e, "-1010798", "%6.ld"}, + {__LINE__, 0xffea6427, "FFEA6427", "%3X"}, + {__LINE__, -0x0000005, "-5", "%d"}, + {__LINE__, -0x04fe618, "-5236248", "% .7d"}, + {__LINE__, 0xffa80a28, "ffa80a28", "%-0x"}, + {__LINE__, 0x00000047, "71", "%ld"}, + {__LINE__, 0x001dc6bb, "1951419", "%#4ld"}, + {__LINE__, 0x00000868, " 2152", "%#6d"}, + {__LINE__, 0x000002fb, "2fb", "%x"}, + {__LINE__, 0x00607fa0, "6324128", "%4d"}, + {__LINE__, 0xfffed161, "fffed161", "%x"}, + {__LINE__, 0x0001c6e4, " 116452", "% 2.5d"}, + {__LINE__, 0x0003dda8, "3DDA8", "%4X"}, + {__LINE__, 0xfffffff8, "fffffff8", "%x"}, + {__LINE__, 0xfacf664a, "facf664a", "%x"}, + {__LINE__, 0x000000c1, "C1", "% 1X"}, + {__LINE__, 0x0000839c, " 839C", "%6X"}, + {__LINE__, 0xfffff69a, "FFFFF69A", "%X"}, + {__LINE__, 0x000e5c2e, "+941102", "%+d"}, + {__LINE__, -0x0000004, "-4", "%#d"}, + {__LINE__, 0x00000000, "00000", "%#.5ld"}, + {__LINE__, 0xfffffffe, "fffffffe", "%3.1x"}, + {__LINE__, 0x0010ed68, "1109352", "%-ld"}, + {__LINE__, 0xffffffe9, "ffffffe9", "%.6x"}, + {__LINE__, 0x00000007, " 7", "% 4.ld"}, + {__LINE__, 0x0000caba, "51898", "%ld"}, + {__LINE__, -0x0000119, "-281", "% d"}, + {__LINE__, 0x0c3012a9, "204477097", "%03.6ld"}, + {__LINE__, -0x001c98f, "-117135", "%ld"}, + {__LINE__, 0x000017b1, "+6065", "%+d"}, + {__LINE__, 0x00000001, "1", "%ld"}, + {__LINE__, -0x0000019, "-25", "% .2d"}, + {__LINE__, 0x0009ae28, "9AE28", "%X"}, + {__LINE__, 0xe861c4fe, "e861c4fe", "%7.x"}, + {__LINE__, 0xffac88d3, "FFAC88D3", "%X"}, + {__LINE__, -0x00005df, "-01503", "%-5.5ld"}, + {__LINE__, 0x0000013e, "318", "%-0d"}, + {__LINE__, 0x04b6f58f, "4b6f58f", "%x"}, + {__LINE__, 0xfffe3978, "fffe3978", "%+0.6x"}, + {__LINE__, 0x57ee5244, "57ee5244", "%+7.4x"}, + {__LINE__, 0xfffb5610, "fffb5610", "% 6x"}, + {__LINE__, 0x00000006, " 6", "%#7d"}, + {__LINE__, 0x0000000c, "0x0000c", "%#.5x"}, + {__LINE__, -0xec59362, "-247829346", "%1.7d"}, + {__LINE__, -0x0000001, "-1", "%ld"}, + {__LINE__, -0x0007e4b, "-32331", "% d"}, + {__LINE__, 0x0ececa6f, "248433263", "%0d"}, + {__LINE__, 0x00000578, " 578", "%+6.x"}, + {__LINE__, -0x0000003, "-3", "%ld"}, + {__LINE__, 0x000002bb, "2bb", "% 0x"}, + {__LINE__, -0x0000006, "-6", "%-ld"}, + {__LINE__, 0x000002f9, "761", "%d"}, + {__LINE__, 0xffffd736, "ffffd736", "%3.4x"}, + {__LINE__, 0x0010ba79, "1096313", "%7.4d"}, + {__LINE__, -0x0001244, "-4676", "%#.1d"}, + {__LINE__, 0x00000dbe, "DBE", "%1X"}, + {__LINE__, -0x0000015, "-21", "%-0.d"}, + {__LINE__, 0xffffffff, "0xffffffff", "%#x"}, + {__LINE__, -0x6cdf4a3, "-114160803", "%ld"}, + {__LINE__, 0x00008ac9, "8AC9", "%1X"}, + {__LINE__, 0x00000000, "00", "%.2X"}, + {__LINE__, -0x2263dba, "-36060602", "%5.5d"}, + {__LINE__, 0x00007da9, "32169", "%0d"}, + {__LINE__, 0xfffffff7, "FFFFFFF7", "% 4.X"}, + {__LINE__, 0xfbf36cca, "FBF36CCA", "%.1X"}, + {__LINE__, 0x00000040, "64", "%.0ld"}, + {__LINE__, 0x0000001c, " 28", "% d"}, + {__LINE__, 0xfffffadb, "0xfffffadb", "%#.5x"}, + {__LINE__, 0x0eb95847, "247027783", "%d"}, + {__LINE__, 0xfffd7030, "FFFD7030", "%+02X"}, + {__LINE__, 0x00000005, "00005", "%.5x"}, + {__LINE__, 0xfffffffd, "FFFFFFFD", "%X"}, + {__LINE__, 0x98975b15, "98975B15", "%02X"}, + {__LINE__, -0x0000034, " -52", "%6ld"}, + {__LINE__, 0xffd7d0cc, "ffd7d0cc", "% 5.6x"}, + {__LINE__, 0xffffffa6, "FFFFFFA6", "%X"}, + {__LINE__, 0xfff27132, "fff27132", "%x"}, + {__LINE__, -0x065b74d, "-6666061", "%+6ld"}, + {__LINE__, 0xf6ac99d6, "0XF6AC99D6", "%#X"}, + {__LINE__, 0xfffff4bd, "FFFFF4BD", "%X"}, + {__LINE__, 0xfffffb62, "FFFFFB62", "%6X"}, + {__LINE__, 0xf8434543, "f8434543", "%-0x"}, + {__LINE__, 0x0002b374, "0x2b374", "%-#6x"}, + {__LINE__, 0x00000000, "0", "%x"}, + {__LINE__, 0xffb5751d, "ffb5751d", "%-3.x"}, + {__LINE__, 0x34ea7347, "887780167", "%d"}, + {__LINE__, -0x008f457, "-586839", "%0ld"}, + {__LINE__, 0x00000001, " 1", "%#4d"}, + {__LINE__, 0xc32d7ad4, "c32d7ad4", "%0x"}, + {__LINE__, 0xfffffb80, "FFFFFB80", "%-.2X"}, + {__LINE__, 0x00000756, "756 ", "%-6x"}, + {__LINE__, 0xfffb020f, "FFFB020F", "%+.2X"}, + {__LINE__, -0xe68619f, "-241721759", "%#1.6ld"}, + {__LINE__, 0x180166cd, "402745037", "%3.7ld"}, + {__LINE__, -0x0000001, "-1", "%+00d"}, + {__LINE__, 0xfdbc3611, "fdbc3611", "%x"}, + {__LINE__, -0x000005b, "-91", "%d"}, + {__LINE__, 0xffffe77f, "ffffe77f", "%x"}, + {__LINE__, -0x0000019, "-25", "%ld"}, + {__LINE__, 0x00000016, "22", "%#d"}, + {__LINE__, -0x0000025, "-37", "%ld"}, + {__LINE__, 0xffffe43f, "ffffe43f", "%x"}, + {__LINE__, 0x000050a5, "00050a5", "%.7x"}, + {__LINE__, 0x0000000c, " 12", "% 5.ld"}, + {__LINE__, -0x001faff, "-129791", "%4d"}, + {__LINE__, 0x239d7cf2, "597523698", "%0.7ld"}, + {__LINE__, 0x04092183, "4092183", "% 7X"}, + {__LINE__, -0x0043498, "-275608", "%-ld"}, + {__LINE__, -0x0018dbe, "-101822", "%d"}, + {__LINE__, 0xff3e09c3, "FF3E09C3", "%X"}, + {__LINE__, 0x00000000, "0", "%d"}, + {__LINE__, -0x15d57558, "-366310744", "%+0.7ld"}, + {__LINE__, 0x0004fb06, "326406", "%0.0d"}, + {__LINE__, 0x00000119, "0X119", "%#X"}, + {__LINE__, -0x14c53e19, "-348470809", "%d"}, + {__LINE__, 0x00000019, "0000019", "% .7X"}, + {__LINE__, -0x0000654, "-1620", "%0.4ld"}, + {__LINE__, -0xde5899b, "-233146779", "%#.1d"}, + {__LINE__, 0x0013c1f0, "1294832", "%4.ld"}, + {__LINE__, 0x0a9fe761, "A9FE761", "%X"}, + {__LINE__, -0x00000e5, "-229", "%1ld"}, + {__LINE__, 0x00000161, "000353", "%.6ld"}, + {__LINE__, 0x6b04e4bd, "0x6b04e4bd", "%#7.0x"}, + {__LINE__, -0x0000ef0, "-3824 ", "%-6.ld"}, + {__LINE__, -0x026306e, "-2502766", "%ld"}, + {__LINE__, 0x00000000, "0", "%-X"}, + {__LINE__, 0xfffffe1f, "fffffe1f", "%-x"}, + {__LINE__, 0x0003aecf, " 241359", "% 2.1ld"}, + {__LINE__, -0x0000014, "-20", "%d"}, + {__LINE__, 0x00000002, "0002", "%-.4ld"}, + {__LINE__, 0xfffff662, "0XFFFFF662", "% #.6X"}, + {__LINE__, 0x00000006, "6", "%0x"}, + {__LINE__, 0x0001f4c4, " 128196", "% 0d"}, + {__LINE__, 0xffffffff, "FFFFFFFF", "%5X"}, + {__LINE__, 0x05605e38, "90201656", "%ld"}, + {__LINE__, 0xffffffde, "0XFFFFFFDE", "% #X"}, + {__LINE__, 0x000001e0, " 1e0", "%7.x"}, + {__LINE__, 0x00000007, "7", "%X"}, + {__LINE__, 0x00000001, "+1", "%+d"}, + {__LINE__, 0xffffffe0, "FFFFFFE0", "% X"}, + {__LINE__, 0xffd7f77a, "FFD7F77A", "%+00.1X"}, + {__LINE__, 0xfffffffe, "0xfffffffe", "%-#x"}, + {__LINE__, 0x01b0a63b, "1b0a63b", "%x"}, + {__LINE__, -0x06554b7, "-6640823", "%d"}, + {__LINE__, 0xfffffff8, "fffffff8", "%x"}, + {__LINE__, 0x00000b2d, "b2d", "%x"}, + {__LINE__, -0x2664ba2, "-40258466", "%-d"}, + {__LINE__, 0xfffffffe, "FFFFFFFE", "%X"}, + {__LINE__, -0x0000552, " -1362", "%6.2ld"}, + {__LINE__, 0x00000009, " 00009", "%6.5x"}, + {__LINE__, 0x00035c72, "220274", "%05.ld"}, + {__LINE__, -0x014d09d, "-1364125", "%d"}, + {__LINE__, -0x0000002, " -2", "% 4d"}, + {__LINE__, 0x00000001, "1", "%+X"}, + {__LINE__, 0x00000028, "28", "%X"}, + {__LINE__, 0xf25c9eb2, "F25C9EB2", "%7.X"}, + {__LINE__, -0x7ae4b62, "-128863074", "%d"}, + {__LINE__, 0x00630d87, "630D87", "%2X"}, + {__LINE__, 0x000000f8, "F8", "%-X"}, + {__LINE__, 0xfffffff9, "FFFFFFF9", "%X"}, + {__LINE__, -0x0000007, "-7", "%0d"}, + {__LINE__, -0x2518fcd, "-38899661", "% 3ld"}, + {__LINE__, 0xfffff4b4, "FFFFF4B4", "%-5X"}, + {__LINE__, 0x01cc36c8, "30160584", "%ld"}, + {__LINE__, 0xffffffff, "ffffffff", "%-x"}, + {__LINE__, 0x0000000b, " 11", "%6.ld"}, + {__LINE__, 0x00010d55, " 68949", "% d"}, + {__LINE__, -0x0c01306, "-12587782", "% 6.1ld"}, + {__LINE__, 0x001719d7, "1513943", "%.1ld"}, + {__LINE__, -0x0000002, " -2", "%+3.ld"}, + {__LINE__, 0x0000018e, "398", "%d"}, + {__LINE__, 0x000000a6, "0xa6", "%-#3x"}, + {__LINE__, 0x00006f66, " 28518", "% #d"}, + {__LINE__, 0x0000032a, "32A", "%X"}, + {__LINE__, -0x0000145, "-325", "%0d"}, + {__LINE__, 0xffffffff, "ffffffff", "%2.x"}, + {__LINE__, 0x00287171, "2650481", "%ld"}, + {__LINE__, 0x0000004b, "+75", "%+02.ld"}, + {__LINE__, 0xfffffff8, "fffffff8", "%-0x"}, + {__LINE__, 0x00000064, "64", "% X"}, + {__LINE__, 0xfffffca2, "fffffca2", "%0x"}, + {__LINE__, 0x000010b6, "10b6", "% .0x"}, + {__LINE__, -0x003806f, "-229487", "%7d"}, + {__LINE__, -0x00000b7, "-183", "%3ld"}, + {__LINE__, 0xffffe5ba, "FFFFE5BA", "%0X"}, + {__LINE__, 0x001f0da8, "1f0da8", "%+x"}, + {__LINE__, 0x000ce185, "844165", "%0ld"}, + {__LINE__, 0x00000c96, "3222", "%0d"}, + {__LINE__, -0x0013099, "-77977", "%1.ld"}, + {__LINE__, -0x5f3c47a, "-99861626", "%.6ld"}, + {__LINE__, 0x00000cbf, " CBF", "%+5.X"}, + {__LINE__, -0x0000001, "-1", "%+ld"}, + {__LINE__, 0x0d793bc3, "d793bc3", "%6.x"}, + {__LINE__, 0xfffffffd, "0xfffffffd", "%+#x"}, + {__LINE__, -0x0000070, " -112", "%6.d"}, + {__LINE__, 0xfffffb3f, "FFFFFB3F", "%.7X"}, + {__LINE__, 0x037dfc78, "0X37DFC78", "%#X"}, + {__LINE__, 0x00009ba5, "39845", "%3ld"}, + {__LINE__, 0x0000004a, "4a", "%0x"}, + {__LINE__, 0xffffff81, "ffffff81", "%5.5x"}, + {__LINE__, -0x86ef222, "-141488674", "%ld"}, + {__LINE__, -0xac5531e, "-180704030", "% 4ld"}, + {__LINE__, 0x00002493, "2493", "%+X"}, + {__LINE__, 0xffffffff, "FFFFFFFF", "%1.3X"}, + {__LINE__, 0x0005c875, "378997", "%.0ld"}, + {__LINE__, 0x0301d345, "50451269", "%d"}, + {__LINE__, 0xfff6b589, "fff6b589", "%2.4x"}, + {__LINE__, -0x00001db, "-475 ", "%-7.0d"}, + {__LINE__, 0x0000d1e7, "0x000d1e7", "%#2.7x"}, + {__LINE__, 0xf4c4d2bb, "f4c4d2bb", "%.6x"}, + {__LINE__, 0x00c89f54, "13147988", "%ld"}, + {__LINE__, -0x6599253c, "-1704535356", "%+ld"}, + {__LINE__, 0xab7d61ea, "ab7d61ea", "% x"}, + {__LINE__, 0x00000006, "6", "%1ld"}, + {__LINE__, 0xffff5ab7, "ffff5ab7", "%0x"}, + {__LINE__, -0x1cfeca5b, "-486459995", "%#ld"}, + {__LINE__, 0x000000f3, " f3", "% 6.x"}, + {__LINE__, -0x0000021, "-33", "%d"}, + {__LINE__, 0xfe7246ac, "fe7246ac", "%-5.x"}, + {__LINE__, 0x00000017, "00017", "%-.5X"}, + {__LINE__, -0x0cc250a, "-13378826", "%0.0d"}, + {__LINE__, -0x00010ae, "-04270", "%#.5ld"}, + {__LINE__, -0x7952c8b, "-127216779", "% ld"}, + {__LINE__, 0x0002a53e, "173374", "%4.0d"}, + {__LINE__, 0x03801bbf, "3801BBF", "%0X"}, + {__LINE__, 0x0368645f, "+57173087", "%+#0.6ld"}, + {__LINE__, 0x0000002f, "47", "%d"}, + {__LINE__, 0x00000003, "3", "%x"}, + {__LINE__, 0x000005f7, "5F7", "%0X"}, + {__LINE__, -0x06e5e76, "-7233142", "% 0.1ld"}, + {__LINE__, 0x053da936, "53da936", "%1.4x"}, + {__LINE__, -0x0df0c2f, "-14617647", "%.5ld"}, + {__LINE__, 0xfffffffd, "FFFFFFFD", "%-0X"}, + {__LINE__, 0x000104bf, "104BF", "%X"}, + {__LINE__, 0x000353fc, "353FC", "%X"}, + {__LINE__, 0x182a18dc, "+405412060", "%+ld"}, + {__LINE__, 0x0000000e, " 14", "% 2d"}, + {__LINE__, -0x0000091, "-145", "%+ld"}, + {__LINE__, 0x0029a9d6, "2730454", "%d"}, + {__LINE__, 0x00009d57, "009d57", "% .6x"}, + {__LINE__, 0x4c4d4f79, "1280135033", "%5.ld"}, + {__LINE__, -0x000075b, "-1883", "% 03d"}, + {__LINE__, -0x001b718, "-112408", "%+d"}, + {__LINE__, 0xfffaaf57, "FFFAAF57", "%+1X"}, + {__LINE__, 0x00f44e52, "F44E52", "% 4X"}, + {__LINE__, 0x00000002, "0X2", "%#X"}, + {__LINE__, 0x000a85e9, "A85E9", "%+0X"}, + {__LINE__, 0xffff70bb, "ffff70bb", "%6x"}, + {__LINE__, 0x00004e15, "4e15", "%x"}, + {__LINE__, 0x000eeb60, " 977760", "% ld"}, + {__LINE__, 0xfffffff1, "fffffff1", "%0x"}, + {__LINE__, -0x294d7e2, "-43309026", "% 02.d"}, + {__LINE__, 0x0001aaeb, "0109291", "%02.7ld"}, + {__LINE__, 0x000a01fc, "0xa01fc", "%-#.5x"}, + {__LINE__, 0x002c3c30, "+2898992", "%+#d"}, + {__LINE__, 0x015667ae, "+22439854", "%+5ld"}, + {__LINE__, -0x05af42b, "-5960747", "%+d"}, + {__LINE__, 0x0000be36, "be36", "%+2x"}, + {__LINE__, 0x005e3f67, "5e3f67", "% x"}, + {__LINE__, -0x0000020, "-32", "% ld"}, + {__LINE__, -0x0003617, "-13847", "% d"}, + {__LINE__, 0x00000014, "14 ", "%-4.X"}, + {__LINE__, 0x00000001, "001", "%0.3d"}, + {__LINE__, 0xfffffea9, "fffffea9", "%3.x"}, + {__LINE__, 0xe447099e, "E447099E", "%0X"}, + {__LINE__, 0x00049c71, "302193", "%d"}, + {__LINE__, 0x76356ed3, "0x76356ed3", "%#4.1x"}, + {__LINE__, 0x00000005, " 0X5", "%#5X"}, + {__LINE__, 0x00004da2, "0x004da2", "%#1.6x"}, + {__LINE__, 0xffdfb36c, "FFDFB36C", "%4X"}, + {__LINE__, 0xffffe3c5, "FFFFE3C5", "%+4.X"}, + {__LINE__, 0x00000006, "6", "%0x"}, + {__LINE__, -0x914ff17, "-152370967", "% .5ld"}, + {__LINE__, -0x0000002, "-2", "%0ld"}, + {__LINE__, 0xffffff36, "FFFFFF36", "% 2X"}, + {__LINE__, -0x0bb1598, "-12260760", "%-ld"}, + {__LINE__, 0x00006db5, "28085", "%0.5ld"}, + {__LINE__, 0xffffffff, "ffffffff", "%x"}, + {__LINE__, -0x0000001, "-1", "%0ld"}, + {__LINE__, 0x0fa37e79, "FA37E79", "%1.X"}, + {__LINE__, -0x00000ac, "-172", "%.2d"}, + {__LINE__, 0xffffffd8, "ffffffd8", "%.7x"}, + {__LINE__, -0x000a513, "-42259", "%ld"}, + {__LINE__, 0x00001294, "4756", "%2ld"}, + {__LINE__, -0x56bae0b4, "-1455087796", "%.1ld"}, + {__LINE__, 0x3b26d5fa, "3b26d5fa", "%x"}, + {__LINE__, 0xff657013, "ff657013", "%x"}, + {__LINE__, -0x00005f5, "-1525", "%0.0ld"}, + {__LINE__, -0x0000001, " -1", "% 7d"}, + {__LINE__, -0x02396b2, "-2332338", "%d"}, + {__LINE__, -0x0000003, "-000003", "%+7.6d"}, + {__LINE__, 0xfd3ec7c1, "fd3ec7c1", "% 3.4x"}, + {__LINE__, -0x076e338, "-7791416", "%0.d"}, + {__LINE__, -0x000015e, "-350", "%3ld"}, + {__LINE__, 0x0a0f0b71, "a0f0b71", "%x"}, + {__LINE__, 0xfffe00ba, "FFFE00BA", "%X"}, + {__LINE__, 0x00036bd8, " 36bd8", "% 06.x"}, + {__LINE__, 0xfffff2df, "0XFFFFF2DF", "%#2.6X"}, + {__LINE__, 0x004687fb, "4622331", "%ld"}, + {__LINE__, -0x0000331, " -817", "%+6.d"}, + {__LINE__, 0xfcd5b090, "fcd5b090", "%+0x"}, + {__LINE__, 0x0334f94c, "334F94C", "%.6X"}, + {__LINE__, 0x00000bce, "3022", "%.3ld"}, + {__LINE__, 0xf28d9ddd, "f28d9ddd", "%x"}, + {__LINE__, 0x00003a79, " 14969", "% ld"}, + {__LINE__, 0xfffffffe, "FFFFFFFE", "%.7X"}, + {__LINE__, 0x0043d7fe, "43D7FE", "%X"}, + {__LINE__, -0x0000b82, "-2946", "%-ld"}, + {__LINE__, -0x00e29d8, "-928216", "%d"}, + {__LINE__, 0xffffffec, "ffffffec", "%-x"}, + {__LINE__, 0x0aeaf557, "0xaeaf557", "%-#x"}, + {__LINE__, 0x00c07fe6, "C07FE6", "%X"}, + {__LINE__, 0x307414d8, "307414d8", "% 0x"}, + {__LINE__, -0x045ef67, "-4583271", "%d"}, + {__LINE__, 0x0000024a, " 0000586", "% .7d"}, + {__LINE__, 0xfffffc42, "fffffc42", "%x"}, + {__LINE__, 0xfc38c249, "fc38c249", "%5.x"}, + {__LINE__, -0x000d096, "-53398", "%-d"}, + {__LINE__, -0x213a345, "-34841413", "%ld"}, + {__LINE__, -0x0000130, "-304", "%ld"}, + {__LINE__, -0x000efd1, "-61393", "%ld"}, + {__LINE__, 0xfffff867, "FFFFF867", "%2X"}, + {__LINE__, 0x00113ed0, "0x113ed0", "%-#7x"}, + {__LINE__, 0x00000677, " 1655", "% 3.ld"}, + {__LINE__, 0x0000002f, "2f", "%x"}, + {__LINE__, 0xfffffd38, "fffffd38", "%-4x"}, + {__LINE__, -0x000b3cc, "-46028", "%1.2d"}, + {__LINE__, 0x45da719b, "45DA719B", "%+0X"}, + {__LINE__, -0x000a454, " -42068", "%7.3ld"}, + {__LINE__, 0x01cc7c30, " 30178352", "% d"}, + {__LINE__, -0x05ae80e, "-5957646", "%#.4ld"}, + {__LINE__, 0x000000b9, "185", "%d"}, + {__LINE__, 0x003fcaf4, "4180724", "%1.ld"}, + {__LINE__, 0x02da1b74, "2DA1B74", "%X"}, + {__LINE__, 0xffffffd9, "FFFFFFD9", "%X"}, + {__LINE__, 0x00064359, "64359 ", "%-6X"}, + {__LINE__, 0x000000f0, "240", "%ld"}, + {__LINE__, -0x01715e5, "-1512933", "%ld"}, + {__LINE__, 0xc8f6e118, "0XC8F6E118", "%#X"}, + {__LINE__, 0xfffffd8f, "FFFFFD8F", "%X"}, + {__LINE__, 0x0000176d, "5997 ", "%-6d"}, + {__LINE__, 0x00003cab, "0x3cab", "%#0.3x"}, + {__LINE__, 0x00000001, " 1", "% d"}, + {__LINE__, 0xfffff610, "0XFFFFF610", "%#X"}, + {__LINE__, 0xfffffffe, "FFFFFFFE", "%5.7X"}, + {__LINE__, 0x00000001, "1", "%0x"}, + {__LINE__, 0x00000001, "00001", "%.5ld"}, + {__LINE__, -0x0000d51, "-3409", "%d"}, + {__LINE__, -0x08639ee, "-8796654", "%ld"}, + {__LINE__, 0x00003121, "12577", "%#1.2ld"}, + {__LINE__, 0x0000004e, "78", "%d"}, + {__LINE__, 0xfffff64f, "fffff64f", "%-x"}, + {__LINE__, 0x0000002a, "2a", "%0x"}, + {__LINE__, 0x00000020, "20", "%x"}, + {__LINE__, -0x00000b8, "-184", "%#ld"}, + {__LINE__, 0x0000000a, "10", "%-#d"}, + {__LINE__, 0x00000364, "868", "%.1ld"}, + {__LINE__, 0x00d1f9b6, "D1F9B6", "%0.X"}, + {__LINE__, 0x008cfda1, "8CFDA1", "% 6.X"}, + {__LINE__, 0xffd58cce, "FFD58CCE", "%X"}, + {__LINE__, 0x00000008, "0000008", "%6.7ld"}, + {__LINE__, 0x00000318, " 318", "%4X"}, + {__LINE__, 0x000172d8, "94936", "%2ld"}, + {__LINE__, -0x056ccbf, "-5688511", "%ld"}, + {__LINE__, 0x000000c7, "+000199", "%+0.6d"}, + {__LINE__, 0x00000002, "0X2", "%-#X"}, + {__LINE__, 0xfffff634, "FFFFF634", "%.1X"}, + {__LINE__, -0x00001f3, "-499", "%-ld"}, + {__LINE__, -0x000081b, "-2075", "%-d"}, + {__LINE__, 0x000000b5, "181", "%0d"}, + {__LINE__, 0xfe961ee8, "fe961ee8", "%0x"}, + {__LINE__, 0x000028a2, "10402", "%d"}, + {__LINE__, 0xffffffff, "FFFFFFFF", "%.4X"}, + {__LINE__, -0x000058a, "-1418", "%.3ld"}, + {__LINE__, 0x00001ceb, "1CEB", "%X"}, + {__LINE__, 0x00000021, "21", "% X"}, + {__LINE__, 0x00000002, "2", "%0d"}, + {__LINE__, -0x2f9bbf5, "-49921013", "%.4ld"}, + {__LINE__, 0x00000e91, "03729", "%#.5ld"}, + {__LINE__, 0xf1116740, "f1116740", "%2x"}, + {__LINE__, 0x00014f72, "14F72", "%X"}, + {__LINE__, 0xfffffced, "FFFFFCED", "%X"}, + {__LINE__, 0xffffffff, "ffffffff", "%.5x"}, + {__LINE__, 0x0017cf0c, " 1560332", "% 0ld"}, + {__LINE__, 0x0000000a, "A", "% X"}, + {__LINE__, 0xff3a39d4, "ff3a39d4", "%x"}, + {__LINE__, 0xfffef05f, "FFFEF05F", "%X"}, + {__LINE__, 0xfedfe708, "fedfe708", "%03.0x"}, + {__LINE__, 0x000345a0, "345A0", "% X"}, + {__LINE__, -0x1ed5b6f7, "-517322487", "%d"}, + {__LINE__, 0xd2d56c22, "D2D56C22", "%0.X"}, + {__LINE__, 0x00002cbf, "2CBF", "%.2X"}, + {__LINE__, 0x00000db4, "db4", "%3x"}, + {__LINE__, -0x000b154, "-45396", "%d"}, + {__LINE__, 0x002bf4c7, "2BF4C7", "%X"}, + {__LINE__, 0x6954abf4, "+1767156724", "%+d"}, + {__LINE__, 0xfffffffb, "fffffffb", "%x"}, + {__LINE__, -0x29e0050e, "-702547214", "%-0ld"}, + {__LINE__, -0x0014989, "-84361", "%-#0.3ld"}, + {__LINE__, 0x001a557c, "+1725820", "%+6.5d"}, + {__LINE__, -0x56689a81, "-1449695873", "%.2d"}, + {__LINE__, 0x00000016, " 16", "%05.X"}, + {__LINE__, 0x0001da1e, " 121374", "% d"}, + {__LINE__, -0x04deac7, "-5106375", "%03.4d"}, + {__LINE__, 0x000012b1, "4785", "%d"}, + {__LINE__, 0x0009a116, "9a116", "%-x"}, + {__LINE__, -0x0000003, "-000003", "%4.6ld"}, + {__LINE__, 0x00000000, "", "%.0x"}, + {__LINE__, 0x0000000a, " A", "% 3X"}, + {__LINE__, 0xfffffff0, "0xfffffff0", "%-#0.1x"}, + {__LINE__, 0x00000086, "86", "%0X"}, + {__LINE__, 0x0000001f, "31", "%-d"}, + {__LINE__, 0x0386f706, "59176710", "%3.6ld"}, + {__LINE__, 0xffe437ae, "0XFFE437AE", "%#X"}, + {__LINE__, 0x0e5405c6, "e5405c6", "%-x"}, + {__LINE__, 0xfffdee46, "FFFDEE46", "%+X"}, + {__LINE__, 0xff861e9d, "FF861E9D", "%5.X"}, + {__LINE__, 0xfffff570, "FFFFF570", "%-X"}, + {__LINE__, 0x045c90bd, "45c90bd", "%0x"}, + {__LINE__, 0x000000aa, "AA", "%+X"}, + {__LINE__, -0x747262e, "-122103342", "%0ld"}, + {__LINE__, 0xffffad89, "FFFFAD89", "%X"}, + {__LINE__, 0x00000018, "18", "%0.2X"}, + {__LINE__, 0x00057a2d, " 358957", "% #7.d"}, + {__LINE__, 0x73a0e21d, "1939923485", "%ld"}, + {__LINE__, -0x00021e1, "-8673", "%0d"}, + {__LINE__, 0x000000e9, " 233", "% 06.3ld"}, + {__LINE__, 0xffffcc0d, "ffffcc0d", "%x"}, + {__LINE__, 0x00000052, "52", "%x"}, + {__LINE__, 0x01c155af, "1C155AF", "%.5X"}, + {__LINE__, 0xffffffff, "ffffffff", "%0.x"}, + {__LINE__, -0x00400a4, "-262308", "%-d"}, + {__LINE__, -0x0000001, "-0000001", "%#.7ld"}, + {__LINE__, 0x01fb9c99, "1fb9c99", "% 03.5x"}, + {__LINE__, 0xffffffff, "ffffffff", "%6.x"}, + {__LINE__, 0xff5e5eea, "FF5E5EEA", "%X"}, + {__LINE__, 0x0000000f, "F", "%+0X"}, + {__LINE__, 0xfffffe3a, "fffffe3a", "% x"}, + {__LINE__, 0xfffffffe, "FFFFFFFE", "%-X"}, + {__LINE__, -0x0000007, "-7", "%0ld"}, + {__LINE__, -0x002f635, "-194101", "%d"}, + {__LINE__, -0x0000005, "-5", "%ld"}, + {__LINE__, -0x0000059, "-89", "%0ld"}, + {__LINE__, -0x1ccda96, "-30202518", "%d"}, + {__LINE__, -0x0000002, "-2", "%-d"}, + {__LINE__, 0xffffffda, "0XFFFFFFDA", "%#X"}, + {__LINE__, 0x00036cc5, "224453", "%#d"}, + {__LINE__, 0x00000010, "+16", "%+ld"}, + {__LINE__, 0x0b6039c7, "190855623", "%d"}, + {__LINE__, -0x0000002, "-002", "%#.3d"}, + {__LINE__, 0xfff3e746, "FFF3E746", "%-4X"}, + {__LINE__, 0x0361b3de, "361B3DE", "% 04X"}, + {__LINE__, 0xffffe6a2, "ffffe6a2", "%-x"}, + {__LINE__, 0x00032790, "0x0032790", "%#7.7x"}, + {__LINE__, 0xffe33b4e, "ffe33b4e", "%-0x"}, + {__LINE__, -0x0094663, "-607843", "%.3ld"}, + {__LINE__, -0x00a3efa, "-671482", "%4d"}, + {__LINE__, 0x000000e6, " 00E6", "%7.4X"}, + {__LINE__, 0x000125cb, "125CB", "%+X"}, + {__LINE__, 0x0000b97e, "b97e", "%x"}, + {__LINE__, -0x0000039, "-57", "%+ld"}, + {__LINE__, 0xffffe39a, "ffffe39a", "%5.4x"}, + {__LINE__, 0xffffffff, "ffffffff", "%6.1x"}, + {__LINE__, -0xdee910c, "-233738508", "%-#2d"}, + {__LINE__, -0x14044930, "-335825200", "%6.ld"}, + {__LINE__, 0x00a81259, "a81259", "%x"}, + {__LINE__, 0x020e74c6, "20E74C6", "%X"}, + {__LINE__, -0x00000fb, "-251", "%01.d"}, + {__LINE__, 0x034ceb45, "34CEB45", "%5.X"}, + {__LINE__, 0xfeacb66a, "feacb66a", "% x"}, + {__LINE__, 0x00003eb6, "3EB6", "% X"}, + {__LINE__, 0x000009ef, "9ef", "% x"}, + {__LINE__, 0xf9d9dd07, "F9D9DD07", "%0X"}, +#ifndef __PCCNECV70__ + + {__LINE__, 0x000154d7, "087255", "%.6ld"}, + {__LINE__, -0x000036e, "-878", "%-ld"}, + {__LINE__, -0x0007dcc, "-32204", "% d"}, + {__LINE__, 0x000019dc, "6620", "%d"}, + {__LINE__, 0xffffff6e, "FFFFFF6E", "%2X"}, + {__LINE__, 0x00000016, "0x16", "%-#x"}, + {__LINE__, 0xffdb3e96, "ffdb3e96", "%+.5x"}, + {__LINE__, 0xffffffef, "FFFFFFEF", "% 04.X"}, + {__LINE__, 0xffffffff, "FFFFFFFF", "%5X"}, + {__LINE__, 0x000c08cd, "C08CD", "%-X"}, + {__LINE__, 0x18de71ee, "18de71ee", "%x"}, + {__LINE__, 0xffffffff, "ffffffff", "% x"}, + {__LINE__, -0x00025bd, "-009661", "%#.6d"}, + {__LINE__, 0x2f05de14, " 788913684", "% 6.4ld"}, + {__LINE__, 0x0c99cf86, "211406726", "%.5d"}, + {__LINE__, 0x09e6a21d, " 166109725", "% 0d"}, + {__LINE__, -0x013da65, "-1301093", "%+ld"}, + {__LINE__, 0x000003d0, " 976", "% 4.2d"}, + {__LINE__, -0xef9e3cc, "-251257804", "%-7.0d"}, + {__LINE__, 0x0000000c, "+12", "%+00ld"}, + {__LINE__, 0xffffffe2, "ffffffe2", "%x"}, + {__LINE__, 0x000000fe, "fe", "%-x"}, + {__LINE__, 0xfffffc5f, "fffffc5f", "%x"}, + {__LINE__, -0x0005c55, "-23637", "%d"}, + {__LINE__, -0x0111ff2, "-1122290", "% 7.d"}, + {__LINE__, -0x1a1746e5, "-437733093", "%.4ld"}, + {__LINE__, 0x00001007, "004103", "%00.6d"}, + {__LINE__, 0xffffffe1, "ffffffe1", "%x"}, + {__LINE__, 0x0000d80f, "55311", "%d"}, + {__LINE__, 0x00000004, "4", "%+X"}, + {__LINE__, 0xfffffffd, "fffffffd", "%6x"}, + {__LINE__, -0x2afbcc3c, "-721144892", "%4.6ld"}, + {__LINE__, 0x00377f96, "377F96", "%6.X"}, + {__LINE__, 0xffffffc8, "FFFFFFC8", "%0X"}, + {__LINE__, 0x007ed9d1, "8313297", "%-3d"}, + {__LINE__, 0x00000000, "0", "%-X"}, + {__LINE__, 0x001e122d, "1970733", "%01.d"}, + {__LINE__, -0x000029b, "-667", "%ld"}, + {__LINE__, -0x002f563, "-193891", "% 2.5d"}, + {__LINE__, 0xfffffffe, "fffffffe", "%+3.7x"}, + {__LINE__, 0xfff7658c, "fff7658c", "%x"}, + {__LINE__, -0x0006d08, "-0027912", "%7.7ld"}, + {__LINE__, 0x00000080, "80", "%X"}, + {__LINE__, 0x0000078f, " 1935", "% 6ld"}, + {__LINE__, 0xfffffffb, "FFFFFFFB", "% X"}, + {__LINE__, 0x000000ae, " AE", "%7.X"}, + {__LINE__, -0x000d6aa, "-54954", "%-ld"}, + {__LINE__, 0xfffffffe, "FFFFFFFE", "%6.X"}, + {__LINE__, 0x000003bf, "+959", "%+d"}, + {__LINE__, -0x7242d04b, "-1916981323", "% ld"}, + {__LINE__, 0xf0e6546f, "F0E6546F", "% .7X"}, + {__LINE__, 0x047e196a, "75372906", "%ld"}, + {__LINE__, 0x0240174e, "240174E", "%+0X"}, + {__LINE__, -0x0000006, "-006", "%.3ld"}, + {__LINE__, 0x00068aac, "428716", "%#ld"}, + {__LINE__, 0xffffffa1, "ffffffa1", "%0x"}, + {__LINE__, 0x000adab3, "adab3", "%x"}, + {__LINE__, -0x00000ae, "-0000174", "%7.7ld"}, + {__LINE__, 0x0f0a8f4b, "f0a8f4b", "% x"}, + {__LINE__, 0xfee229bc, "fee229bc", "%x"}, + {__LINE__, -0x275b8455, "-660309077", "%.2ld"}, + {__LINE__, -0xca4b2a5, "-212120229", "%d"}, + {__LINE__, 0x000000b5, " 181", "%04.d"}, + {__LINE__, 0xfff213f2, "FFF213F2", "%X"}, + {__LINE__, 0x00000003, "3", "%-X"}, + {__LINE__, 0x0ebb978b, "247175051", "%.6ld"}, + {__LINE__, 0xffffffca, "FFFFFFCA", "%X"}, + {__LINE__, -0x0000003, "-03", "%+0.2d"}, + {__LINE__, -0x178ff86, "-24706950", "%+d"}, + {__LINE__, 0x0000003c, " 60", "%7.ld"}, + {__LINE__, -0x001012d, "-65837", "%.5d"}, + {__LINE__, 0x03673fd2, "3673fd2", "%.5x"}, + {__LINE__, -0x001fe74, "-130676", "%#0.6ld"}, + {__LINE__, 0x004f6226, "4f6226", "%-0x"}, + {__LINE__, 0xfffffa0f, "fffffa0f", "%7x"}, + {__LINE__, 0xfffffff8, "fffffff8", "%-.6x"}, + {__LINE__, -0x0000001, "-1", "%#d"}, + {__LINE__, 0xffffe43d, "ffffe43d", "%7x"}, + {__LINE__, 0x00009d47, "0040263", "%7.7ld"}, + {__LINE__, 0xff0fc79f, "FF0FC79F", "%-4.X"}, + {__LINE__, 0x2d610907, "2d610907", "%x"}, + {__LINE__, -0x00002de, "-734", "%04d"}, + {__LINE__, 0x0000036b, " 36B", "%7.1X"}, + {__LINE__, 0x00000002, "2", "%.0x"}, + {__LINE__, -0x1f577b3e, "-525826878", "%d"}, + {__LINE__, 0x0000002d, "45", "%#ld"}, + {__LINE__, 0xfffffffb, "fffffffb", "%x"}, + {__LINE__, -0x0000004, "-4", "%-.0d"}, + {__LINE__, 0x00016ba4, "16ba4", "%x"}, + {__LINE__, -0x1ad853d5, "-450384853", "% 0ld"}, + {__LINE__, 0x00366899, "366899", "%2.x"}, + {__LINE__, 0x1659158b, "1659158B", "%X"}, + {__LINE__, 0x000076c7, "76c7", "%x"}, + {__LINE__, 0x00000674, "674", "%0x"}, + {__LINE__, 0x016c9d8a, "+23895434", "%+ld"}, + {__LINE__, 0xfffffc43, "FFFFFC43", "%0X"}, + {__LINE__, 0xfff249d2, "fff249d2", "%-2.x"}, + {__LINE__, 0xffffffdd, "ffffffdd", "%5x"}, + {__LINE__, 0xffffa7ef, "FFFFA7EF", "%0.3X"}, + {__LINE__, 0x030d4d06, "30d4d06", "%x"}, + {__LINE__, -0x0e4694b, "-14969163", "%d"}, + {__LINE__, 0x00000078, "120", "%.3ld"}, + {__LINE__, -0x16c1273e, "-381757246", "%0d"}, + {__LINE__, 0xffffd183, "FFFFD183", "% 0X"}, + {__LINE__, -0x2dfdadd, "-48224989", "%ld"}, + {__LINE__, -0x5767fe5c, "-1466433116", "%ld"}, + {__LINE__, 0x01bea036, "29270070", "%#4.3d"}, + {__LINE__, 0x00000027, "27", "%-x"}, + {__LINE__, 0x0004d183, "4D183", "%X"}, + {__LINE__, 0xffdaf9c8, "FFDAF9C8", "%.7X"}, + {__LINE__, 0xfffffd95, "fffffd95", "%x"}, + {__LINE__, -0x0059acb, "-367307", "%00.d"}, + {__LINE__, 0x017d8db4, "17d8db4", "% 05.x"}, + {__LINE__, 0x0001f084, "001F084", "%5.7X"}, + {__LINE__, 0x00000006, " 6", "% ld"}, + {__LINE__, 0x011b0802, "18548738", "%.3ld"}, + {__LINE__, 0x00000006, " 6", "%#3.d"}, + {__LINE__, 0xffffffff, "ffffffff", "%6x"}, + {__LINE__, 0x00000001, "1", "% x"}, + {__LINE__, 0x00000750, " 01872", "% .5d"}, + {__LINE__, 0xfffffff9, "fffffff9", "%x"}, + {__LINE__, -0x00f842c, "-1016876", "%+d"}, + {__LINE__, -0x001dcf0, "-122096", "%-0d"}, + {__LINE__, 0x000000c9, "0XC9", "% #3X"}, + {__LINE__, 0x1e368e86, "1e368e86", "%7x"}, + {__LINE__, -0x0001157, "-4439", "% 03.4d"}, + {__LINE__, 0xfff91e87, "FFF91E87", "%3.5X"}, + {__LINE__, 0x00000006, "6", "%x"}, + {__LINE__, 0x00000bca, "3018", "%ld"}, + {__LINE__, 0x00495ff6, "495ff6", "%01.0x"}, + {__LINE__, -0x0267f7a, "-2523002", "% #5d"}, + {__LINE__, 0x00000060, "96", "%-d"}, + {__LINE__, 0x000850c6, "544966", "%#.1d"}, + {__LINE__, 0x00231457, "231457", "%-6.4X"}, + {__LINE__, 0x0000000b, "11", "%-d"}, + {__LINE__, 0x000003bd, "957", "%#d"}, + {__LINE__, 0xfd51d970, "FD51D970", "%+.7X"}, + {__LINE__, 0x000007bf, "1983", "%-ld"}, + {__LINE__, 0x000034b2, "34B2", "%0.X"}, + {__LINE__, 0x0000c18d, "C18D", "%0.X"}, + {__LINE__, 0xffffbb83, "ffffbb83", "% 3x"}, + {__LINE__, 0x000001d0, "0x1d0", "%#x"}, + {__LINE__, -0x003c784, "-247684", "%#ld"}, + {__LINE__, 0x0210cffa, "210CFFA", "%X"}, + {__LINE__, -0x33093a1, "-53515169", "% 0d"}, + {__LINE__, 0x00000001, " 1", "% #ld"}, + {__LINE__, 0xffffaa53, "ffffaa53", "%-4.5x"}, + {__LINE__, 0x2935c056, "691388502", "%1.d"}, + {__LINE__, -0x0000001, "-1", "%ld"}, + {__LINE__, 0x000013d1, "0X013D1", "%+#2.5X"}, + {__LINE__, -0x000035c, "-860", "%-.2d"}, + {__LINE__, 0x00000000, " ", "%-4.X"}, + {__LINE__, -0x0000147, "-327", "%d"}, + {__LINE__, 0x0a317eb0, "171015856", "%.7d"}, + {__LINE__, 0x00000003, "3", "%ld"}, + {__LINE__, 0x000001d6, "1d6", "%-x"}, + {__LINE__, 0x18185214, "404247060", "%-.2ld"}, + {__LINE__, 0x00574140, "0574140", "%.7X"}, + {__LINE__, 0x00002ea5, "02ea5", "%.5x"}, + {__LINE__, 0x00000005, "5", "% x"}, + {__LINE__, 0xffc47ed6, "ffc47ed6", "%-x"}, + {__LINE__, 0x0001f5da, "0X1F5DA", "%#X"}, + {__LINE__, 0xfffffcc9, "fffffcc9", "% x"}, + {__LINE__, 0x02586c98, "2586C98", "%X"}, + {__LINE__, -0x0000036, "-54", "% ld"}, + {__LINE__, 0x00064b57, "412503", "%1.5d"}, + {__LINE__, -0x0000007, "-7", "%#0.0ld"}, + {__LINE__, 0x00023a03, "145923", "%ld"}, + {__LINE__, -0x0000065, "-101", "%+#d"}, + {__LINE__, 0x00000208, "208", "%X"}, + {__LINE__, 0x00e97728, "15300392", "%-ld"}, + {__LINE__, 0x0000030a, "+778", "%+d"}, + {__LINE__, 0xf4d7deee, "F4D7DEEE", "%+X"}, + {__LINE__, -0x000009a, "-154", "%+.3ld"}, + {__LINE__, 0x000002c0, "+704", "%+ld"}, + {__LINE__, 0x0067ec23, "67ec23", "%x"}, + {__LINE__, 0x005ca7fc, "+6072316", "%+d"}, + {__LINE__, 0xfffff5f1, "fffff5f1", "%x"}, + {__LINE__, 0x00000601, " 0X601", "%#7.2X"}, + {__LINE__, -0x0000057, "-87", "% ld"}, + {__LINE__, -0x0000078, " -120", "%7.d"}, + {__LINE__, -0x000001f, "-31 ", "%-6d"}, + {__LINE__, 0x0160c000, "23117824", "%ld"}, + {__LINE__, -0x0000007, "-7", "%0ld"}, + {__LINE__, 0xfffffffe, "fffffffe", "%+x"}, + {__LINE__, 0x5b6ef898, "5b6ef898", "%+0x"}, + {__LINE__, 0x0009bfb6, "638902", "%d"}, + {__LINE__, -0x0000145, " -325", "%#6.0d"}, + {__LINE__, -0x508c048, "-84459592", "%-5.ld"}, + {__LINE__, 0x00000002, " 0x2", "% #4x"}, + {__LINE__, 0x0001486e, "84078", "%#d"}, + {__LINE__, 0x006ac76a, "6997866", "%.6d"}, + {__LINE__, 0xffffff98, "FFFFFF98", "%X"}, + {__LINE__, 0xfffffe08, "fffffe08", "%6.x"}, + {__LINE__, -0x24ef47e, "-38728830", "%1.6ld"}, + {__LINE__, 0x39d1b2db, "39D1B2DB", "% X"}, + {__LINE__, 0xfffc9ce2, "0xfffc9ce2", "%#x"}, + {__LINE__, 0x59485e14, "1497914900", "%#4ld"}, + {__LINE__, 0x000022eb, "22EB", "%3.X"}, + {__LINE__, 0xfa410352, "FA410352", "%-X"}, + {__LINE__, -0x4a342f0, "-77808368", "% ld"}, + {__LINE__, 0xef5825a4, "EF5825A4", "%.6X"}, + {__LINE__, 0x01b0185a, "0x1b0185a", "% #x"}, + {__LINE__, -0x0004290, "-17040", "%.3d"}, + {__LINE__, -0x10f88659, "-284722777", "%+6.2ld"}, + {__LINE__, 0x00003216, "12822", "%-d"}, + {__LINE__, 0x4a31a219, "1244766745", "%d"}, + {__LINE__, 0xffffffb5, "FFFFFFB5", "%-X"}, + {__LINE__, 0x0000d586, "D586", "%-2.X"}, + {__LINE__, 0x00008496, "33942", "%1.d"}, + {__LINE__, -0x0000011, "-17", "%1ld"}, + {__LINE__, 0x0000003c, "3C", "%2.X"}, + {__LINE__, 0xfffffffe, "FFFFFFFE", "%.3X"}, + {__LINE__, 0x0000152a, "152A", "%X"}, + {__LINE__, 0xfffe876e, "FFFE876E", "%X"}, + {__LINE__, -0x0003874, "-14452", "%-ld"}, + {__LINE__, -0x004918a, "-299402", "%#.6d"}, + {__LINE__, -0x000000c, "-12", "%-d"}, + {__LINE__, 0xffffd812, "FFFFD812", "%+X"}, + {__LINE__, -0x000000c, "-12", "%0d"}, + {__LINE__, -0x0000229, "-553", "%0d"}, + {__LINE__, 0x00002ab8, "2AB8", "%4.X"}, + {__LINE__, 0x0000004b, "+75", "%+ld"}, + {__LINE__, 0x001c3178, " 1847672", "% ld"}, + {__LINE__, -0x0000006, "-6", "%.0ld"}, + {__LINE__, 0x0003be65, "245349", "%ld"}, + {__LINE__, -0x0000001, "-1", "%#1ld"}, + {__LINE__, 0x0000007f, "+127", "%+ld"}, + {__LINE__, 0x0000020e, "526 ", "%-5ld"}, + {__LINE__, 0x00000002, "2", "%d"}, + {__LINE__, 0x03bd0873, "0X3BD0873", "%#X"}, + {__LINE__, 0x00093a52, "604754", "%-2d"}, + {__LINE__, -0x00823fc, "-0533500", "%+.7ld"}, + {__LINE__, 0x00000000, " ", "%4.X"}, + {__LINE__, -0x0000001, "-1", "%ld"}, + {__LINE__, 0xfff09ede, "fff09ede", "%-x"}, + {__LINE__, 0x01e28c24, "31624228", "%ld"}, + {__LINE__, 0x00001dcc, "1DCC", "%X"}, + {__LINE__, -0x0f0ea0d, "-15788557", "%-00.ld"}, + {__LINE__, 0xffff73a1, "FFFF73A1", "%X"}, + {__LINE__, -0x0004040, "-16448", "%+#d"}, + {__LINE__, 0x0073b158, "0x73b158", "%#7x"}, + {__LINE__, 0xfffff8ff, "FFFFF8FF", "% 5X"}, + {__LINE__, -0x0000004, "-4", "%0d"}, + {__LINE__, 0xffff56a3, "ffff56a3", "%1.6x"}, + {__LINE__, -0x0000041, "-65", "%0d"}, + {__LINE__, 0x00000009, "+0000009", "%+2.7d"}, + {__LINE__, 0xffffe13d, "0XFFFFE13D", "%+#2.X"}, + {__LINE__, -0x00002ce, "-00718", "%.5ld"}, + {__LINE__, 0xffc53e28, "ffc53e28", "%03.4x"}, + {__LINE__, 0x00000005, "0X5", "%#X"}, + {__LINE__, 0x00000004, "4", "%x"}, + {__LINE__, 0xe21b35eb, "e21b35eb", "%-x"}, + {__LINE__, -0x0000098, "-152", "%-ld"}, + {__LINE__, 0xffffff81, "FFFFFF81", "%2X"}, + {__LINE__, 0x00000003, "00003", "%.5ld"}, + {__LINE__, 0xfffffffc, "fffffffc", "%+x"}, + {__LINE__, 0x000491f5, "299509", "%1.ld"}, + {__LINE__, 0xf06bfd7d, "F06BFD7D", "%X"}, + {__LINE__, -0x0000006, "-6", "%0d"}, + {__LINE__, -0x0a4af7d, "-10792829", "%-0d"}, + {__LINE__, -0x11a74ef, "-18511087", "%ld"}, + {__LINE__, 0x2dc95e17, "768171543", "%-1.d"}, + {__LINE__, -0x0000001, "-1", "%#ld"}, + {__LINE__, 0x00000033, "51", "%-#d"}, + {__LINE__, 0x002d0219, "2949657", "%ld"}, + {__LINE__, 0xfffffffd, "FFFFFFFD", "%2.4X"}, + {__LINE__, 0x00000f20, "+3872", "%+ld"}, + {__LINE__, -0x0000047, "-071", "%4.3ld"}, + {__LINE__, 0x00000010, " 16", "%6d"}, + {__LINE__, 0x00000000, "0", "%0d"}, + {__LINE__, 0xffffff57, "FFFFFF57", "%X"}, + {__LINE__, -0x0000700, "-1792", "%-#d"}, + {__LINE__, -0x0000064, "-100", "%-ld"}, + {__LINE__, 0xff26d49a, "FF26D49A", "%-0X"}, + {__LINE__, -0x0000006, "-6", "%.1ld"}, + {__LINE__, 0x1391edc5, "1391edc5", "%.1x"}, + {__LINE__, 0x0000014a, "330", "%-#ld"}, + {__LINE__, 0x07ecd1e1, "7ecd1e1", "%6x"}, + {__LINE__, -0xa2b8898, "-170625176", "%3.d"}, + {__LINE__, 0x00035287, "0x35287", "%#.0x"}, + {__LINE__, 0x00000000, "00000", "%0.5X"}, + {__LINE__, -0x0000153, "-339", "%d"}, + {__LINE__, 0x0000ad6e, " 44398", "% 0.d"}, + {__LINE__, 0x00000001, "1", "%-X"}, + {__LINE__, -0x000000d, "-13 ", "%-6.2d"}, + {__LINE__, -0x01bff8a, "-1834890", "%d"}, + {__LINE__, 0x000a0fa8, "+659368", "%+ld"}, + {__LINE__, 0xac044dc0, "ac044dc0", "%.0x"}, + {__LINE__, 0x0003a729, "239401", "%ld"}, + {__LINE__, -0x00004f0, "-1264", "%+ld"}, + {__LINE__, 0x00000000, "0", "%x"}, + {__LINE__, 0x00000012, "12", "% x"}, + {__LINE__, 0xffff770b, "ffff770b", "%7.1x"}, + {__LINE__, 0xd7458572, "d7458572", "%x"}, + {__LINE__, 0x01f1b4f9, "1f1b4f9", "% 0x"}, + {__LINE__, 0xfffb2198, "0XFFFB2198", "% #1.X"}, + {__LINE__, 0x00ef6189, " 15688073", "% ld"}, + {__LINE__, -0x3f0ae63, "-66104931", "% #d"}, + {__LINE__, -0x0006075, "-24693", "%ld"}, + {__LINE__, 0x000000a1, "161", "%d"}, + {__LINE__, 0xfffffffc, "fffffffc", "%3.2x"}, + {__LINE__, 0xff6b4125, "FF6B4125", "%+5.X"}, + {__LINE__, 0x00000001, " 1", "%6.d"}, + {__LINE__, -0x0000001, "-1", "%+0d"}, + {__LINE__, -0x000096c, "-2412", "%0.4d"}, + {__LINE__, 0x00039c6f, "236655", "%.0d"}, + {__LINE__, 0x3625286c, "908404844", "%.1d"}, + {__LINE__, 0xfffffffa, "fffffffa", "%x"}, + {__LINE__, 0x00000000, "0", "%X"}, + {__LINE__, 0x00c34353, "12796755", "%#.4d"}, + {__LINE__, 0x000002df, "735", "%ld"}, + {__LINE__, 0xffff38fa, "FFFF38FA", "%5.1X"}, + {__LINE__, -0x000002a, "-42", "%0.d"}, + {__LINE__, 0x0000077e, "1918", "%ld"}, + {__LINE__, 0x000001f7, "503", "%ld"}, + {__LINE__, 0x00000004, "4", "%ld"}, + {__LINE__, 0x0021fb02, "2226946", "%d"}, + {__LINE__, 0x007c858d, "8160653", "%-0d"}, + {__LINE__, -0x0000109, "-265", "%.0d"}, + {__LINE__, 0xfffffffa, "fffffffa", "% x"}, + {__LINE__, 0x0097932d, "97932d", "%+x"}, + {__LINE__, 0xfffbbd03, "fffbbd03", "%-.5x"}, + {__LINE__, -0x0000005, "-5", "%0d"}, + {__LINE__, 0x03ee3a95, "65944213", "%ld"}, + {__LINE__, -0x0000002, " -00002", "%7.5d"}, + {__LINE__, 0xea1a4e54, "EA1A4E54", "%X"}, + {__LINE__, -0x000a9d6, "-43478", "%+d"}, + {__LINE__, -0x0fd8d65, "-16616805", "%5ld"}, + {__LINE__, 0x00000001, "1", "%-d"}, + {__LINE__, 0x00000072, "72", "%2.X"}, + {__LINE__, 0xffffff94, "FFFFFF94", "%X"}, + {__LINE__, 0x00000d2a, "D2A", "%+X"}, + {__LINE__, 0xffff614f, "ffff614f", "%x"}, + {__LINE__, -0x0000018, "-24", "%ld"}, + {__LINE__, 0x0000003b, "059", "%2.3d"}, + {__LINE__, 0x0000001a, "1A", "%0X"}, + {__LINE__, -0x0000109, "-265", "%02ld"}, + {__LINE__, 0x00000f9d, "3997", "%#1d"}, + {__LINE__, 0x0000001b, "1b", "%x"}, + {__LINE__, 0xffffff07, "ffffff07", "%x"}, + {__LINE__, 0xfff1a425, "0xfff1a425", "%#x"}, + {__LINE__, 0x00000005, "5", "%-1d"}, + {__LINE__, -0x53a6efd, "-87715581", "%ld"}, + {__LINE__, 0x042f37db, "42F37DB", "%6.X"}, + {__LINE__, 0x00053bd5, "+342997", "%+5ld"}, + {__LINE__, 0xffffffff, "ffffffff", "% x"}, + {__LINE__, 0xffffffef, "FFFFFFEF", "%6.X"}, + {__LINE__, -0x10ec29a, "-17744538", "%+2.d"}, + {__LINE__, 0x01dcc901, "1dcc901", "%x"}, + {__LINE__, 0x0007dc68, "515176", "%-3.d"}, + {__LINE__, -0x0000062, "-0098", "%#2.4d"}, + {__LINE__, 0x00000000, " ", "%3.0X"}, + {__LINE__, -0x00000de, "-222", "%ld"}, + {__LINE__, 0x000c1fb8, "C1FB8", "%0X"}, + {__LINE__, 0x0005bf58, "5BF58", "%X"}, + {__LINE__, -0x000dd1b, "-56603", "%-03.1d"}, + {__LINE__, 0x00000b14, "B14", "%+3.X"}, + {__LINE__, 0x00000799, "799", "%-x"}, + {__LINE__, 0xfffffffa, "fffffffa", "%x"}, + {__LINE__, 0x00000003, "0x00003", "% #7.5x"}, + {__LINE__, -0x002b9f1, "-178673", "%+d"}, + {__LINE__, -0x001b817, "-112663", "%0d"}, + {__LINE__, 0xf6f98533, "f6f98533", "%.1x"}, + {__LINE__, 0x00338ffc, "3379196", "%d"}, + {__LINE__, 0x0409e9b5, "0X409E9B5", "%#X"}, + {__LINE__, 0x00b8e98e, " 12118414", "% 0d"}, + {__LINE__, -0x002a8f6, "-174326", "%ld"}, + {__LINE__, 0x13bb9722, "331061026", "%0d"}, + {__LINE__, 0x00063c71, "63c71", "%x"}, + {__LINE__, 0xfffffe37, "FFFFFE37", "%.1X"}, + {__LINE__, 0xffff7b3e, "ffff7b3e", "%+.1x"}, + {__LINE__, 0x005eeab1, "5eeab1", "%+x"}, + {__LINE__, 0xffc69e99, "ffc69e99", "%x"}, + {__LINE__, -0x000005c, " -92", "%5ld"}, + {__LINE__, 0x07d8fa8a, "7d8fa8a", "%x"}, + {__LINE__, 0x00030e0a, "200202", "%-4.1d"}, + {__LINE__, 0x00001dc1, "1DC1", "%.0X"}, + {__LINE__, 0x00000008, "8", "%0ld"}, + {__LINE__, -0x01b5397, "-1790871", "%3.d"}, + {__LINE__, 0x27fbb4b5, "27fbb4b5", "%x"}, + {__LINE__, -0xe3fdcfc, "-239066364", "%4ld"}, + {__LINE__, 0x0008bcb1, "8bcb1", "%0x"}, + {__LINE__, 0xffff039e, "ffff039e", "%.6x"}, + {__LINE__, 0x000d0bd4, "d0bd4", "%-x"}, + {__LINE__, 0x00000000, "+0", "%+d"}, + {__LINE__, -0x2a49ea4, "-44342948", "%1d"}, + {__LINE__, -0x0000055, "-85", "%0d"}, + {__LINE__, -0x0000a05, "-2565", "%3.3ld"}, + {__LINE__, -0x000000b, "-11 ", "%-4d"}, + {__LINE__, 0xfff30444, "FFF30444", "%7.X"}, + {__LINE__, 0x0000003f, "63", "%-0d"}, + {__LINE__, 0x00046779, "46779", "%X"}, + {__LINE__, 0x000028d7, " 0X28D7", "%#7.X"}, + {__LINE__, 0x00000019, " 19", "%5x"}, + {__LINE__, 0x0032291d, "3287325", "%2.ld"}, + {__LINE__, 0x00057afa, "57AFA", "%X"}, + {__LINE__, 0xfffe8c64, "fffe8c64", "%3.4x"}, + {__LINE__, -0x624110d6, "-1648431318", "%+6d"}, + {__LINE__, 0x0000001a, " 26", "% 5.d"}, + {__LINE__, 0xfffffffd, "FFFFFFFD", "%6.X"}, + {__LINE__, 0x00199490, "1676432", "%-1d"}, + {__LINE__, -0xfff8265, "-268403301", "%-0ld"}, + {__LINE__, 0x0000000e, "e", "%-x"}, + {__LINE__, 0x00c38aec, "c38aec", "%x"}, + {__LINE__, -0x00658f4, "-415988", "%#ld"}, + {__LINE__, 0x0066ac4e, "6728782", "%0d"}, + {__LINE__, 0xc4a808d5, "c4a808d5", "%x"}, + {__LINE__, 0x00000000, " 0", "%6.1x"}, + {__LINE__, 0x00066d24, "66d24", "%x"}, + {__LINE__, 0x00002117, "2117", "%X"}, + {__LINE__, 0xfe06fdf4, "FE06FDF4", "%0X"}, + {__LINE__, 0xfffffff9, "fffffff9", "%x"}, + {__LINE__, 0x1c6bb795, "+476821397", "%+d"}, + {__LINE__, 0xfffffba4, "FFFFFBA4", "%X"}, + {__LINE__, 0xfffd7d44, "fffd7d44", "%0x"}, + {__LINE__, 0x0019dd17, "1694999", "%d"}, + {__LINE__, 0x6475851e, "0x6475851e", "% #7.x"}, + {__LINE__, -0x00330d5, "-209109", "%0ld"}, + {__LINE__, 0x009f53f7, "09F53F7", "%+6.7X"}, + {__LINE__, -0x00172f9, " -94969", "%7.5ld"}, + {__LINE__, 0xffffffdc, "FFFFFFDC", "%X"}, + {__LINE__, -0x013bdec, "-1293804", "%+#2ld"}, + {__LINE__, 0xfff845c0, "fff845c0", "%+7.x"}, + {__LINE__, -0x0fbe712, "-16508690", "%.7d"}, + {__LINE__, 0xffffe13f, "ffffe13f", "%x"}, + {__LINE__, 0xbbc19951, "BBC19951", "%-4X"}, + {__LINE__, -0x28d6d1b, "-42822939", "%#d"}, + {__LINE__, -0x93cda6b, "-154983019", "%-d"}, + {__LINE__, 0xffc93342, "FFC93342", "%7.X"}, + {__LINE__, 0x072ac8b3, " 120244403", "% ld"}, + {__LINE__, 0xfff8d17b, "FFF8D17B", "% X"}, + {__LINE__, 0x00000da5, "DA5", "%0.X"}, + {__LINE__, 0x055ad3ac, "0x55ad3ac", "%#1x"}, + {__LINE__, 0x00000e5a, " 3674", "% .4ld"}, + {__LINE__, 0xffffff79, "FFFFFF79", "%+X"}, + {__LINE__, 0xffffe167, "ffffe167", "%+5x"}, + {__LINE__, 0x0000fa50, "0064080", "%.7ld"}, + {__LINE__, 0x00000001, "1", "%-d"}, + {__LINE__, 0xfffffffe, "fffffffe", "%x"}, + {__LINE__, 0x000009ac, " 2476", "% #2.ld"}, + {__LINE__, 0x00000e78, "0003704", "%.7ld"}, + {__LINE__, -0x000dfc3, "-57283", "%6.d"}, + {__LINE__, 0x00000ee0, "EE0", "%0X"}, + {__LINE__, -0x293703b3, "-691471283", "%ld"}, + {__LINE__, 0x000073e8, " 73e8", "%6x"}, + {__LINE__, 0xffffdffd, "ffffdffd", "%5.5x"}, + {__LINE__, 0x00000004, "4", "%+00.x"}, + {__LINE__, 0x00000008, "0X8", "%#X"}, + {__LINE__, 0x0003044c, "3044c", "%0x"}, + {__LINE__, 0xffc2095e, "FFC2095E", "%0X"}, + {__LINE__, 0x00000aac, "0002732", "%-.7ld"}, + {__LINE__, 0xffffff79, "FFFFFF79", "%+1.X"}, + {__LINE__, 0x53a0f94a, " 1403058506", "% 2.4ld"}, + {__LINE__, 0x000e928d, "e928d", "%x"}, + {__LINE__, 0x0024127a, "2364026", "%5.d"}, + {__LINE__, 0x000f7c1c, " 1014812", "% 2.d"}, + {__LINE__, -0x000003d, "-61 ", "%-#4ld"}, + {__LINE__, -0x0000122, "-290", "%+ld"}, + {__LINE__, 0x00000006, "+6", "%+0d"}, + {__LINE__, 0x00000129, " 000129", "%7.6X"}, + {__LINE__, 0x15d873e5, " 366506981", "% 5.7d"}, + {__LINE__, 0x00000001, "1", "%d"}, + {__LINE__, 0x038d6110, "+59597072", "%+d"}, + {__LINE__, 0x0f46ccc3, "256298179", "%-1.4d"}, + {__LINE__, 0xfe434d21, "fe434d21", "%x"}, + {__LINE__, -0x179797d7, "-395810775", "%d"}, + {__LINE__, 0xe35807bf, "e35807bf", "%x"}, + {__LINE__, 0x00000003, " +3", "%+7d"}, + {__LINE__, 0x017e699e, "25061790", "%#ld"}, + {__LINE__, -0x0000029, "-41", "%d"}, + {__LINE__, 0xffffff11, "ffffff11", "%1.x"}, + {__LINE__, -0x0001bf6, "-7158", "%+0ld"}, + {__LINE__, 0xffffff4b, "FFFFFF4B", "%4X"}, + {__LINE__, -0x0000040, "-64", "%ld"}, + {__LINE__, 0x000034d6, "+13526", "%+ld"}, + {__LINE__, 0xffffffa7, "ffffffa7", "%x"}, + {__LINE__, 0xfffffe8e, "fffffe8e", "%+.3x"}, + {__LINE__, 0x00000000, "0", "%0.1d"}, + {__LINE__, -0x007cdf1, "-511473", "%ld"}, + {__LINE__, 0xfffffeef, "FFFFFEEF", "%-X"}, + {__LINE__, 0x00002d91, "2d91", "%x"}, + {__LINE__, -0x000025b, "-603", "%#ld"}, + {__LINE__, -0x000001b, "-27", "%-ld"}, + {__LINE__, 0x042b6752, "42B6752", "%+X"}, + {__LINE__, -0x75afb0a6, "-1974448294", "% ld"}, + {__LINE__, -0x0000001, "-1", "%ld"}, + {__LINE__, 0x00000542, " 1346", "%6d"}, + {__LINE__, -0x0000010, "-16", "%+0d"}, + {__LINE__, 0xfffed8f7, "FFFED8F7", "%5.X"}, + {__LINE__, 0x0541852e, "541852e", "% 2.x"}, + {__LINE__, 0xff22aec3, "ff22aec3", "% .1x"}, + {__LINE__, 0x5e34b745, "1580513093", "%ld"}, + {__LINE__, 0xfffffff3, "fffffff3", "%x"}, + {__LINE__, 0x0eda7b86, "+249199494", "%+.3d"}, + {__LINE__, 0xffffe40f, "ffffe40f", "%+x"}, + {__LINE__, -0x0003484, "-13444", "%-1.5ld"}, + {__LINE__, 0x0000334b, " 13131", "%6.ld"}, + {__LINE__, -0x0000149, "-329", "%ld"}, + {__LINE__, 0x00000001, " 001", "% 5.3x"}, + {__LINE__, 0xffeaa035, "ffeaa035", "%+3.5x"}, + {__LINE__, 0x00211dff, "2170367", "%ld"}, + {__LINE__, 0x007e91f4, "7e91f4", "%x"}, + {__LINE__, 0xfffffffc, "0xfffffffc", "%+#5x"}, + {__LINE__, 0xfffffffc, "FFFFFFFC", "%6.X"}, + {__LINE__, 0x0156a9b5, "156a9b5", "%x"}, + {__LINE__, 0xfffffe58, "fffffe58", "%+x"}, + {__LINE__, 0xffff8c66, "FFFF8C66", "%.0X"}, + {__LINE__, 0x00000000, "0", "%d"}, + {__LINE__, 0x00000005, " 5", "%7.d"}, + {__LINE__, -0x0000002, "-2", "%ld"}, + {__LINE__, 0x000076b9, " 30393", "% ld"}, + {__LINE__, 0x00003824, "3824", "%4X"}, + {__LINE__, 0x00000cdf, " CDF", "% 7X"}, + {__LINE__, 0x017c9e8f, "17C9E8F", "%-X"}, + {__LINE__, -0x20f582d, "-34560045", "%-.5d"}, + {__LINE__, 0x0000732e, " 29486", "% 7.ld"}, + {__LINE__, 0xffffffff, "FFFFFFFF", "%+0X"}, + {__LINE__, 0xf379a4a2, "F379A4A2", "% .7X"}, + {__LINE__, -0x0000028, "-40", "%-d"}, + {__LINE__, 0xe73cf79e, "e73cf79e", "%x"}, + {__LINE__, 0x00000002, " 2", "%7ld"}, + {__LINE__, -0x00029b1, "-10673", "%-#1.ld"}, + {__LINE__, -0x0002a58, "-10840", "%3.d"}, + {__LINE__, 0x00000002, "2", "%-X"}, + {__LINE__, 0xfffffffc, "FFFFFFFC", "%X"}, + {__LINE__, -0x000003a, " -58", "%5ld"}, + {__LINE__, 0x0245ef3b, "245ef3b", "%.3x"}, + {__LINE__, 0x00026cca, "158922", "%-06.3ld"}, + {__LINE__, 0x01016fd3, "16871379", "%-d"}, + {__LINE__, 0x000016fc, "5884", "%0ld"}, + {__LINE__, -0x00007fb, " -2043", "%7.3d"}, + {__LINE__, 0xfff73d3c, "fff73d3c", "%0x"}, + {__LINE__, -0x0000110, "-272", "% 04.3d"}, + {__LINE__, 0x0000000e, " 014", "% 04ld"}, + {__LINE__, -0x0000039, "-57", "%.0ld"}, + {__LINE__, 0x00000c95, "c95", "%0x"}, + {__LINE__, 0xffff3b2e, "ffff3b2e", "%x"}, + {__LINE__, 0xfffffffe, "FFFFFFFE", "%X"}, + {__LINE__, 0x00000015, "21", "%.1d"}, + {__LINE__, 0x0000000c, "+12", "%+ld"}, + {__LINE__, 0x00000000, "0", "%+X"}, + {__LINE__, 0xfffc9a14, "fffc9a14", "%-.5x"}, + {__LINE__, 0x0000003c, "60", "%.2ld"}, + {__LINE__, -0x0000023, " -35", "%6.d"}, + {__LINE__, 0x00000740, "1856", "%ld"}, + {__LINE__, 0x00000160, "160", "% 3.X"}, + {__LINE__, 0x00000006, " 6", "%5.X"}, + {__LINE__, -0x0000677, "-1655", "%.3ld"}, + {__LINE__, 0x12709c7e, "12709C7E", "%.7X"}, + {__LINE__, 0x0000090f, "+2319", "%+#d"}, + {__LINE__, 0xffffffe0, "0xffffffe0", "%#4.1x"}, + {__LINE__, 0x00132ce0, "1256672", "%ld"}, + {__LINE__, 0x00000059, "59", "%+X"}, + {__LINE__, -0x0000017, "-23", "%0d"}, + {__LINE__, -0x01fade6, "-2076134", "%-4.3ld"}, + {__LINE__, 0x000df3fa, "914426", "%.5ld"}, + {__LINE__, 0xfffffd0f, "fffffd0f", "%7x"}, + {__LINE__, -0x000c212, "-49682", "%0.1ld"}, + {__LINE__, 0xffff8bcb, "FFFF8BCB", "%.3X"}, + {__LINE__, 0x0000000a, "a", "% x"}, + {__LINE__, 0x00000021, "21", "%x"}, + {__LINE__, -0x0000040, "-64", "% 1ld"}, + {__LINE__, 0x00000009, " 9", "%6.ld"}, + {__LINE__, -0x0000d67, "-3431", "% 5.3d"}, + {__LINE__, 0x03a85f1b, "61366043", "%ld"}, + {__LINE__, 0x00000035, "000053", "%0.6d"}, + {__LINE__, 0xfffda5cb, "fffda5cb", "%+x"}, + {__LINE__, 0xffffff78, "FFFFFF78", "%-7.0X"}, + {__LINE__, 0xfffffd6d, "fffffd6d", "%7.x"}, + {__LINE__, 0xfffffc08, "fffffc08", "%7.3x"}, + {__LINE__, 0x00003335, " 13109", "% #d"}, + {__LINE__, -0x0000002, " -2", "%5.d"}, + {__LINE__, -0x13767a48, "-326531656", "%+ld"}, + {__LINE__, 0x00000be5, "3045", "%4.0ld"}, + {__LINE__, 0xfffdb28c, "FFFDB28C", "%X"}, + {__LINE__, 0x00127118, "1208600", "%ld"}, + {__LINE__, 0x00000086, " 134", "% ld"}, + {__LINE__, 0x0002214c, "2214c", "%+x"}, + {__LINE__, 0x0000a0c2, " a0c2", "%5.0x"}, + {__LINE__, -0x000007c, "-124", "%ld"}, + {__LINE__, 0x0000012a, "00298", "%3.5d"}, + {__LINE__, 0xfd4f1257, "FD4F1257", "%+2.X"}, + {__LINE__, 0xffffd8aa, "ffffd8aa", "%5x"}, + {__LINE__, -0x00000a7, "-167", "%+ld"}, + {__LINE__, -0x0009c69, "-40041", "%0.0ld"}, + {__LINE__, 0x02230418, "35849240", "%-0.6ld"}, + {__LINE__, 0x00000000, " 0", "%6x"}, + {__LINE__, 0xfffff184, "fffff184", "%02.5x"}, + {__LINE__, -0x0ae967b, "-11441787", "%d"}, + {__LINE__, 0x0015de3a, "1433146", "%-5.3d"}, + {__LINE__, -0x0071e93, "-466579", "%1.ld"}, + {__LINE__, 0xfffff8bd, "fffff8bd", "%+x"}, + {__LINE__, -0x00000e4, "-228", "%+ld"}, + {__LINE__, 0x000001d8, " 472", "% .3ld"}, + {__LINE__, 0x00315faa, "315faa", "%-0x"}, + {__LINE__, 0x00000e59, "e59", "%0x"}, + {__LINE__, -0x0000005, "-5", "%ld"}, + {__LINE__, 0x000018ec, "6380", "%ld"}, + {__LINE__, 0xfffffff9, "fffffff9", "%5.2x"}, + {__LINE__, -0xe7cfd39, "-243072313", "%-d"}, + {__LINE__, 0x0002c30b, "2C30B", "%1.2X"}, + {__LINE__, 0x0000007a, "7A", "%X"}, + {__LINE__, 0xf604ecb2, "F604ECB2", "%2X"}, + {__LINE__, -0x05f602c, "-6250540", "%d"}, + {__LINE__, 0xffff9c86, "ffff9c86", "%2.x"}, + {__LINE__, -0x00d7f55, "-884565", "%#d"}, + {__LINE__, 0xd2a37824, "D2A37824", "%4X"}, + {__LINE__, 0x00000000, "", "%-.0x"}, + {__LINE__, 0x000d4b51, "0d4b51", "%3.6x"}, + {__LINE__, 0x000ecd97, "ecd97", "% x"}, + {__LINE__, -0x0000018, "-024", "%+04ld"}, + {__LINE__, -0x009f292, "-651922", "%ld"}, + {__LINE__, -0x0002da9, "-11689", "%-0ld"}, + {__LINE__, -0x000a218, "-41496", "%4.5d"}, + {__LINE__, 0xffff85ac, "FFFF85AC", "% 04.X"}, + {__LINE__, -0x0d9ffbe, "-14286782", "%0d"}, + {__LINE__, 0xfb18cc8e, "fb18cc8e", "%x"}, + {__LINE__, 0xffffe5d3, "FFFFE5D3", "%-X"}, + {__LINE__, 0x00000000, "0", "%x"}, + {__LINE__, -0x0000006, "-6", "% d"}, + {__LINE__, 0x0002fc62, "2fc62", "% 03.x"}, + {__LINE__, 0x00000000, "00", "%.2d"}, + {__LINE__, -0x00000fd, " -253", "%6ld"}, + {__LINE__, -0x000000b, "-11", "%d"}, + {__LINE__, -0x00042a3, "-17059", "% 6d"}, + {__LINE__, 0x00000002, "2", "% X"}, + {__LINE__, -0x61ead93e, "-1642780990", "%-0d"}, + {__LINE__, 0xf2e61f6d, "f2e61f6d", "%-.4x"}, + {__LINE__, 0xffd31b93, "ffd31b93", "%x"}, + {__LINE__, -0x0000008, "-8", "%ld"}, + {__LINE__, 0xffffffff, "ffffffff", "%00x"}, + {__LINE__, 0x000000fb, "+000251", "%+2.6d"}, + {__LINE__, 0x00000015, " 15", "%4.X"}, + {__LINE__, 0x06ec6d96, "6EC6D96", "%+2.X"}, + {__LINE__, 0xffff1df7, "0xffff1df7", "% #1x"}, + {__LINE__, -0x000004b, "-75", "%-ld"}, + {__LINE__, 0x00000008, "8", "%#.0d"}, + {__LINE__, 0x00001355, "4949", "%3.4ld"}, + {__LINE__, -0x00000f7, "-247", "%d"}, + {__LINE__, 0x0000001f, "31", "%.2ld"}, + {__LINE__, 0x0000d556, "D556", "%-X"}, + {__LINE__, 0xffffd5a5, "ffffd5a5", "% x"}, + {__LINE__, -0x0000e34, "-3636", "%#d"}, + {__LINE__, -0x0000007, "-7", "%d"}, + {__LINE__, 0x01ba10a4, "1ba10a4", "%x"}, + {__LINE__, 0xfffff759, "FFFFF759", "% X"}, + {__LINE__, -0x80d0adb, "-135072475", "%d"}, + {__LINE__, 0x0002bf61, "2bf61", "%x"}, + {__LINE__, 0xffff008b, "FFFF008B", "%-7X"}, + {__LINE__, 0x00000e72, "E72", "%X"}, + {__LINE__, -0x00000ea, "-234", "%0ld"}, + {__LINE__, -0x0007b9d, "-0031645", "%0.7ld"}, + {__LINE__, 0x0001baaa, "0X1BAAA", "%#4X"}, + {__LINE__, 0x0000a57f, " a57f", "%6.x"}, + {__LINE__, -0x21a73726, "-564606758", "%ld"}, + {__LINE__, 0x06f45c9f, "0x6f45c9f", "%#.3x"}, + {__LINE__, 0x00018e5d, "101981", "%-d"}, + {__LINE__, 0x0001e69a, "124570", "%-d"}, + {__LINE__, -0x0000d26, " -3366", "% 07.d"}, + {__LINE__, 0x00000000, "+", "%+0.ld"}, + {__LINE__, 0x00003916, "14614", "%ld"}, + {__LINE__, 0xfffffd8f, "fffffd8f", "%-3.x"}, + {__LINE__, 0x00000011, "11", "%x"}, + {__LINE__, 0x000000e7, "E7", "%X"}, + {__LINE__, 0xfdf9d89b, "FDF9D89B", "%X"}, + {__LINE__, 0x00000a7c, "a7c", "%x"}, + {__LINE__, 0x0000003f, "00003F", "%.6X"}, + {__LINE__, 0xffffe729, "FFFFE729", "%X"}, + {__LINE__, 0xfffffffe, "fffffffe", "% .6x"}, + {__LINE__, -0x0000a4b, "-2635", "%+d"}, + {__LINE__, 0xffffff50, "ffffff50", "%0.7x"}, + {__LINE__, 0xfaf57e8b, "faf57e8b", "% 4.x"}, + {__LINE__, -0x0000056, "-86", "%ld"}, + {__LINE__, 0x08ed2a4d, "8ed2a4d", "%4x"}, + {__LINE__, 0xff8d9081, "FF8D9081", "%+0.X"}, + {__LINE__, 0x002730a1, "2568353", "%4d"}, + {__LINE__, 0xffff9564, "ffff9564", "%x"}, + {__LINE__, -0x0000006, " -6", "%4ld"}, + {__LINE__, -0x19890310, "-428409616", "%0ld"}, + {__LINE__, 0xd2ce636c, "d2ce636c", "%+x"}, + {__LINE__, -0x00001fe, "-510", "%d"}, + {__LINE__, 0x00000006, "0000006", "%+0.7x"}, + {__LINE__, 0xffffffc2, "0XFFFFFFC2", "%-#.5X"}, + {__LINE__, -0x00000fd, "-253", "%+d"}, + {__LINE__, 0x000216aa, "0x216aa", "%#x"}, + {__LINE__, 0xffe36c66, "ffe36c66", "%x"}, + {__LINE__, 0x00000002, "2", "%x"}, + {__LINE__, -0x0000025, "-37", "% d"}, + {__LINE__, 0x0000007e, "126", "%d"}, + {__LINE__, 0x0003c1f9, "+246265", "%+ld"}, + {__LINE__, 0x00000001, "1", "%ld"}, + {__LINE__, -0x0000001, "-1", "%ld"}, + {__LINE__, -0x00539e7, "-342503", "%06.ld"}, + {__LINE__, 0x00000d42, " 3394", "%#6.ld"}, + {__LINE__, 0xf73b7c4e, "F73B7C4E", "%X"}, + {__LINE__, 0x00000022, "22", "%.1x"}, + {__LINE__, 0xffffa883, "FFFFA883", "%X"}, + {__LINE__, 0x016ec247, "16ec247", "%x"}, + {__LINE__, 0x00000019, "19", "%+X"}, + {__LINE__, 0x0000665a, "665A", "% 2.X"}, + {__LINE__, 0xfffffffc, "FFFFFFFC", "%-5.X"}, + {__LINE__, 0x008e3fbc, "8E3FBC", "%X"}, + {__LINE__, 0xfffffffa, "FFFFFFFA", "%X"}, + {__LINE__, 0x1b806597, "461399447", "%.2d"}, + {__LINE__, 0x00000366, "0000870", "%#1.7ld"}, + {__LINE__, 0x0001d92e, "1d92e", "%x"}, + {__LINE__, 0x000104ce, "104CE", "%-X"}, + {__LINE__, 0xfffffe4c, "fffffe4c", "%x"}, + {__LINE__, 0x000000e9, "E9", "%X"}, + {__LINE__, 0x000a855c, " 689500", "% d"}, + {__LINE__, 0x00000075, "75", "% X"}, + {__LINE__, -0x0000026, "-38", "%ld"}, + {__LINE__, 0xfffff169, "fffff169", "%-04.2x"}, + {__LINE__, 0xffffff6f, "ffffff6f", "%x"}, + {__LINE__, 0x00000003, "0x3", "%#x"}, + {__LINE__, 0x00623bab, "6437803", "%.0d"}, + {__LINE__, -0x2260224c, "-576725580", "%ld"}, + {__LINE__, 0xe7e7a998, "E7E7A998", "%.1X"}, + {__LINE__, 0x00000005, "5", "%X"}, + {__LINE__, 0x0000b560, "0xb560", "%#x"}, + {__LINE__, 0xfe11854d, "fe11854d", "%-.5x"}, + {__LINE__, 0x00190014, "1638420", "%ld"}, + {__LINE__, 0x0001d22a, "0X1D22A", "%-#X"}, + {__LINE__, 0x00000c16, "c16", "%2x"}, + {__LINE__, 0x00000d1a, "3354", "%#d"}, + {__LINE__, 0x000165f6, "91638", "%d"}, + {__LINE__, 0xfffff557, "0XFFFFF557", "%#X"}, + {__LINE__, 0x00000588, " 588", "%07.X"}, + {__LINE__, 0xf4a72708, "f4a72708", "%x"}, + {__LINE__, 0xfff1cba9, "0xfff1cba9", "% #2.5x"}, + {__LINE__, 0x000333a4, "209828", "%d"}, + {__LINE__, 0x0000179b, "179B", "% 2.X"}, + {__LINE__, 0x00000460, "1120", "%0ld"}, + {__LINE__, 0xffffff89, "FFFFFF89", "%X"}, + {__LINE__, -0x0000012, "-18", "%ld"}, + {__LINE__, 0x00004fe0, "20448", "%0.d"}, + {__LINE__, 0x00532e77, "532e77", "%00.x"}, + {__LINE__, 0xf7b92efe, "f7b92efe", "%0x"}, + {__LINE__, -0x0000243, "-579", "%+1.d"}, + {__LINE__, 0x34894bb7, "+881413047", "%+d"}, + {__LINE__, 0xfffaa189, "FFFAA189", "% 6X"}, + {__LINE__, -0x0000579, "-1401", "%+ld"}, + {__LINE__, 0x005acb12, "5acb12", "%5.0x"}, + {__LINE__, 0xffff890a, "FFFF890A", "%X"}, + {__LINE__, 0x010dff2f, "10DFF2F", "%.7X"}, + {__LINE__, 0x00005a7f, "23167", "%#ld"}, + {__LINE__, 0x000005e3, "1507", "%#3d"}, + {__LINE__, -0xa815bcb, "-176249803", "%d"}, + {__LINE__, 0xffffffff, "ffffffff", "%+x"}, + {__LINE__, 0xfffe0ff7, "fffe0ff7", "%3x"}, + {__LINE__, 0xffffffff, "0XFFFFFFFF", "%#2.1X"}, + {__LINE__, -0x1cc5ea52, "-482732626", "%6.d"}, + {__LINE__, 0x000425ed, "+0271853", "%+.7d"}, + {__LINE__, 0x00000001, "1", "%+x"}, + {__LINE__, -0x48f2a72, "-76491378", "%7.0d"}, + {__LINE__, 0xfffffff7, "FFFFFFF7", "% 0X"}, + {__LINE__, 0xfd8ffc0a, "fd8ffc0a", "%.1x"}, + {__LINE__, 0x0001f56d, " 1F56D", "%+7.2X"}, + {__LINE__, 0x000000db, " DB", "%6.X"}, + {__LINE__, 0xffffffc2, "ffffffc2", "%x"}, + {__LINE__, 0x00000001, "001", "%03ld"}, + {__LINE__, 0xffd89f58, "ffd89f58", "% 0.x"}, + {__LINE__, 0xfe1a72fc, "fe1a72fc", "%x"}, + {__LINE__, 0xfffff9b6, "FFFFF9B6", "%X"}, + {__LINE__, 0x00243633, "243633", "%X"}, + {__LINE__, 0x00821bc7, "+8526791", "%+#0ld"}, + {__LINE__, 0xfe63f348, "0XFE63F348", "%#3X"}, + {__LINE__, 0xff729f19, "ff729f19", "%4x"}, + {__LINE__, 0xffff570f, "FFFF570F", "%+X"}, + {__LINE__, 0x00a57a42, "10844738", "%6.3d"}, + {__LINE__, 0xfe4a3ed0, "FE4A3ED0", "%6.X"}, + {__LINE__, 0x00000000, "0", "%d"}, + {__LINE__, 0x000001bb, "01bb", "% .4x"}, + {__LINE__, 0x02b4a1e9, "2b4a1e9", "%-7.x"}, + {__LINE__, 0x31750683, "31750683", "%x"}, + {__LINE__, 0x00001cd7, "7383", "%#ld"}, + {__LINE__, 0x0000079d, "1949", "%d"}, + {__LINE__, 0xffb8ff3b, "FFB8FF3B", "%X"}, + {__LINE__, 0x00a768b6, "0A768B6", "%-6.7X"}, + {__LINE__, 0x1c665b48, "0X1C665B48", "% #X"}, + {__LINE__, -0x000037d, "-000893", "%3.6d"}, + {__LINE__, 0x29890443, "29890443", "%+0x"}, + {__LINE__, 0x000000e5, "e5 ", "%-4x"}, + {__LINE__, 0xfff2b5fa, "FFF2B5FA", "%X"}, + {__LINE__, -0x5d32c2b, "-97725483", "%05ld"}, + {__LINE__, -0x00016c5, " -05829", "%+#7.5ld"}, + {__LINE__, 0x00000644, "644", "%X"}, + {__LINE__, -0x018c027, "-1622055", "%+.1d"}, + {__LINE__, 0x0000013c, "0x13c", "%#x"}, + {__LINE__, 0x00000009, "+9", "%+#ld"}, + {__LINE__, 0x00000000, "0", "%ld"}, + {__LINE__, -0x018eb19, "-1633049", "%4.3ld"}, + {__LINE__, 0xfffff429, "FFFFF429", "% X"}, + {__LINE__, 0x0032de67, "32DE67", "%X"}, + {__LINE__, 0x0016bdfa, " 1490426", "% .2ld"}, + {__LINE__, 0x00000065, "65", "%+.0X"}, + {__LINE__, 0x00000072, " 72", "%+4.2X"}, + {__LINE__, 0x00075119, "75119", "%2x"}, + {__LINE__, 0x000000b8, "b8", "%x"}, + {__LINE__, 0x000000d0, "d0", "%x"}, + {__LINE__, 0x000000b9, "b9", "%x"}, + {__LINE__, 0x003fda9d, " 4184733", "% #3.d"}, + {__LINE__, 0x00029a24, "170532", "%4.d"}, + {__LINE__, -0x132a337d, "-321532797", "% ld"}, + {__LINE__, 0x0000047a, "0X47A", "%-#X"}, + {__LINE__, 0x00000000, "0", "%-ld"}, + {__LINE__, -0x0d9750b, "-14251275", "% ld"}, + {__LINE__, 0x00029d6c, "29d6c", "%x"}, + {__LINE__, 0xfb060cc0, "fb060cc0", "%x"}, + {__LINE__, 0xffffd524, "0XFFFFD524", "%#X"}, + {__LINE__, 0xffffff30, "ffffff30", "%-5x"}, + {__LINE__, 0x00001650, "0005712", "%#0.7d"}, + {__LINE__, 0x0000b702, "0B702", "%03.5X"}, + {__LINE__, 0x000003c1, "3c1", "% .1x"}, + {__LINE__, -0x0290412, "-2688018", "%d"}, + {__LINE__, -0x00008bf, "-2239", "%#d"}, + {__LINE__, -0x0000001, "-1", "%d"}, + {__LINE__, 0x0001d750, "1D750", "%-X"}, + {__LINE__, 0x006eee92, "6EEE92", "%-X"}, + {__LINE__, 0xff812b02, "ff812b02", "%0x"}, + {__LINE__, 0xfffffeac, "FFFFFEAC", "%+0X"}, + {__LINE__, 0x000003a5, "3a5", "%x"}, + {__LINE__, -0x15270cee, "-354880750", "%2.ld"}, + {__LINE__, 0x06b686d2, "6b686d2", "%0x"}, + {__LINE__, 0xffe9cdcc, "ffe9cdcc", "%x"}, + {__LINE__, 0x0ecb168e, "ecb168e", "%x"}, + {__LINE__, 0x00000051, "51", "%-X"}, + {__LINE__, -0x0018860, "-100448", "%-0d"}, + {__LINE__, 0x8f08b82b, "0x8f08b82b", "%-#.5x"}, + {__LINE__, 0xffffffff, "ffffffff", "%x"}, + {__LINE__, 0x0000000e, "e", "%+01x"}, + {__LINE__, 0x04cf15bc, " 80680380", "% #ld"}, + {__LINE__, 0x50006e8a, "50006e8a", "%x"}, + {__LINE__, 0x0002f669, "194153", "%0d"}, + {__LINE__, 0x000000a6, " 166", "% 5.ld"}, + {__LINE__, -0x04036bb, "-4208315", "%7.5d"}, + {__LINE__, 0x00070dea, "70DEA", "%+X"}, + {__LINE__, 0x00000964, "0x964", "%#x"}, + {__LINE__, 0x0000004d, "0x4d", "% #3.x"}, + {__LINE__, -0x0000001, "-1", "%-0d"}, + {__LINE__, 0x0000043e, "1086", "%ld"}, + {__LINE__, -0x0000001, "-1", "%-d"}, + {__LINE__, 0x00000000, "+0", "%+d"}, + {__LINE__, 0xfffe68d9, "FFFE68D9", "%7.X"}, + {__LINE__, -0x0169199, "-1479065", "%#.5ld"}, + {__LINE__, -0x000003d, "-61", "%ld"}, + {__LINE__, 0x00000001, "+1", "%+.1d"}, + {__LINE__, 0x0001a65d, "1a65d", "%.5x"}, + {__LINE__, 0x00000141, "+000321", "%+#5.6ld"}, + {__LINE__, 0x00000000, " 0", "%4x"}, + {__LINE__, 0x00000408, "1032", "%-2.3ld"}, + {__LINE__, 0xffffffed, "FFFFFFED", "%-X"}, + {__LINE__, 0xfe832351, "FE832351", "% .4X"}, + {__LINE__, 0x003a421b, "3A421B", "%-X"}, + {__LINE__, -0x53ed7f25, "-1408073509", "%ld"}, + {__LINE__, -0x0000003, "-0003", "%-5.4ld"}, + {__LINE__, 0x00000ad0, " 2768", "%7d"}, + {__LINE__, 0xfffaf30b, "FFFAF30B", "%X"}, + {__LINE__, 0x006349d3, " 6506963", "% 6.2ld"}, + {__LINE__, 0x07f0146a, "7f0146a", "%+3.4x"}, + {__LINE__, -0x0000002, " -2", "% 3.ld"}, + {__LINE__, -0x26e94f3, "-40801523", "%-#ld"}, + {__LINE__, -0x0000004, " -004", "%7.3d"}, + {__LINE__, 0xfffe8cc9, "FFFE8CC9", "%0X"}, + {__LINE__, 0x00000018, " 18", "%5.x"}, + {__LINE__, -0x4941de83, "-1229053571", "% 0.5ld"}, + {__LINE__, 0x00000000, " 0", "%6ld"}, + {__LINE__, 0xfffffffe, "0XFFFFFFFE", "%-#X"}, + {__LINE__, -0x0142ae1, "-1321697", "%4.ld"}, + {__LINE__, -0x0319e7f, "-3251839", "%0ld"}, + {__LINE__, 0x000004ff, " 4FF", "%7.2X"}, + {__LINE__, -0x0001c3e, "-7230", "%#.2ld"}, + {__LINE__, 0xffffe522, "ffffe522", "%x"}, + {__LINE__, 0x0001d1cb, "+119243", "%+.3ld"}, + {__LINE__, 0xfad19d52, "FAD19D52", "%+X"}, + {__LINE__, 0x00002a7c, " 10876", "% 0.ld"}, + {__LINE__, 0x00001449, "1449", "%X"}, + {__LINE__, 0x000732b8, "471736", "%d"}, + {__LINE__, -0x211a496e, "-555370862", "%ld"}, + {__LINE__, -0x0000004, "-4", "%1.d"}, + {__LINE__, 0x0295c03d, "43368509", "%5.ld"}, + {__LINE__, 0x01fa5722, "33183522", "%0ld"}, + {__LINE__, 0xfffbff62, "0xfffbff62", "%#x"}, + {__LINE__, 0x000000f5, " 245", "% 2.d"}, + {__LINE__, 0x000000a0, "160", "%-d"}, + {__LINE__, 0x0000000f, "15", "%.2ld"}, + {__LINE__, 0x0bf5f077, "+200667255", "%+ld"}, + {__LINE__, -0x14d3e5a, "-21839450", "%#2.3d"}, + {__LINE__, -0x21cbe656, "-567010902", "%ld"}, + {__LINE__, 0x000002b9, "697", "%ld"}, + {__LINE__, 0xfffff9b0, "FFFFF9B0", "%X"}, + {__LINE__, 0x007fd9c7, "8378823", "%3.4d"}, + {__LINE__, 0x00036d06, "36d06", "%x"}, + {__LINE__, 0xffde8052, "FFDE8052", "%4.6X"}, + {__LINE__, 0x0000000d, "13", "%#d"}, + {__LINE__, 0x68157d93, "68157d93", "%x"}, + {__LINE__, 0x00000005, "5", "%1x"}, + {__LINE__, 0xfffffff4, "FFFFFFF4", "%X"}, + {__LINE__, 0xf5bbf7e9, "f5bbf7e9", "%+.1x"}, + {__LINE__, 0x0be98f98, "BE98F98", "%X"}, + {__LINE__, 0x00000122, "00122", "%.5X"}, + {__LINE__, -0x0000936, "-2358", "%+#3.0ld"}, + {__LINE__, 0xfd230f09, "FD230F09", "%-7X"}, + {__LINE__, 0x00000089, "137", "%ld"}, + {__LINE__, 0x00000078, " 120", "%7d"}, + {__LINE__, -0x68ef2b6b, "-1760504683", "%-ld"}, + {__LINE__, 0xc24480bb, "C24480BB", "%+4X"}, + {__LINE__, 0xfefe36a2, "FEFE36A2", "%0X"}, + {__LINE__, -0x35344ba, "-55788730", "%7.d"}, + {__LINE__, 0xffffffff, "FFFFFFFF", "%+.6X"}, + {__LINE__, -0x0000f40, "-3904", "% ld"}, + {__LINE__, 0xfffffffb, "FFFFFFFB", "%X"}, + {__LINE__, 0x58b37c4b, "58b37c4b", "%2.2x"}, + {__LINE__, 0x000000e2, "226", "%#ld"}, + {__LINE__, 0xfff5ebde, "fff5ebde", "%-7.1x"}, + {__LINE__, 0x0c6ea9be, "208579006", "%-ld"}, + {__LINE__, 0xff708c74, "FF708C74", "% 4.X"}, + {__LINE__, 0x00000000, " 0", "% 3X"}, + {__LINE__, 0x00000004, " 4", "%03.d"}, + {__LINE__, 0x0919be7c, "+152682108", "%+6.d"}, + {__LINE__, 0x00d4fd1e, "13958430", "%0d"}, + {__LINE__, 0xfe77a69e, "fe77a69e", "%-7.x"}, + {__LINE__, 0x284ded44, "676195652", "%-#2ld"}, + {__LINE__, -0x00006e6, "-1766", "% ld"}, + {__LINE__, -0x7dac7ea, "-131778538", "%.0ld"}, + {__LINE__, 0x0003c50f, "247055", "%#d"}, + {__LINE__, 0xfffffffc, "fffffffc", "%-x"}, + {__LINE__, 0xfe0f0d1f, "fe0f0d1f", "% 5.1x"}, + {__LINE__, 0x00000009, "9", "%0ld"}, + {__LINE__, -0x0175cc1, "-1531073", "%-04.d"}, + {__LINE__, 0x000e4da2, " 937378", "% 4.ld"}, + {__LINE__, 0x00000762, "762", "%-0.X"}, + {__LINE__, 0x005211bf, "5211bf", "%-x"}, + {__LINE__, 0xfffffffb, "fffffffb", "%+2.6x"}, + {__LINE__, 0x00008862, "34914", "%ld"}, + {__LINE__, 0xfffc9754, "fffc9754", "%+x"}, + {__LINE__, 0x0000716e, "716E", "%X"}, + {__LINE__, 0x000000a8, "a8", "%x"}, + {__LINE__, 0xffff84f5, "ffff84f5", "%0x"}, + {__LINE__, 0x00005032, "5032", "%x"}, + {__LINE__, 0xffe242b4, "ffe242b4", "%6x"}, + {__LINE__, 0x002df9bd, "3013053", "%ld"}, + {__LINE__, 0xffffe267, "FFFFE267", "%.5X"}, + {__LINE__, 0xffffffc7, "0xffffffc7", "%#x"}, + {__LINE__, -0x1727c38, "-24280120", "%d"}, + {__LINE__, 0x01308072, "1308072", "%x"}, + {__LINE__, -0x5883c7c, "-92814460", "%+ld"}, + {__LINE__, 0x000030ad, "30ad", "%x"}, + {__LINE__, 0xffffffff, "FFFFFFFF", "%X"}, + {__LINE__, -0x2090a708, "-546350856", "% d"}, + {__LINE__, 0x0024e6b4, "2418356", "%#ld"}, + {__LINE__, 0x02db71ac, "2DB71AC", "% 6.3X"}, + {__LINE__, 0xfffffffc, "FFFFFFFC", "%2.7X"}, + {__LINE__, -0x000074e, " -1870", "%7.ld"}, + {__LINE__, -0x0011d84, "-73092", "%d"}, + {__LINE__, 0x00160723, "160723", "%1.3x"}, + {__LINE__, 0x00412929, "4270377", "%-d"}, + {__LINE__, -0x0008fc6, "-36806", "% d"}, + {__LINE__, 0x00000002, "2", "%d"}, + {__LINE__, 0x0eb67ffa, "eb67ffa", "%.4x"}, + {__LINE__, 0x05b86c3c, "95972412", "%4.4d"}, + {__LINE__, 0xffffca9c, "FFFFCA9C", "% 4.X"}, + {__LINE__, 0x0007d571, "7d571", "%-0x"}, + {__LINE__, -0x000239b, "-09115", "%5.5d"}, + {__LINE__, -0x0000155, " -341", "%5.3ld"}, + {__LINE__, 0x00000034, "34", "%x"}, + {__LINE__, -0x0000051, "-81", "%.1ld"}, + {__LINE__, 0x309bbbe0, "309bbbe0", "%x"}, + {__LINE__, 0x0075be1e, " 7716382", "% #ld"}, + {__LINE__, 0x000002d5, "2d5", "%x"}, + {__LINE__, 0x006b466d, "6B466D", "%-0X"}, + {__LINE__, 0x01d6c30f, "1D6C30F", "%4.X"}, + {__LINE__, 0x00000003, " 3", "%07.x"}, + {__LINE__, 0xfffcc102, "FFFCC102", "%6.X"}, + {__LINE__, 0xffffffff, "0XFFFFFFFF", "%#X"}, + {__LINE__, 0xfffffffe, "fffffffe", "%+x"}, + {__LINE__, 0x00000005, "5", "%ld"}, + {__LINE__, 0xff060284, "ff060284", "%x"}, + {__LINE__, 0x007a3325, "7A3325", "%-X"}, + {__LINE__, 0xf5f595bd, "F5F595BD", "%0X"}, + {__LINE__, 0xfffa3a10, "FFFA3A10", "%0X"}, + {__LINE__, 0x00000000, "0", "%x"}, + {__LINE__, -0x15078f9, "-22051065", "%7d"}, + {__LINE__, -0x0000002, "-000002", "%.6d"}, + {__LINE__, 0x00000036, "54", "%1.1ld"}, + {__LINE__, -0xbbecf6a, "-197054314", "%ld"}, + {__LINE__, 0x0000043d, "43D", "%X"}, + {__LINE__, 0xfffffffa, "0xfffffffa", "% #6.x"}, + {__LINE__, 0x016759f8, "23550456", "%0.ld"}, + {__LINE__, 0x000052d2, "+21202", "%+6.2d"}, + {__LINE__, -0x007d232, "-512562", "%ld"}, + {__LINE__, 0x00240be0, "2362336", "%.1d"}, + {__LINE__, -0x0000001, "-1", "%0d"}, + {__LINE__, 0xfffffffa, "FFFFFFFA", "%X"}, + {__LINE__, -0x0000e88, "-3720", "%ld"}, + {__LINE__, 0xfffffa9b, "FFFFFA9B", "%.5X"}, + {__LINE__, 0x09296eeb, "153710315", "%-1.0d"}, + {__LINE__, 0x001f46fc, "0X1F46FC", "%#X"}, + {__LINE__, 0x00000006, "6", "%X"}, + {__LINE__, 0xffffff87, "0XFFFFFF87", "%+#X"}, + {__LINE__, 0x00000469, "0469", "%04X"}, + {__LINE__, -0x0000001, "-1", "%ld"}, + {__LINE__, 0x00000000, "", "%.0ld"}, + {__LINE__, -0x52bc137, "-86753591", "%-#3ld"}, + {__LINE__, -0x2bddb08, "-45996808", "%-3.d"}, + {__LINE__, 0x041367f7, "41367F7", "%+X"}, + {__LINE__, -0x0018eb5, "-102069", "%+ld"}, + {__LINE__, -0x0000537, "-1335", "%#ld"}, + {__LINE__, -0x6f159ff4, "-1863688180", "%+1.d"}, + {__LINE__, 0x00112ac8, "0X112AC8", "%#6.3X"}, + {__LINE__, 0x00000000, " ", "%3.d"}, + {__LINE__, 0x0008afe8, "08afe8", "%+3.6x"}, + {__LINE__, 0x00000015, "21", "%ld"}, + {__LINE__, -0x02b7130, "-2847024", "% #2.4d"}, + {__LINE__, 0xffffffd0, "FFFFFFD0", "%X"}, + {__LINE__, -0x6970fa1, "-110563233", "%+#.4ld"}, + {__LINE__, 0x06387dcc, "0X6387DCC", "%-#X"}, + {__LINE__, 0xffffd506, "ffffd506", "%+6x"}, + {__LINE__, -0x00fe5cd, "-1041869", "%-#7d"}, + {__LINE__, -0x0c35bf6, "-12803062", "%-03d"}, + {__LINE__, -0x0020d89, "-134537", "%#d"}, + {__LINE__, -0x0c7aed3, "-13086419", "%-ld"}, + {__LINE__, -0x000362a, "-13866", "%#.4ld"}, + {__LINE__, -0x02d05f0, "-2950640", "%#ld"}, + {__LINE__, 0x02de1321, "0x2de1321", "%#7.x"}, + {__LINE__, 0xffb56428, "0xffb56428", "%#x"}, + {__LINE__, 0xfffffffe, "FFFFFFFE", "%X"}, + {__LINE__, 0xf072292d, "F072292D", "%.5X"}, + {__LINE__, -0x0f4b0f2, "-16036082", "%.5ld"}, + {__LINE__, 0x01b81885, "28842117", "%5d"}, + {__LINE__, -0x009cfa6, "-642982", "%d"}, + {__LINE__, 0xfffffffd, "0XFFFFFFFD", "%-#.5X"}, + {__LINE__, 0x0dc97a66, "DC97A66", "%2.X"}, + {__LINE__, 0x000000be, "190", "%.0d"}, + {__LINE__, 0xffffe1c7, "FFFFE1C7", "% X"}, + {__LINE__, 0x01883b9a, "1883b9a", "%3x"}, + {__LINE__, 0xffffdde1, "ffffdde1", "%+x"}, + {__LINE__, 0x2f1b4e32, "+790318642", "%+ld"}, + {__LINE__, 0x000129aa, "129aa", "%x"}, + {__LINE__, -0x00092c2, "-37570", "%d"}, + {__LINE__, 0x00070fbd, "70fbd", "%x"}, + {__LINE__, -0x00000ea, "-234", "%+4ld"}, + {__LINE__, 0xfffffffe, "fffffffe", "%x"}, + {__LINE__, 0x0091c7f7, "91C7F7", "% .3X"}, + {__LINE__, -0x0c14fe2, "-12668898", "%d"}, + {__LINE__, -0x0017c15, "-97301", "%d"}, + {__LINE__, -0x00005d0, "-0001488", "%5.7d"}, + {__LINE__, 0x0114c36e, "18137966", "%0d"}, + {__LINE__, 0xffffffff, "ffffffff", "%+x"}, + {__LINE__, 0x0ac76e78, "180842104", "%d"}, + {__LINE__, 0x001976cd, " 1668813", "% 4.ld"}, + {__LINE__, -0x0642319, "-6562585", "% d"}, + {__LINE__, 0xffffffff, "FFFFFFFF", "%X"}, + {__LINE__, -0x035019d, "-3473821", "%.7d"}, + {__LINE__, -0x0000061, "-97", "%#3.d"}, + {__LINE__, 0x0000001f, " 31", "% 6.1ld"}, + {__LINE__, -0x0000024, "-36", "%d"}, + {__LINE__, 0x000b3785, "735109", "%ld"}, + {__LINE__, 0xfffffda9, "fffffda9", "%-x"}, + {__LINE__, 0x00254832, "2443314", "%-ld"}, + {__LINE__, 0xfffffd40, "FFFFFD40", "%0X"}, + {__LINE__, -0x0006105, "-24837", "%+#d"}, + {__LINE__, 0x00000006, "+6", "%+d"}, + {__LINE__, 0xffd40fd8, "ffd40fd8", "%3.x"}, + {__LINE__, -0x000988e, "-39054", "%03d"}, + {__LINE__, 0x0005ad8b, "5AD8B", "%0.0X"}, + {__LINE__, 0x00000001, "1", "%d"}, + {__LINE__, 0xfe1f59b7, "fe1f59b7", "%4.x"}, + {__LINE__, -0x0000022, "-34", "%#d"}, + {__LINE__, 0x0018e3e9, "18E3E9", "% X"}, + {__LINE__, 0xffffff25, "FFFFFF25", "%2.X"}, + {__LINE__, -0x00002c6, "-710", "%1.ld"}, + {__LINE__, 0x00009765, "38757", "%5ld"}, + {__LINE__, 0xfe197646, "FE197646", "%-X"}, + {__LINE__, 0x00000001, " 1", "%+5.x"}, + {__LINE__, -0x0000002, "-2", "%#ld"}, + {__LINE__, 0x0072f6be, "72F6BE", "%1X"}, + {__LINE__, -0x000f06d, "-61549", "%-d"}, + {__LINE__, 0x00000001, " 1", "%5X"}, + {__LINE__, 0x328cba28, " 848083496", "% 2.ld"}, + {__LINE__, 0x0000cddc, "cddc", "%.1x"}, + {__LINE__, 0xfffffff9, "fffffff9", "%7x"}, + {__LINE__, 0x00baf511, "BAF511", "%-5.6X"}, + {__LINE__, 0x00000001, " 1", "%4.ld"}, + {__LINE__, 0x0001e4b0, "+124080", "%+ld"}, + {__LINE__, -0x07548f3, "-7686387", "% 6.d"}, + {__LINE__, -0x01b14ea, "-1774826", "% #0d"}, + {__LINE__, -0x000005c, "-92 ", "%-04ld"}, + {__LINE__, -0x00000ae, "-174", "%+.3ld"}, + {__LINE__, 0x0000008c, "0X8C", "%+#X"}, + {__LINE__, 0x14c02360, "14C02360", "%.6X"}, + {__LINE__, 0xfffffff6, "FFFFFFF6", "%X"}, + {__LINE__, 0x009f4ee5, "9f4ee5", "%x"}, + {__LINE__, 0x00000035, "35", "%X"}, + {__LINE__, -0x00000eb, "-235", "%ld"}, + {__LINE__, 0x1552ced8, "1552CED8", "%04X"}, + {__LINE__, 0x0000002a, " 2A", "%5X"}, + {__LINE__, 0xffffffff, "ffffffff", "% x"}, + {__LINE__, -0xdec0db2, "-233573810", "%d"}, + {__LINE__, 0x001e2ef0, "1978096", "%2.d"}, + {__LINE__, 0xffffef24, "ffffef24", "%.5x"}, + {__LINE__, 0xfffe6a6c, "fffe6a6c", "%+x"}, + {__LINE__, -0x0000004, "-4", "% ld"}, + {__LINE__, 0xfe3c6743, "fe3c6743", "%.1x"}, + {__LINE__, 0x0000033d, "829", "%0ld"}, + {__LINE__, -0x00006a0, " -1696", "% 7.ld"}, + {__LINE__, 0xffffffdb, "ffffffdb", "%0.0x"}, + {__LINE__, 0xfffffffc, "FFFFFFFC", "%3.3X"}, + {__LINE__, -0x0000004, "-4", "%#ld"}, + {__LINE__, 0x00b32b56, "B32B56", "%X"}, + {__LINE__, 0xffffffff, "0xffffffff", "%+#x"}, + {__LINE__, 0x01cd1a48, "1cd1a48", "%+7x"}, + {__LINE__, 0xffffffda, "ffffffda", "%x"}, + {__LINE__, 0x1886509e, "1886509E", "% X"}, + {__LINE__, 0x000000eb, "235", "%0d"}, + {__LINE__, 0xfffffff4, "fffffff4", "%0x"}, + {__LINE__, 0x00000547, "547", "% X"}, + {__LINE__, 0x000017e6, "17e6", "%-2.x"}, + {__LINE__, 0x00001dc4, "7620", "%d"}, + {__LINE__, 0xffffffff, "FFFFFFFF", "%3.0X"}, + {__LINE__, 0xffff93fa, "0XFFFF93FA", "%#X"}, + {__LINE__, 0xfffffe1c, "FFFFFE1C", "%-X"}, + {__LINE__, 0x00000000, "", "% .0x"}, + {__LINE__, 0x000000a1, "A1", "%X"}, + {__LINE__, 0xffffffff, "0xffffffff", "%#x"}, + {__LINE__, -0x0001460, "-05216", "%+#.5d"}, + {__LINE__, 0x00000001, "1 ", "%-6.x"}, + {__LINE__, 0xfffd5324, "FFFD5324", "%+2.6X"}, + {__LINE__, 0x00000007, " 07", "%06.2d"}, + {__LINE__, 0x00000003, "3", "%-X"}, + {__LINE__, 0xfffffdb7, "0XFFFFFDB7", "%+#X"}, + {__LINE__, 0xfffff4cc, "fffff4cc", "%0x"}, + {__LINE__, 0x00000000, "0 ", "%-5X"}, + {__LINE__, 0x00758c96, "758C96", "%X"}, + {__LINE__, -0x0000001, "-1", "%-ld"}, + {__LINE__, 0x00000001, "1", "%ld"}, + {__LINE__, 0x03f03caf, "66075823", "%.2ld"}, + {__LINE__, 0x0000a87c, "a87c", "%1.x"}, + {__LINE__, 0x00000034, "34", "%X"}, + {__LINE__, 0x00000000, "0", "%x"}, + {__LINE__, 0x00010167, "10167", "%x"}, + {__LINE__, -0x00007ce, "-1998 ", "%-6ld"}, + {__LINE__, 0x00000001, "1", "%.0d"}, + {__LINE__, 0x00d94cee, "14241006", "%ld"}, + {__LINE__, -0x0000008, "-8", "% d"}, + {__LINE__, -0x71520839, "-1901201465", "%+0d"}, + {__LINE__, 0x0000035a, "35a", "%-x"}, + {__LINE__, 0xfffd2f68, "FFFD2F68", "%-X"}, + {__LINE__, 0x0006ea53, "453203", "%1d"}, + {__LINE__, 0x000000df, "DF", "% 1X"}, + {__LINE__, 0xfffffffe, "fffffffe", "% 7x"}, + {__LINE__, 0x00000156, "156", "% X"}, + {__LINE__, 0x00037ac9, " 228041", "% ld"}, + {__LINE__, 0xffffffde, "FFFFFFDE", "%0.5X"}, + {__LINE__, 0x00000025, "37", "%-0.ld"}, + {__LINE__, -0x4133686, "-68368006", "%2ld"}, + {__LINE__, -0x000003b, "-59", "%.2ld"}, + {__LINE__, 0xfffff910, "fffff910", "% 00.0x"}, + {__LINE__, 0xff9ec802, "FF9EC802", "%2.6X"}, + {__LINE__, 0x00000008, "0X8", "%#1X"}, + {__LINE__, 0xfffffff7, "FFFFFFF7", "%-X"}, + {__LINE__, 0x0029a4da, "2729178", "%04.ld"}, + {__LINE__, 0x007d1588, "8197512", "%#d"}, + {__LINE__, 0x0007e86d, "518253", "%0d"}, + {__LINE__, 0xfffffff9, "fffffff9", "%x"}, + {__LINE__, 0x00000002, "002", "%.3d"}, + {__LINE__, 0x00006ec1, "6EC1", "%2X"}, + {__LINE__, 0x0000300c, "12300", "%-d"}, + {__LINE__, -0x0000002, "-2", "%+ld"}, + {__LINE__, -0x0000002, "-2", "%ld"}, + {__LINE__, -0x00015d5, "-005589", "%#.6ld"}, + {__LINE__, 0x00000041, "65", "%d"}, + {__LINE__, 0x00000229, "0000229", "% 0.7x"}, + {__LINE__, 0xfffffffb, "fffffffb", "%03.x"}, + {__LINE__, 0x00093262, "0602722", "%.7d"}, + {__LINE__, -0x00037b4, "-14260", "%-0ld"}, + {__LINE__, 0xfffffffc, "fffffffc", "%-x"}, + {__LINE__, 0xf24cb3e6, "f24cb3e6", "%1x"}, + {__LINE__, 0x00000000, "0", "%x"}, + {__LINE__, 0xfffffffb, "FFFFFFFB", "%0X"}, + {__LINE__, 0x00000031, "0000049", "%00.7ld"}, + {__LINE__, 0x00000bb3, "BB3", "%.1X"}, + {__LINE__, -0x0000001, "-0001", "%+#4.4ld"}, + {__LINE__, -0x0000001, "-1", "% d"}, + {__LINE__, 0x00022c0c, "22c0c", "%-x"}, + {__LINE__, 0xffffffd4, "ffffffd4", "%x"}, + {__LINE__, 0x000729c6, "469446", "%3.d"}, + {__LINE__, 0xb180feae, "b180feae", "%3.x"}, + {__LINE__, 0x124fac15, "307211285", "%-0ld"}, + {__LINE__, -0x0000004, "-4", "%ld"}, + {__LINE__, 0x0000006a, "106", "%#d"}, + {__LINE__, 0x0000297f, "297F", "%+3X"}, + {__LINE__, 0x0000000e, "14", "%0ld"}, + {__LINE__, 0x00000027, "27", "%0.1X"}, + {__LINE__, 0xffeb98eb, "ffeb98eb", "% 05.2x"}, + {__LINE__, 0xfffff19b, "FFFFF19B", "%+X"}, + {__LINE__, 0x00025992, "154002", "%6.6d"}, + {__LINE__, 0x00000040, " 040", "%6.3X"}, + {__LINE__, 0x00000a9e, " 0a9e", "%5.4x"}, + {__LINE__, 0x00c7f2cc, "c7f2cc", "%x"}, + {__LINE__, 0x000325e6, " 325E6", "%6.X"}, + {__LINE__, -0x69faad3, "-111127251", "%d"}, + {__LINE__, -0x059a307, "-5874439", "% ld"}, + {__LINE__, 0xfffffff6, "0xfffffff6", "%#0.0x"}, + {__LINE__, 0x0030fdf3, "30fdf3", "%x"}, + {__LINE__, 0x00007343, "+29507", "%+#2d"}, + {__LINE__, 0x0003cf4b, "0X3CF4B", "% #.2X"}, + {__LINE__, 0x00000433, "+1075", "%+0ld"}, + {__LINE__, 0xfffffffd, "fffffffd", "%+.3x"}, + {__LINE__, 0x0ae30c4e, "ae30c4e", "%+00x"}, + {__LINE__, 0x0002540f, "02540f", "%-.6x"}, + {__LINE__, -0x0000001, " -01", "% #5.2ld"}, + {__LINE__, 0xffffffe7, "0xffffffe7", "% #5.x"}, + {__LINE__, 0x0000005b, "91", "%d"}, + {__LINE__, 0x00001f9b, "8091", "%.4ld"}, + {__LINE__, 0xfffff315, "fffff315", "%4.x"}, + {__LINE__, -0x130eec41, "-319745089", "% ld"}, + {__LINE__, 0xfff8fe13, "FFF8FE13", "%X"}, + {__LINE__, -0x0000004, "-00004", "%5.5d"}, + {__LINE__, 0x00000669, "669", "%0X"}, + {__LINE__, -0x0000004, "-4", "%d"}, + {__LINE__, 0xf5e81496, "F5E81496", "% 6X"}, + {__LINE__, -0x0000001, "-1", "% 0d"}, + {__LINE__, 0xfffffff7, "fffffff7", "%x"}, + {__LINE__, 0x000001de, "478", "%d"}, + {__LINE__, 0x0000623e, "25150", "%5.0d"}, + {__LINE__, 0xffffffa8, "FFFFFFA8", "%+X"}, + {__LINE__, -0x0000117, "-279", "% ld"}, + {__LINE__, -0x0000517, "-1303", "%d"}, + {__LINE__, 0xfffff9d5, "fffff9d5", "% x"}, + {__LINE__, 0x000001cc, "1CC", "%-X"}, + {__LINE__, 0x0000019a, "0000410", "%.7d"}, + {__LINE__, 0x00000003, "3 ", "%-06X"}, + {__LINE__, 0x00000009, "0x9", "%#0x"}, + {__LINE__, 0xfd544610, "0XFD544610", "% #X"}, + {__LINE__, 0xfffffffc, "fffffffc", "%+x"}, + {__LINE__, 0x00009437, "37943", "%ld"}, + {__LINE__, -0x00b5ea6, "-745126", "%d"}, + {__LINE__, 0xffffffd8, "ffffffd8", "%6x"}, + {__LINE__, 0x00002a2d, "10797", "%.3ld"}, + {__LINE__, 0x00275238, "2576952", "%0ld"}, + {__LINE__, 0xfff90a34, "FFF90A34", "%-7X"}, + {__LINE__, 0xfffffffe, "FFFFFFFE", "% .7X"}, + {__LINE__, -0xb3b673e, "-188442430", "% ld"}, + {__LINE__, 0xfffff67a, "0xfffff67a", "%#0.x"}, + {__LINE__, 0x0000dff6, " dff6", "%+7.x"}, + {__LINE__, 0xffee46e3, "ffee46e3", "%x"}, + {__LINE__, 0x00001a66, " 0006758", "% 7.7d"}, + {__LINE__, 0x0002b475, "2B475", "%.4X"}, + {__LINE__, 0x0002090d, "002090d", "%.7x"}, + {__LINE__, -0x0057838, "-358456", "%#ld"}, + {__LINE__, 0x00000004, "0x4", "%#x"}, + {__LINE__, 0x0574cb62, "91540322", "%#7d"}, + {__LINE__, -0x0054388, "-344968", "% #d"}, + {__LINE__, 0x000421c2, "421C2", "% X"}, + {__LINE__, 0x00000003, "3", "%0d"}, + {__LINE__, 0xffffe2e2, "ffffe2e2", "% 5.x"}, + {__LINE__, 0x00000021, "+33", "%+d"}, + {__LINE__, -0x0020033, "-131123", "%ld"}, + {__LINE__, -0x0000001, " -1", "%4.ld"}, + {__LINE__, 0x000000fd, "000fd", "%3.5x"}, + {__LINE__, 0x023e4337, "37634871", "%1d"}, + {__LINE__, 0x6e823d96, "6E823D96", "% X"}, + {__LINE__, 0xfff0e133, "fff0e133", "%x"}, + {__LINE__, -0x000decc, "-57036", "%3d"}, + {__LINE__, 0x004397b8, "4429752", "%0d"}, + {__LINE__, -0x0000023, " -35", "%6d"}, + {__LINE__, 0xffe701ca, "FFE701CA", "%3X"}, + {__LINE__, 0x000c0319, "+787225", "%+.6d"}, + {__LINE__, 0x00000000, "0", "%x"}, + {__LINE__, 0xfffffe1d, "FFFFFE1D", "%X"}, + {__LINE__, 0xfffffb33, "fffffb33", "%x"}, + {__LINE__, 0x02b5e30a, "45474570", "%d"}, + {__LINE__, 0x000074eb, "29931", "%03.ld"}, + {__LINE__, -0x4e42e310, "-1313006352", "%-0.d"}, + {__LINE__, -0x000007b, "-123", "%d"}, + {__LINE__, 0x00000160, " 352", "% d"}, + {__LINE__, -0x16af31ec, "-380580332", "%#ld"}, + {__LINE__, -0x000006e, "-000110", "%07ld"}, + {__LINE__, 0x232699a0, "232699a0", "%7.x"}, + {__LINE__, 0x00f9b8e5, "+16365797", "%+0d"}, + {__LINE__, 0x0000000c, "C", "%X"}, + {__LINE__, 0xfffffd4f, "FFFFFD4F", "%X"}, + {__LINE__, 0xffffe7bb, "FFFFE7BB", "%.7X"}, + {__LINE__, -0x0000163, "-355", "%d"}, + {__LINE__, 0x00070315, " 459541", "% #2.d"}, + {__LINE__, -0x7d5c12a, "-131449130", "% 6.ld"}, + {__LINE__, 0xffffffb2, "FFFFFFB2", "%X"}, + {__LINE__, -0x0004aad, "-19117", "%+6.4ld"}, + {__LINE__, 0x00115586, "1136006", "%0d"}, + {__LINE__, -0x0000021, "-33", "%d"}, + {__LINE__, 0x093ce01e, "93ce01e", "% 5x"}, + {__LINE__, 0x00672135, "672135", "% x"}, + {__LINE__, 0x05f4abd5, "0x5f4abd5", "%+#6.x"}, + {__LINE__, -0x0448b03, "-4492035", "%-0.2ld"}, + {__LINE__, 0x00000000, "0", "%#x"}, + {__LINE__, 0x1987217e, "428286334", "%d"}, + {__LINE__, 0x000010f6, "10f6", "%-x"}, + {__LINE__, 0x0000177a, "177a", "%1x"}, + {__LINE__, 0xfffffefd, "FFFFFEFD", "%7X"}, + {__LINE__, -0x095cbf8, "-9817080", "%-5ld"}, + {__LINE__, 0x0000008a, "138", "%2.0ld"}, + {__LINE__, 0xfffe80ad, "fffe80ad", "%0x"}, + {__LINE__, -0x1a4c8f7, "-27576567", "%d"}, + {__LINE__, 0x00000000, "0", "%-x"}, + {__LINE__, 0x0000a82b, "43051", "%-ld"}, + {__LINE__, 0x000000eb, "235", "%2.3ld"}, + {__LINE__, -0x0002747, "-10055", "%d"}, + {__LINE__, 0x00000319, "0X319", "%#X"}, + {__LINE__, 0xfffffcfe, "FFFFFCFE", "% X"}, + {__LINE__, 0x00050f0e, "50f0e", "%-1x"}, + {__LINE__, -0x398e09e, "-60350622", "%0.7ld"}, + {__LINE__, 0x00000000, " ", "%2.ld"}, + {__LINE__, 0x00000049, "00049", "% .5X"}, + {__LINE__, -0x00000dd, " -221", "%+#5ld"}, + {__LINE__, 0xf6db2fac, "f6db2fac", "%-07x"}, + {__LINE__, 0x0000004f, "4F", "% .0X"}, + {__LINE__, 0x00000000, "0", "%x"}, + {__LINE__, 0xfd07f692, "fd07f692", "%x"}, + {__LINE__, 0xdb98bde0, "db98bde0", "%x"}, + {__LINE__, 0x00000271, "0271", "% 3.4x"}, + {__LINE__, -0x000115a, "-4442", "%#1.ld"}, + {__LINE__, 0x0002f5f2, "194034", "%ld"}, + {__LINE__, -0x0000152, " -338", "%+7ld"}, + {__LINE__, 0x00059336, "365366", "%d"}, + {__LINE__, 0xfffffff6, "fffffff6", "%-7x"}, + {__LINE__, 0xfb916c51, "fb916c51", "%-x"}, + {__LINE__, 0xffff413d, "FFFF413D", "%-X"}, + {__LINE__, 0xf2576910, "F2576910", "%-4.X"}, + {__LINE__, 0xfffc7730, "fffc7730", "%5.x"}, + {__LINE__, 0x000002e6, "+742", "%+1d"}, + {__LINE__, -0x00001bf, "-447", "%3d"}, + {__LINE__, 0x000002e1, "2E1", "%-X"}, + {__LINE__, 0x00000096, "150", "%#0ld"}, + {__LINE__, 0x000002bd, "701", "%d"}, + {__LINE__, -0x0053386, "-340870", "%#d"}, + {__LINE__, 0xfffdb076, "FFFDB076", "%X"}, + {__LINE__, 0x00004dc5, " +19909", "%+07.ld"}, + {__LINE__, 0x00000f7a, " F7A", "%4X"}, + {__LINE__, 0x02405000, " 37769216", "% ld"}, + {__LINE__, 0xfffce68d, "fffce68d", "%0x"}, + {__LINE__, -0x35b3af2, "-56310514", "%-ld"}, + {__LINE__, -0x0238631, "-2328113", "%.4d"}, + {__LINE__, -0x000001e, "-030", "%.3ld"}, + {__LINE__, 0xffffffdd, "FFFFFFDD", "%.4X"}, + {__LINE__, 0x0013f6ac, "13f6ac", "%02.x"}, + {__LINE__, 0xfffffffa, "fffffffa", "%+07.x"}, + {__LINE__, -0x000192b, " -6443", "%6.d"}, + {__LINE__, 0x0000058b, "+1419", "%+d"}, + {__LINE__, 0x00001391, "5009", "%ld"}, + {__LINE__, -0x0041a57, "-268887", "%1ld"}, + {__LINE__, -0x0041a57, "-268887", "%1ld"}, + {__LINE__, 0xfffff266, "0xfffff266", "%+#6.6x"}, + {__LINE__, 0x0000018b, " 395", "%6.ld"}, + {__LINE__, 0x009ae24d, "+10150477", "%+ld"}, + {__LINE__, 0x0000007e, "7E", "%X"}, + {__LINE__, 0xfffffd53, "FFFFFD53", "% 0X"}, + {__LINE__, 0x000002fa, "2FA", "%-1.3X"}, + {__LINE__, 0x000000a4, "164", "%0d"}, + {__LINE__, 0x00001833, "6195", "%ld"}, + {__LINE__, -0x0000001, "-1", "%d"}, + {__LINE__, 0xf2fcbd9b, "F2FCBD9B", "%+0.2X"}, + {__LINE__, 0x00004a8a, "4A8A", "%X"}, + {__LINE__, -0x10695cda, "-275340506", "%d"}, + {__LINE__, 0x00000037, "37", "%X"}, + {__LINE__, 0x00082d5c, "82D5C", "%+0.5X"}, + {__LINE__, 0xfffffe01, "fffffe01", "% 5.3x"}, + {__LINE__, 0x000005ea, "05EA", "% 1.4X"}, + {__LINE__, 0x0e0b8826, "e0b8826", "%2x"}, + {__LINE__, -0x0000161, "-353", "%+d"}, + {__LINE__, 0x19e3014a, "19E3014A", "%+5X"}, + {__LINE__, 0x00000140, "140", "%x"}, + {__LINE__, 0xffff84b9, "FFFF84B9", "%X"}, + {__LINE__, -0x0005776, "-22390", "%+5ld"}, + {__LINE__, 0x0162ad61, "162AD61", "% X"}, + {__LINE__, 0x00002395, "2395", "%X"}, + {__LINE__, 0x003702ec, "3605228", "%5.2d"}, + {__LINE__, 0xffffffff, "FFFFFFFF", "%7X"}, + {__LINE__, 0x00001778, "0x1778", "%#5.x"}, + {__LINE__, 0xc52bef7f, "C52BEF7F", "%X"}, + {__LINE__, 0xfffffec4, "FFFFFEC4", "%X"}, + {__LINE__, 0x00000006, "6", "%X"}, + {__LINE__, 0x00000000, "000", "%03.3x"}, + {__LINE__, 0x00000000, "0", "%x"}, + {__LINE__, 0xffff6c46, "FFFF6C46", "% 2.2X"}, + {__LINE__, -0x1506098, "-22044824", "%01.d"}, + {__LINE__, 0x03415caf, "3415caf", "%x"}, + {__LINE__, -0x00007b4, "-1972", "%#4.4d"}, + {__LINE__, -0x00158c9, "-88265", "%03.4d"}, + {__LINE__, 0x6947c336, "1766310710", "%.6d"}, + {__LINE__, 0x0000017c, "17C", "% 0X"}, + {__LINE__, -0x00001b7, "-439", "% 0ld"}, + {__LINE__, 0x06a7575a, "6A7575A", "%-.0X"}, + {__LINE__, 0x000b3459, "734297", "%ld"}, + {__LINE__, -0x395d8dd, "-60152029", "%ld"}, + {__LINE__, 0x00036bb3, "224179", "%-6.d"}, + {__LINE__, 0xffff14ff, "FFFF14FF", "%X"}, + {__LINE__, -0x15910e4f, "-361827919", "%-0d"}, + {__LINE__, -0x0000004, "-4", "%#d"}, + {__LINE__, 0xf7f7adac, "F7F7ADAC", "% 3.X"}, + {__LINE__, 0xffffff74, "FFFFFF74", "%0X"}, + {__LINE__, 0x00000000, "0", "%d"}, + {__LINE__, -0x000007b, "-123 ", "%-7.d"}, + {__LINE__, -0x000002c, "-44", "%d"}, + {__LINE__, -0x000002b, " -43", "%5d"}, + {__LINE__, 0x0000ae5f, "44639", "%d"}, + {__LINE__, 0x003cbc63, "3CBC63", "%X"}, + {__LINE__, 0xfffffffc, "0XFFFFFFFC", "%#5.7X"}, + {__LINE__, 0x0003e044, "3E044", "%X"}, + {__LINE__, -0x0000c46, "-3142", "%.1d"}, + {__LINE__, 0xff18f4bb, "FF18F4BB", "%0X"}, + {__LINE__, 0xfffffffd, "FFFFFFFD", "%.1X"}, + {__LINE__, -0x01c0f27, "-1838887", "%0d"}, + {__LINE__, -0x1242901f, "-306352159", "%.4ld"}, + {__LINE__, 0x1775c10a, "393593098", "%6.ld"}, + {__LINE__, 0x00000001, " 1", "%03.d"}, + {__LINE__, 0xfff1fd30, "0xfff1fd30", "%#x"}, + {__LINE__, 0x00000191, "191", "%0.X"}, + {__LINE__, 0x2e597178, "777613688", "%2.ld"}, + {__LINE__, -0x4ef0cf3, "-82775283", "%+.6ld"}, + {__LINE__, -0x0000085, " -133", "%6.d"}, + {__LINE__, 0x0000014d, "333 ", "%-5ld"}, + {__LINE__, -0xc03bd74, "-201571700", "%07.6ld"}, + {__LINE__, -0x000000a, "-10", "%d"}, + {__LINE__, 0x01f5e86e, "32893038", "%#2.ld"}, + {__LINE__, 0x00000033, "0X33", "% #X"}, + {__LINE__, 0x0087c797, " 8898455", "% 7.d"}, + {__LINE__, -0x0001205, "-4613", "%5d"}, + {__LINE__, 0x00000192, " 192", "%7.X"}, + {__LINE__, 0x000e6c00, "945152", "%6.1ld"}, + {__LINE__, 0x00018629, " 99881", "% d"}, + {__LINE__, -0x04739c6, "-4667846", "%-01.3ld"}, + {__LINE__, 0x00001f42, "8002", "%d"}, + {__LINE__, 0x00000caf, "3247", "%d"}, + {__LINE__, -0x4992e24, "-77147684", "%#.6d"}, + {__LINE__, 0x0000001d, "1d", "%-0x"}, + {__LINE__, 0x14d79f03, "349675267", "%0ld"}, + {__LINE__, 0x00000dd4, " 03540", "%#6.5ld"}, + {__LINE__, 0x0005f30e, "0X5F30E", "%#X"}, + {__LINE__, 0x00000157, "157", "%X"}, + {__LINE__, -0x9281698, "-153622168", "%d"}, + {__LINE__, -0x000004a, "-74", "%d"}, + {__LINE__, -0x0010c9e, "-68766", "%-0d"}, + {__LINE__, 0x00000059, "00089", "%.5ld"}, + {__LINE__, -0x06959e3, "-6904291", "% 4.d"}, + {__LINE__, 0xfbea12b1, "0XFBEA12B1", "%+#X"}, + {__LINE__, 0xffffdfb1, "FFFFDFB1", "%2.6X"}, + {__LINE__, 0x0434faac, "434faac", "%.5x"}, + {__LINE__, 0xffffffff, "ffffffff", "% x"}, + {__LINE__, 0x00000b32, "B32", "%0X"}, + {__LINE__, 0x00000047, "71", "%.1d"}, + {__LINE__, 0x00070bef, " 0461807", "% .7d"}, + {__LINE__, 0x00000038, "38", "% 0x"}, + {__LINE__, 0x00000000, " 0", "%6X"}, + {__LINE__, 0xfff9c011, "FFF9C011", "%2X"}, + {__LINE__, 0xfffffffe, "fffffffe", "%7x"}, + {__LINE__, 0xfffffff9, "FFFFFFF9", "%X"}, + {__LINE__, -0x016a095, "-1482901", "%4.0ld"}, + {__LINE__, -0x000001c, "-28", "% ld"}, + {__LINE__, 0xfffd6133, "0xfffd6133", "%#x"}, + {__LINE__, 0x000004a4, "0x4a4", "%#x"}, + {__LINE__, 0x000003c2, "0962", "%.4d"}, + {__LINE__, -0x000323b, "-12859", "%+#d"}, + {__LINE__, 0x0f620237, "F620237", "%X"}, + {__LINE__, 0x00007863, "007863", "%.6X"}, + {__LINE__, 0x0000002c, " 44", "% #ld"}, + {__LINE__, 0xfffffff0, "fffffff0", "%03.6x"}, + {__LINE__, 0xffff6346, "FFFF6346", "%1.X"}, + {__LINE__, 0x00063188, "63188", "% x"}, + {__LINE__, 0xfffff91c, "fffff91c", "%-.3x"}, + {__LINE__, 0x004cd0b4, "4CD0B4", "%-2.X"}, + {__LINE__, 0x06b4d739, "112514873", "%0.1d"}, + {__LINE__, -0x0009beb, "-39915", "%.2d"}, + {__LINE__, 0x0000831b, "33563", "%d"}, + {__LINE__, 0x00000001, "1", "%X"}, + {__LINE__, -0x942d76b, "-155375467", "% #0ld"}, + {__LINE__, 0xffff2a95, "FFFF2A95", "%2X"}, + {__LINE__, 0x00548d5e, "5541214", "%.3ld"}, + {__LINE__, 0x0b5e1a01, "B5E1A01", "% .7X"}, + {__LINE__, 0xfffffc22, "fffffc22", "%6x"}, + {__LINE__, -0x0000dd7, "-3543", "%-.3ld"}, + {__LINE__, 0xfffff834, "FFFFF834", "%X"}, + {__LINE__, 0x0365f762, "57014114", "%ld"}, + {__LINE__, -0x0000003, "-3", "%d"}, + {__LINE__, 0x3bd998a3, "1004116131", "%d"}, + {__LINE__, 0xfffff6c9, "FFFFF6C9", "%+X"}, + {__LINE__, 0xffffded9, "FFFFDED9", "%-.1X"}, + {__LINE__, -0x00fbb5a, "-1031002", "% 1.0d"}, + {__LINE__, 0xffffffb7, "ffffffb7", "%6.x"}, + {__LINE__, 0xff1b8ac3, "FF1B8AC3", "%-X"}, + {__LINE__, 0xfffffff2, "FFFFFFF2", "%00.X"}, + {__LINE__, -0x000013d, " -317", "%05.d"}, + {__LINE__, 0x0000f5e2, "+62946", "%+0.2ld"}, + {__LINE__, 0x16ac6358, "16ac6358", "%x"}, + {__LINE__, 0xffff8728, "FFFF8728", "%+X"}, + {__LINE__, -0x0014a6d, "-084589", "%0.6ld"}, + {__LINE__, 0xfc904514, "FC904514", "%+0X"}, + {__LINE__, 0x00000004, "4", "%ld"}, + {__LINE__, 0xffffffe0, "ffffffe0", "%+x"}, + {__LINE__, -0x0a0ffdd, "-10551261", "%+02d"}, + {__LINE__, -0x0000bbc, "-3004", "%+d"}, + {__LINE__, 0x00000006, " +6", "%+7ld"}, + {__LINE__, 0x17afa6e5, "397387493", "%ld"}, + {__LINE__, 0xfffff6bf, "fffff6bf", "%+04.4x"}, + {__LINE__, 0x000001dc, "01dc", "% 02.4x"}, + {__LINE__, 0x0000000e, " 14", "% d"}, + {__LINE__, 0xfffffff9, "0XFFFFFFF9", "%#4.X"}, + {__LINE__, 0x0000005d, "93", "%0d"}, + {__LINE__, -0x004fa05, "-0326149", "%.7d"}, + {__LINE__, -0x0000018, "-24", "%ld"}, + {__LINE__, 0xfffff7eb, "FFFFF7EB", "%X"}, + {__LINE__, 0x0072b044, " 7516228", "% .7ld"}, + {__LINE__, 0xffffffed, "0xffffffed", "%#x"}, + {__LINE__, 0x0010364d, "10364D", "%X"}, + {__LINE__, 0xfff90469, "0XFFF90469", "%#X"}, + {__LINE__, 0x000001b4, " 436", "% 0d"}, + {__LINE__, 0x00000000, "0", "% X"}, + {__LINE__, 0xfffffff3, "fffffff3", "%x"}, + {__LINE__, 0x19335d40, "19335d40", "%6x"}, + {__LINE__, 0x00039c24, "236580", "%ld"}, + {__LINE__, 0x000021f7, "8695", "%0.4ld"}, + {__LINE__, -0x057b406, "-5747718", "%d"}, + {__LINE__, -0x017b371, "-1553265", "%#ld"}, + {__LINE__, 0x0003e405, "254981", "%2.d"}, + {__LINE__, 0x00000001, "1", "%-.1x"}, + {__LINE__, 0x000000ae, "AE", "%.1X"}, + {__LINE__, 0xffd85825, "ffd85825", "%-7.x"}, + {__LINE__, 0xfffad763, "fffad763", "%x"}, + {__LINE__, 0x002431d4, "2372052", "%6.ld"}, + {__LINE__, 0x00000003, "000003", "%-05.6d"}, + {__LINE__, 0xffffffeb, "0xffffffeb", "%#x"}, + {__LINE__, 0xff8cf3b0, "ff8cf3b0", "%x"}, + {__LINE__, 0xfe88d2ff, "0xfe88d2ff", "%+#.2x"}, + {__LINE__, 0xffffff6b, "ffffff6b", "%6.3x"}, + {__LINE__, 0xfffffffe, "fffffffe", "%-x"}, + {__LINE__, 0xe998945a, "e998945a", "%2.x"}, + {__LINE__, 0x03b9c50f, "3B9C50F", "%+X"}, + {__LINE__, 0xffffffff, "FFFFFFFF", "%3.7X"}, + {__LINE__, 0x000024ef, "24ef", "%+x"}, + {__LINE__, 0xfffffc04, "FFFFFC04", "%X"}, + {__LINE__, 0x0d4bef7c, " 223080316", "% .1ld"}, + {__LINE__, -0xc33f3bc, "-204731324", "%.5ld"}, + {__LINE__, 0xffffffff, "0XFFFFFFFF", "%#2X"}, + {__LINE__, 0x0000e493, "e493", "%x"}, + {__LINE__, 0x000001b4, "1b4", "%x"}, + {__LINE__, 0xffffffd6, "0xffffffd6", "% #1x"}, + {__LINE__, 0x00000001, "1", "%d"}, + {__LINE__, -0x0000f28, "-3880", "%ld"}, + {__LINE__, 0x00000277, "631", "%-1ld"}, + {__LINE__, 0x00000001, " 1", "%2x"}, + {__LINE__, -0x0ff4d2c, "-16731436", "%#ld"}, + {__LINE__, 0x0bb80344, "196608836", "%00ld"}, + {__LINE__, 0xffffffdc, "FFFFFFDC", "%X"}, + {__LINE__, 0x00000484, "1156", "%ld"}, + {__LINE__, 0x00000341, "341", "%-.2x"}, + {__LINE__, 0x0000ee62, "ee62", "%x"}, + {__LINE__, 0xfffffe20, "fffffe20", "%+x"}, + {__LINE__, -0x00076eb, "-30443", "%.2d"}, + {__LINE__, 0x2c4a7407, "2c4a7407", "% x"}, + {__LINE__, 0x00000000, " ", "%3.X"}, + {__LINE__, 0xffffff60, "ffffff60", "% 4.x"}, + {__LINE__, 0x000e4cf2, "+937202", "%+.5ld"}, + {__LINE__, 0x00000008, " 00008", "%06.5X"}, + {__LINE__, 0x0002f612, "194066", "%d"}, + {__LINE__, 0xfffffc96, "fffffc96", "%-3.3x"}, + {__LINE__, -0x0000001, "-1", "% ld"}, + {__LINE__, 0x00000000, " ", "% 6.0X"}, + {__LINE__, 0xfffffff5, "fffffff5", "%3.x"}, + {__LINE__, 0x0bfd63a1, "201155489", "%d"}, + {__LINE__, -0x1547c214, "-357024276", "%ld"}, + {__LINE__, 0x00000004, "4", "%#0.d"}, + {__LINE__, -0x000f2f3, "-62195", "%.2d"}, + {__LINE__, 0xfff843dd, "FFF843DD", "%X"}, + {__LINE__, 0x00966e36, "9858614", "%.0ld"}, + {__LINE__, 0x0000782e, "0X782E", "% #X"}, + {__LINE__, 0x00bd36c0, "12400320", "%ld"}, + {__LINE__, 0x00000000, "00", "% .2X"}, + {__LINE__, 0x00000000, "0", "%1X"}, + {__LINE__, 0x0003f416, "3f416 ", "%-6.x"}, + {__LINE__, -0x00b74bd, "-750781", "% ld"}, + {__LINE__, 0x0000138a, "138a", "% x"}, + {__LINE__, 0x024df7f0, "24DF7F0", "% 0.6X"}, + {__LINE__, 0xfffffffc, "FFFFFFFC", "%X"}, + {__LINE__, -0x0003284, "-12932 ", "%-07.ld"}, + {__LINE__, 0x000094d3, "94d3", "%x"}, + {__LINE__, 0x000000bf, "bf", "%.2x"}, + {__LINE__, 0x00000000, "00000", "%-1.5X"}, + {__LINE__, -0x04899b8, "-4757944", "%d"}, + {__LINE__, 0x2b51bf20, "+726777632", "%+d"}, + {__LINE__, -0x000000d, "-13", "%.2d"}, + {__LINE__, 0x04f78fbd, "4F78FBD", "% 7.X"}, + {__LINE__, 0x00011684, "71300", "%5.d"}, + {__LINE__, 0x0000539d, "21405", "%0d"}, + {__LINE__, 0x00000008, "000008", "%-3.6X"}, + {__LINE__, 0xfc7a2cdc, "fc7a2cdc", "%2.3x"}, + {__LINE__, 0xffc21da1, "ffc21da1", "%x"}, + {__LINE__, 0x00000273, "273", "%x"}, + {__LINE__, 0x00000000, "0", "%#X"}, + {__LINE__, -0x31cd6b9, "-52221625", "% d"}, + {__LINE__, 0xfffffff8, "FFFFFFF8", "%.0X"}, + {__LINE__, 0x00000002, "2", "%#ld"}, + {__LINE__, 0x00e8922c, "15241772", "%d"}, + {__LINE__, 0xfeb19ea7, "FEB19EA7", "%0.1X"}, + {__LINE__, 0x00003931, "014641", "%06ld"}, + {__LINE__, 0x00000015, "0X00015", "%#.5X"}, + {__LINE__, 0xfffffffe, "FFFFFFFE", "%1.X"}, + {__LINE__, 0xfff17103, "0XFFF17103", "% #X"}, + {__LINE__, 0xfffffffc, "FFFFFFFC", "%+X"}, + {__LINE__, 0x00000002, "00002", "%.5x"}, + {__LINE__, 0x00001617, " 5655", "% 7.d"}, + {__LINE__, -0x0000010, "-000016", "%00.6d"}, + {__LINE__, 0x000000b0, "B0", "% X"}, + {__LINE__, 0xfc9362b2, "FC9362B2", "%-X"}, + {__LINE__, 0xfc3d8276, "fc3d8276", "% 1x"}, + {__LINE__, 0x00001405, "5125", "%#d"}, + {__LINE__, 0x02250183, " 35979651", "% ld"}, + {__LINE__, 0xffc9b007, "ffc9b007", "% 4.x"}, + {__LINE__, 0x00000311, "785", "%0d"}, + {__LINE__, 0x0004d273, " 316019", "% d"}, + {__LINE__, 0x00000001, "1", "%1.x"}, + {__LINE__, 0xffff240f, "FFFF240F", "%4.X"}, + {__LINE__, 0x0049cfda, "+4837338", "%+ld"}, + {__LINE__, 0x012f6dd5, "12F6DD5", "% 6.2X"}, + {__LINE__, 0x00000002, "0x2", "%#2.0x"}, + {__LINE__, 0xfffd834a, "FFFD834A", "%.6X"}, + {__LINE__, 0xfe2a40f8, "0XFE2A40F8", "%#X"}, + {__LINE__, 0xffffffeb, "ffffffeb", "%x"}, + {__LINE__, -0x00ac5cb, "-705995", "%d"}, + {__LINE__, -0x3021108c, "-807473292", "% .4d"}, + {__LINE__, -0x0000035, "-53", "%-ld"}, + {__LINE__, -0x1a36475, "-27485301", "% d"}, + {__LINE__, -0x0000011, "-17", "%d"}, + {__LINE__, 0x000001a3, "000419", "%.6ld"}, + {__LINE__, 0x0030a0a8, "3186856", "%.5ld"}, + {__LINE__, 0x00000019, "25", "%d"}, + {__LINE__, 0xf32deac1, "F32DEAC1", "%06.2X"}, + {__LINE__, -0x0000004, " -00004", "%7.5ld"}, + {__LINE__, 0x00000000, "0", "%ld"}, + {__LINE__, 0x0006bf19, "442137", "%#0.d"}, + {__LINE__, 0x566f6c44, "1450142788", "%1.6d"}, + {__LINE__, 0xfffffc10, "fffffc10", "%.2x"}, + {__LINE__, -0x000e04d, "-57421", "%+0d"}, + {__LINE__, 0x00000000, "0000000", "%+.7X"}, + {__LINE__, 0x00b5c74d, " 11913037", "% ld"}, + {__LINE__, -0x028dfe2, "-2678754", "%05.1d"}, + {__LINE__, 0xfffffee0, "fffffee0", "%0x"}, + {__LINE__, -0x030c077, "-3194999", "%-.6d"}, + {__LINE__, 0x00055ca1, "055ca1", "%-.6x"}, + {__LINE__, 0x00000000, " ", "%7.X"}, + {__LINE__, 0xfffffe3b, "FFFFFE3B", "%X"}, + {__LINE__, 0xffffffff, "FFFFFFFF", "% 3X"}, + {__LINE__, 0x00000857, "2135", "%-#1.d"}, + {__LINE__, -0x00546a2, "-345762", "%0.5d"}, + {__LINE__, 0x0000000b, "0xb ", "%-#6x"}, + {__LINE__, 0x00000d2b, "d2b ", "%-4.0x"}, + {__LINE__, 0x0ae02b9e, "AE02B9E", "%X"}, + {__LINE__, 0xfffffa7b, "fffffa7b", "%-2.x"}, + {__LINE__, 0x00000001, "1", "%X"}, + {__LINE__, 0x000006ad, "01709", "%05.5ld"}, + {__LINE__, -0x0000102, "-258", "%-0.ld"}, + {__LINE__, 0x00000000, "0", "%.1X"}, + {__LINE__, -0x01daa95, "-1944213", "%-1ld"}, + {__LINE__, 0x02b99040, "2B99040", "%2.X"}, + {__LINE__, 0x1b3d5621, "1B3D5621", "%X"}, + {__LINE__, 0x0312d16b, "51564907", "%-1.7ld"}, + {__LINE__, 0x000aa76c, " 698220", "% 2d"}, + {__LINE__, 0x00000000, "0", "%ld"}, + {__LINE__, 0xfff8a4ec, "FFF8A4EC", "%-X"}, + {__LINE__, 0xffffe06d, "ffffe06d", "%x"}, + {__LINE__, 0x00000003, "3", "% x"}, + {__LINE__, 0x00000000, "0", "%x"}, + {__LINE__, 0xd3e244dd, "D3E244DD", "%+5X"}, + {__LINE__, 0x000028b3, " 28b3", "% 5.x"}, + {__LINE__, 0x0001aceb, "109803", "%6d"}, + {__LINE__, 0xfffbc5ca, "0xfffbc5ca", "%-#5x"}, + {__LINE__, 0x00000097, " 151", "% 7ld"}, + {__LINE__, 0x00001fcc, "+8140", "%+d"}, + {__LINE__, 0xffffffff, "ffffffff", "%0x"}, + {__LINE__, -0x00052a9, "-21161", "%ld"}, + {__LINE__, 0xfffffc76, "FFFFFC76", "%.1X"}, + {__LINE__, -0x2acb012, "-44871698", "%0.1ld"}, + {__LINE__, 0xffffff81, "ffffff81", "%x"}, + {__LINE__, -0x0018394, "-99220", "%-ld"}, + {__LINE__, 0x0000001b, "1B", "%X"}, + {__LINE__, 0x00000033, "51", "%1d"}, + {__LINE__, 0xffec37e5, "FFEC37E5", "%-1X"}, + {__LINE__, -0x000000a, " -10", "%#5.d"}, + {__LINE__, -0x0000412, "-1042", "%ld"}, + {__LINE__, 0x000cd0b1, "cd0b1 ", "%-7.5x"}, + {__LINE__, 0x0b445370, "B445370", "%+2.0X"}, + {__LINE__, 0xfffffff3, "0XFFFFFFF3", "%-#X"}, + {__LINE__, 0xffff9f33, "FFFF9F33", "%5.X"}, + {__LINE__, 0x00010a1e, "10A1E", "%-2X"}, + {__LINE__, -0xede156f, "-249435503", "% 7.1ld"}, + {__LINE__, 0xfc6d63aa, "fc6d63aa", "% .6x"}, + {__LINE__, 0x0000311c, " 12572", "% ld"}, + {__LINE__, 0x00001f8a, "8074", "%00.d"}, + {__LINE__, 0x00000199, "199", "%-X"}, + {__LINE__, 0xfffffc60, "FFFFFC60", "%+3X"}, + {__LINE__, -0x000022c, "-556", "%+0ld"}, + {__LINE__, 0x021d8407, "35488775", "%-#.7ld"}, + {__LINE__, 0x0000020f, "527", "%d"}, + {__LINE__, -0x000064b, "-1611", "%#ld"}, + {__LINE__, -0x0c15aef, "-12671727", "%d"}, + {__LINE__, -0x1f1a6881, "-521824385", "%ld"}, + {__LINE__, 0xffffc115, "ffffc115", "% x"}, + {__LINE__, 0x00000017, " 23", "% #ld"}, + {__LINE__, 0x00000dc1, "DC1 ", "%-4X"}, + {__LINE__, 0x000002ca, "2CA", "%X"}, + {__LINE__, 0x000f052c, " 984364", "%7.d"}, + {__LINE__, 0x0000005a, "0090", "%0.4d"}, + {__LINE__, -0x001e463, "-124003", "% 4.ld"}, + {__LINE__, 0x00000001, "0000001", "%+.7X"}, + {__LINE__, 0x00000bfb, "0000bfb", "%5.7x"}, + {__LINE__, 0x0002484b, "149579", "%#1d"}, + {__LINE__, 0x0043ba18, "4438552", "%-ld"}, + {__LINE__, 0x000078f8, "0X78F8", "%#X"}, + {__LINE__, 0x00000001, " 1", "%4d"}, + {__LINE__, 0x0cedaeed, "CEDAEED", "%X"}, + {__LINE__, 0x00000003, "+3", "%+ld"}, + {__LINE__, 0xfffffffb, "FFFFFFFB", "%7.4X"}, + {__LINE__, 0x00000169, "361", "%ld"}, + {__LINE__, 0x00003c7a, "+15482", "%+ld"}, + {__LINE__, -0x0159d93, "-1416595", "% 0.0d"}, + {__LINE__, 0x0000775c, "+30556", "%+3.d"}, + {__LINE__, 0x10284768, "+271075176", "%+0.0ld"}, + {__LINE__, -0xf8b610e, "-260792590", "%0d"}, + {__LINE__, 0xfdd8d369, "fdd8d369", "%-.3x"}, + {__LINE__, 0x000c9495, "+824469", "%+ld"}, + {__LINE__, -0x000003f, " -063", "%7.3d"}, + {__LINE__, -0x000073b, "-1851", "%+03.ld"}, + {__LINE__, 0xfffe4e23, "0xfffe4e23", "%#.5x"}, + {__LINE__, 0x0081788c, "81788c", "%5x"}, + {__LINE__, -0x015f888, "-1439880", "%+1d"}, + {__LINE__, -0x31d64b4, "-52257972", "%0.2d"}, + {__LINE__, 0xffffffff, "FFFFFFFF", "%6.5X"}, + {__LINE__, -0x0000072, "-114", "%+.1d"}, + {__LINE__, -0x00000e1, "-225", "%ld"}, + {__LINE__, 0x000006a8, "0x6a8", "%+#x"}, + {__LINE__, 0xfffe673a, "fffe673a", "%01.x"}, + {__LINE__, 0xfff2ee0d, "FFF2EE0D", "%-X"}, + {__LINE__, 0x0290320a, "43004426", "%0ld"}, + {__LINE__, -0xeb7a832, "-246917170", "% ld"}, + {__LINE__, 0x02ae9265, "2ae9265", "%1.x"}, + {__LINE__, 0xffffffd2, "ffffffd2", "%+2.x"}, + {__LINE__, 0x00e6e858, "0xe6e858", "%#0.x"}, + {__LINE__, 0x00000c4a, "+3146", "%+3.1d"}, + {__LINE__, -0x6943c1a, "-110378010", "% 0ld"}, + {__LINE__, 0x0167b119, "167b119", "%0x"}, + {__LINE__, 0xfffffffe, "fffffffe", "%+x"}, + {__LINE__, 0xfffffffe, "FFFFFFFE", "%X"}, + {__LINE__, 0x000b861e, "755230", "%ld"}, + {__LINE__, 0x0000015b, "347", "%-#ld"}, + {__LINE__, 0xfffffffa, "0XFFFFFFFA", "%#X"}, + {__LINE__, 0x000de9e5, "911845", "%d"}, + {__LINE__, 0x00000001, "01", "%.2d"}, + {__LINE__, 0x000007a5, "1957", "%0d"}, + {__LINE__, 0x0000000f, "f", "%x"}, + {__LINE__, 0x00c38cbf, " 12815551", "% .2d"}, + {__LINE__, -0x7bd1b6e, "-129833838", "% d"}, + {__LINE__, -0x000013c, "-316", "%0d"}, + {__LINE__, 0x00001aad, "1AAD", "%-0X"}, + {__LINE__, 0x0034f903, "3471619", "%00d"}, + {__LINE__, 0xff925717, "ff925717", "%4x"}, + {__LINE__, 0x00000002, "02", "%.2d"}, + {__LINE__, 0x00000f34, "F34", "%+X"}, + {__LINE__, 0xffffeefe, "FFFFEEFE", "%X"}, + {__LINE__, 0xfffeecb4, "FFFEECB4", "% 2.X"}, + {__LINE__, 0x00034421, "214049", "%0ld"}, + {__LINE__, 0x00000000, " 0", "%+6X"}, + {__LINE__, -0x0000062, "-98", "%-#2d"}, + {__LINE__, -0x0000557, "-1367", "%-4.4d"}, + {__LINE__, 0xffffe17c, "FFFFE17C", "%X"}, + {__LINE__, 0x00000097, "00097", "%.5X"}, + {__LINE__, 0xfffcb278, "FFFCB278", "%0.7X"}, + {__LINE__, -0x0000001, "-0001 ", "%-7.4d"}, + {__LINE__, -0x0000001, "-1", "%ld"}, + {__LINE__, 0x000002c4, "708", "%d"}, + {__LINE__, 0x04946f45, "4946F45", "%-2.X"}, + {__LINE__, 0x000000ff, "00ff", "% 2.4x"}, + {__LINE__, 0x00073307, "471815", "%3ld"}, + {__LINE__, 0x0085b7b6, "+8763318", "%+ld"}, + {__LINE__, -0x0000002, "-2", "%1ld"}, + {__LINE__, -0x0000001, "-1", "%-2d"}, + {__LINE__, -0x00000b5, " -181", "%7ld"}, + {__LINE__, -0x0412486, "-4269190", "%+2.1ld"}, + {__LINE__, 0xffffffff, "ffffffff", "%0x"}, + {__LINE__, 0x0000006d, "6d", "%x"}, + {__LINE__, 0x000000da, "218", "%-.3ld"}, + {__LINE__, 0xfffffcfe, "fffffcfe", "%x"}, + {__LINE__, 0x652e60c7, "652E60C7", "%7.7X"}, + {__LINE__, 0x00000035, " 53", "% #2d"}, + {__LINE__, 0x000000fc, "FC", "%-X"}, + {__LINE__, 0x00000019, " 25", "% ld"}, + {__LINE__, 0xfffffcf4, "fffffcf4", "%6x"}, + {__LINE__, 0xffffff41, "ffffff41", "%x"}, + {__LINE__, 0x00000034, " 52", "%3.ld"}, + {__LINE__, 0xffffffb2, "ffffffb2", "%-x"}, + {__LINE__, -0x6dc43e7c, "-1841577596", "% .2ld"}, + {__LINE__, 0x00000004, "4", "%d"}, + {__LINE__, -0x000023b, "-571", "%ld"}, + {__LINE__, -0x000004d, "-77", "%ld"}, + {__LINE__, 0x0000e3ba, "58298", "%.0ld"}, + {__LINE__, 0xfffffff2, "fffffff2", "%0.0x"}, + {__LINE__, -0x0000020, "-32", "%ld"}, + {__LINE__, 0xffffb33e, "0XFFFFB33E", "%-#X"}, + {__LINE__, 0x00000000, " ", "% 4.x"}, + {__LINE__, 0xffd96f92, "FFD96F92", "%X"}, + {__LINE__, 0x0000002e, " 46", "% 0ld"}, + {__LINE__, 0xffffffff, "ffffffff", "%x"}, + {__LINE__, -0x5008ba3, "-83921827", "%+d"}, + {__LINE__, 0xfdc1df3d, "FDC1DF3D", "%0X"}, + {__LINE__, 0xfc7410e5, "fc7410e5", "%7x"}, + {__LINE__, 0xfffffffa, "FFFFFFFA", "% 6.X"}, + {__LINE__, 0x00000000, "0", "%X"}, + {__LINE__, -0x040fd4e, "-4259150", "% 05.d"}, + {__LINE__, 0x0000003b, " 59", "%3.2d"}, + {__LINE__, 0xff776dd8, "ff776dd8", "%x"}, + {__LINE__, 0x0000055b, "+1371", "%+#2d"}, + {__LINE__, 0x00004841, "4841", "%.1x"}, + {__LINE__, 0x0229d710, "36296464", "%-.2ld"}, + {__LINE__, 0x00000000, "0", "%x"}, + {__LINE__, 0xfffe8376, "fffe8376", "%0x"}, + {__LINE__, 0x000a7b83, "a7b83", "%x"}, + {__LINE__, 0x0000000d, " 013", "%#7.3d"}, + {__LINE__, 0xffffffff, "FFFFFFFF", "%5.0X"}, + {__LINE__, 0x00000704, " 0x704", "%#7.0x"}, + {__LINE__, 0xfff970b9, "FFF970B9", "%.1X"}, + {__LINE__, -0x000b60a, "-46602", "%+d"}, + {__LINE__, 0x00000000, " 00000", "%6.5x"}, + {__LINE__, 0x00000003, "3", "%X"}, + {__LINE__, 0x0000c14b, "c14b", "%0x"}, + {__LINE__, 0x066d7860, "107837536", "%-d"}, + {__LINE__, 0x00000013, " 13", "%4.x"}, + {__LINE__, 0xfff96f18, "FFF96F18", "%4X"}, + {__LINE__, 0xffffff30, "FFFFFF30", "%X"}, + {__LINE__, 0xffffffff, "FFFFFFFF", "% .7X"}, + {__LINE__, -0x72a9e985, "-1923737989", "%2.d"}, + {__LINE__, 0x00000002, "0x2", "%#x"}, + {__LINE__, 0x0000050e, "50e", "%2.3x"}, + {__LINE__, 0x0000605c, "24668", "%4.1d"}, + {__LINE__, 0xffffff3e, "ffffff3e", "%x"}, + {__LINE__, -0x0000010, "-16", "%-2d"}, + {__LINE__, 0x000061aa, "61AA", "%X"}, + {__LINE__, 0x000c2ec3, "C2EC3", "%0X"}, + {__LINE__, -0x0000001, "-1", "%-0d"}, + {__LINE__, 0x00130e17, "+1248791", "%+.6ld"}, + {__LINE__, 0x000000ef, "EF", "%-X"}, + {__LINE__, -0x0000001, " -1", "%+5ld"}, + {__LINE__, 0x0000989d, "39069", "%d"}, + {__LINE__, 0x00000000, "0", "%-x"}, + {__LINE__, 0x00000417, "417", "%X"}, + {__LINE__, 0x00005e86, "5E86", "%+X"}, + {__LINE__, -0x0007c08, "-31752", "%ld"}, + {__LINE__, 0x00da8e0f, "DA8E0F", "%2.2X"}, + {__LINE__, -0x3ee095ec, "-1054905836", "% 0d"}, + {__LINE__, 0xfffdb5a3, "fffdb5a3", "%x"}, + {__LINE__, 0xffffff83, "FFFFFF83", "%X"}, + {__LINE__, 0xfff8efd7, "0xfff8efd7", "%#x"}, + {__LINE__, 0x00000020, " 32", "% d"}, + {__LINE__, 0xfff7c002, "fff7c002", "%.7x"}, + {__LINE__, -0x0000001, "-1", "%ld"}, + {__LINE__, 0x00000000, " 000", "%05.3X"}, + {__LINE__, 0xfff190ee, "FFF190EE", "%X"}, + {__LINE__, 0x00000a6c, " 2668", "%#6.ld"}, + {__LINE__, 0x00037024, "37024", "%x"}, + {__LINE__, 0xfffec37f, "FFFEC37F", "%X"}, + {__LINE__, 0x007ee9bb, "8317371", "%#0.ld"}, + {__LINE__, 0x00000122, "290", "%ld"}, + {__LINE__, -0x0013b5f, "-80735", "%ld"}, + {__LINE__, 0xfffffff6, "FFFFFFF6", "%X"}, + {__LINE__, -0x0000c16, "-0003094", "%-00.7d"}, + {__LINE__, -0x00010ed, "-4333", "%ld"}, + {__LINE__, 0x00000007, " 0X007", "%#6.3X"}, + {__LINE__, 0x0053781e, " 5470238", "% 2d"}, + {__LINE__, 0xffff03e9, "0XFFFF03E9", "%+#7.3X"}, + {__LINE__, 0xfffffdc2, "0xfffffdc2", "% #4.x"}, + {__LINE__, -0x00018e1, "-6369", "%d"}, + {__LINE__, 0xf3a4abc6, "F3A4ABC6", "%-.2X"}, + {__LINE__, 0xfff64a27, "FFF64A27", "%7.7X"}, + {__LINE__, 0x00195ae5, "195AE5", "%+03.X"}, + {__LINE__, 0xfff8849a, "fff8849a", "%.1x"}, + {__LINE__, -0x001b045, "-110661", "%+ld"}, + {__LINE__, 0x01e8a106, "32022790", "%7.ld"}, + {__LINE__, 0x0008ee94, "8EE94", "%X"}, + {__LINE__, 0xfffcdabc, "FFFCDABC", "%X"}, + {__LINE__, 0xfda75cd2, "fda75cd2", "%x"}, + {__LINE__, 0x00fd505a, "fd505a", "%x"}, + {__LINE__, 0x00003748, "3748", "%+x"}, + {__LINE__, 0xffffffe5, "ffffffe5", "% 3.6x"}, + {__LINE__, -0x1d1c4045, "-488390725", "%d"}, + {__LINE__, 0xfffffff9, "0xfffffff9", "%#x"}, + {__LINE__, -0x0000001, "-1", "%-#ld"}, + {__LINE__, 0x00000191, "191", "%X"}, + {__LINE__, 0xfffffffe, "FFFFFFFE", "%-X"}, + {__LINE__, -0x0000006, "-6", "%ld"}, + {__LINE__, 0x00000033, " 33", "% 4x"}, + {__LINE__, -0x0159a14, "-1415700", "% ld"}, + {__LINE__, 0x000001c3, "00001c3", "%07x"}, + {__LINE__, 0xffffe9e2, "ffffe9e2", "%-x"}, + {__LINE__, 0x5b19abd9, "0x5b19abd9", "%-#x"}, + {__LINE__, 0xffff1bae, "0xffff1bae", "%#x"}, + {__LINE__, 0x00000001, "+1", "%+d"}, + {__LINE__, 0x006a23c7, "6A23C7", "%2.X"}, + {__LINE__, 0x000008a4, " 8a4", "% 4.1x"}, + {__LINE__, 0xfffffcd9, "fffffcd9", "%.1x"}, + {__LINE__, 0x0000121b, "121B", "%X"}, + {__LINE__, 0x001231aa, "1192362", "%7.d"}, + {__LINE__, -0x008026d, "-524909", "%4.2d"}, + {__LINE__, 0x192ea594, "422487444", "%ld"}, + {__LINE__, 0x0001a800, "108544", "%0d"}, + {__LINE__, 0x000062f1, "62f1", "%.4x"}, + {__LINE__, 0xff8b39b0, "ff8b39b0", "% x"}, + {__LINE__, 0x00000001, "0x1", "%+#x"}, + {__LINE__, 0x0000144a, "5194", "%ld"}, + {__LINE__, 0x00002599, "9625", "%d"}, + {__LINE__, 0xffa0a2ef, "ffa0a2ef", "%0x"}, + {__LINE__, 0xff6712e1, "FF6712E1", "%0X"}, + {__LINE__, 0x0007ebb3, "519091", "%1ld"}, + {__LINE__, 0x0000000f, "15 ", "%-4.ld"}, + {__LINE__, -0x0000096, "-150", "%2.ld"}, + {__LINE__, 0x0000004f, "4F", "%.2X"}, + {__LINE__, 0xfffffc29, "fffffc29", "%-4.x"}, + {__LINE__, 0x00000019, "19", "%x"}, + {__LINE__, 0x00000c4e, "c4e", "%x"}, + {__LINE__, 0x0000006b, " 0006B", "%6.5X"}, + {__LINE__, 0x00c8d2c6, "c8d2c6", "%.0x"}, + {__LINE__, -0x256fb8de, "-628078814", "%ld"}, + {__LINE__, 0x4f51fcf4, "4F51FCF4", "%+X"}, + {__LINE__, 0x000f000e, "983054", "%1.ld"}, + {__LINE__, 0xfffff03f, "fffff03f", "%x"}, + {__LINE__, 0x0000001d, " 1D", "%05.X"}, + {__LINE__, 0x0072ea14, "72ea14", "%x"}, + {__LINE__, -0xc6098b9, "-207657145", "%-7d"}, + {__LINE__, 0x00000a76, "2678", "%3ld"}, + {__LINE__, 0xfff84db3, "FFF84DB3", "%X"}, + {__LINE__, 0x0fb52870, "fb52870", "%+x"}, + {__LINE__, 0x08bc170a, "0x8bc170a", "%#x"}, + {__LINE__, 0xfffeeb00, "fffeeb00", "%0.5x"}, + {__LINE__, 0x000ece95, "970389", "%d"}, + {__LINE__, 0x00000000, "0", "%0X"}, + {__LINE__, 0x07f98e8a, "7f98e8a", "% x"}, + {__LINE__, 0x000499eb, " 499eb", "% 6.x"}, + {__LINE__, 0xffffffff, "FFFFFFFF", "%-X"}, + {__LINE__, 0x0aa45e86, "178544262", "%#.2d"}, + {__LINE__, 0xff73387d, "FF73387D", "%03.X"}, + {__LINE__, 0xfffffb51, "FFFFFB51", "%.3X"}, + {__LINE__, 0xffffffdc, "ffffffdc", "%6.x"}, + {__LINE__, 0xffffffed, "FFFFFFED", "%-X"}, + {__LINE__, 0x0001c4c2, "1c4c2", "%0.3x"}, + {__LINE__, -0x0000001, "-0000001", "%-#.7d"}, + {__LINE__, 0x00000007, "7", "%0.x"}, + {__LINE__, 0x00000001, "1", "%ld"}, + {__LINE__, 0xffffd000, "ffffd000", "%4.3x"}, + {__LINE__, 0x00000030, "48", "%2.d"}, + {__LINE__, -0x6c121ce, "-113320398", "%.5ld"}, + {__LINE__, 0x000001ed, "1ED", "% 3.X"}, + {__LINE__, 0xfffff0f3, "FFFFF0F3", "%+.6X"}, + {__LINE__, 0xffffffec, "ffffffec", "%x"}, + {__LINE__, 0x002d5ab8, "0x2d5ab8", "%-#x"}, + {__LINE__, 0x0026acff, "2534655", "%0ld"}, + {__LINE__, 0x01d90cd7, "+31001815", "%+.2ld"}, + {__LINE__, -0x1f7abc0, "-33008576", "%7.6d"}, + {__LINE__, 0xfc5babcc, "fc5babcc", "%x"}, + {__LINE__, -0x9b74892, "-163006610", "% .6d"}, + {__LINE__, 0x03931d84, "59972996", "%0.d"}, + {__LINE__, 0x07d261ce, "131228110", "%#ld"}, + {__LINE__, 0x00000000, "0", "%x"}, + {__LINE__, 0x00000002, "2", "%+X"}, + {__LINE__, -0x0000604, "-1540", "%+d"}, + {__LINE__, 0x00000000, " ", "%7.x"}, + {__LINE__, 0x00000001, "1", "%.0X"}, + {__LINE__, -0x0005a8e, "-23182", "% d"}, + {__LINE__, 0x03fb2730, "3fb2730", "%7.x"}, + {__LINE__, 0xffffff03, "ffffff03", "%x"}, + {__LINE__, 0x00000000, " ", "%-#3.d"}, + {__LINE__, 0x04025a4b, "0X4025A4B", "%+#X"}, + {__LINE__, -0x0000001, " -1", "%4.d"}, + {__LINE__, 0xfffe00a3, "FFFE00A3", "%+X"}, + {__LINE__, -0x1b26e3c8, "-455533512", "% ld"}, + {__LINE__, 0x000017e5, "6117", "%d"}, + {__LINE__, -0x0e4f3b6, "-15004598", "%0ld"}, + {__LINE__, 0x00000034, "52", "%ld"}, + {__LINE__, 0x0000024c, " 24C", "%4X"}, + {__LINE__, 0xfffedf65, "FFFEDF65", "%-0X"}, + {__LINE__, -0x000ff1f, "-65311", "%+#d"}, + {__LINE__, 0x00000007, " 7", "%7.x"}, + {__LINE__, 0x018656ae, "18656ae", "%3.7x"}, + {__LINE__, -0x0000004, "-4", "%d"}, + {__LINE__, 0x7081292d, "1887512877", "%d"}, + {__LINE__, 0x87d3e48c, "87d3e48c", "%-x"}, + {__LINE__, 0xf99c516e, "0xf99c516e", "% #7.4x"}, + {__LINE__, 0xfffffffa, "FFFFFFFA", "%-1X"}, + {__LINE__, -0x000001d, "-29", "%#ld"}, + {__LINE__, -0x0000001, "-1", "%+ld"}, + {__LINE__, 0x28ab3350, " 682308432", "% 1d"}, + {__LINE__, -0x0000006, "-6", "%ld"}, + {__LINE__, 0xfffffffb, "FFFFFFFB", "%.5X"}, + {__LINE__, -0x0000007, "-7", "%#d"}, + {__LINE__, -0x0000328, " -808", "%6.ld"}, + {__LINE__, -0x29386f00, "-691564288", "%.3d"}, + {__LINE__, -0x059f38a, "-5895050", "%.4ld"}, + {__LINE__, 0xfffff888, "FFFFF888", "%3X"}, + {__LINE__, 0xffffffdf, "ffffffdf", "%0.0x"}, + {__LINE__, -0xb4fc354, "-189776724", "%2d"}, + {__LINE__, 0x00058c07, "363527", "%1.d"}, + {__LINE__, 0x0a256162, "a256162", "%x"}, + {__LINE__, -0x05c87b0, "-6064048", "%0ld"}, + {__LINE__, 0xfffffda1, "fffffda1", "%x"}, + {__LINE__, 0x000034b7, "13495", "%d"}, + {__LINE__, -0x6d1a8918, "-1830455576", "%.1d"}, + {__LINE__, 0x00022290, "139920", "%05ld"}, + {__LINE__, 0x00000000, "0", "%-x"}, + {__LINE__, -0x1f8eafce, "-529444814", "%4.d"}, + {__LINE__, -0x7bf32808, "-2079533064", "% ld"}, + {__LINE__, 0x0000023c, "23c", "% x"}, + {__LINE__, 0x00000039, "39", "%X"}, + {__LINE__, -0x000556d, "-21869", "%ld"}, + {__LINE__, -0x00000ca, "-202", "%ld"}, + {__LINE__, 0x00002e28, "11816", "%-d"}, + {__LINE__, 0x00000011, "17", "%-ld"}, + {__LINE__, 0xfffffffb, "FFFFFFFB", "%-X"}, + {__LINE__, 0xfffdd67f, "0XFFFDD67F", "%#X"}, + {__LINE__, -0x000003d, "-61", "%d"}, + {__LINE__, 0x0000bfce, "0XBFCE", "%-#5.2X"}, + {__LINE__, 0xfffffffc, "fffffffc", "%x"}, + {__LINE__, -0x00aea17, "-715287", "%.5d"}, + {__LINE__, -0x02fce89, "-3133065", "%0d"}, + {__LINE__, 0x007f6ed1, "7F6ED1", "%6X"}, + {__LINE__, 0xffffffff, "FFFFFFFF", "%X"}, + {__LINE__, -0x0002761, "-10081", "%#6.2d"}, + {__LINE__, 0x003be8d8, "3BE8D8", "%-X"}, + {__LINE__, 0x00000901, " 2305", "%6.d"}, + {__LINE__, 0x00049916, "0301334", "%3.7ld"}, + {__LINE__, 0x0678ffea, "0X678FFEA", "%#4X"}, + {__LINE__, 0xffffffff, "ffffffff", "%+.0x"}, + {__LINE__, -0x31d2ec61, "-835906657", "%.0d"}, + {__LINE__, 0xfffffffc, "FFFFFFFC", "%0X"}, + {__LINE__, -0x0015588, "-87432", "%d"}, + {__LINE__, 0xffffff3e, "ffffff3e", "%.4x"}, + {__LINE__, 0x0000000a, "10", "%d"}, + {__LINE__, -0x0000003, "-3", "%2.1ld"}, + {__LINE__, -0x000d29a, "-53914", "%ld"}, + {__LINE__, -0x04ccbe0, "-5032928", "%2.2ld"}, + {__LINE__, 0x0357c2a5, "357c2a5", "% 7.x"}, + {__LINE__, 0x00000009, " 9", "% 1.ld"}, + {__LINE__, -0x005908d, "-364685", "%0d"}, + {__LINE__, -0x0000de6, "-3558", "%0ld"}, + {__LINE__, 0x2d395e6b, "+758734443", "%+6d"}, + {__LINE__, 0x001aba58, "1ABA58", "% X"}, + {__LINE__, 0x0ceba5ab, "0XCEBA5AB", "%#.1X"}, + {__LINE__, -0x01a8575, "-1738101", "% 2ld"}, + {__LINE__, 0x0000000d, "13", "%#ld"}, + {__LINE__, 0x00000000, "0", "%d"}, + {__LINE__, 0x4b856407, "4b856407", "%5x"}, + {__LINE__, 0x006f333c, "6F333C", "%-X"}, + {__LINE__, 0x000000d0, "d0", "%x"}, + {__LINE__, 0x2ecf0d4e, "2ecf0d4e", "%0x"}, + {__LINE__, -0x0000188, "-0000392", "%#1.7ld"}, + {__LINE__, -0x0000037, "-55", "%d"}, + {__LINE__, 0xfffffff1, "FFFFFFF1", "% .1X"}, + {__LINE__, 0x00000001, "0x1", "%#3x"}, + {__LINE__, 0x000005ed, "5ED", "%3X"}, + {__LINE__, 0x031183a3, "31183A3", "%X"}, + {__LINE__, 0xffffffff, "ffffffff", "%x"}, + {__LINE__, -0x0018695, "-99989", "%-0.5ld"}, + {__LINE__, -0x0000001, "-01", "%0.2ld"}, + {__LINE__, 0x00007822, "7822", "%+x"}, + {__LINE__, 0x00000000, "0", "% x"}, + {__LINE__, 0xfda2461a, "FDA2461A", "%X"}, + {__LINE__, 0x065c50ef, "106713327", "%2.ld"}, + {__LINE__, 0x00000a81, "a81", "% 0x"}, + {__LINE__, -0x000022e, "-558", "%.0ld"}, + {__LINE__, 0x00013d2f, "81199", "%.2ld"}, + {__LINE__, 0xfffffffe, "FFFFFFFE", "%+X"}, + {__LINE__, 0x000015f9, "5625", "%04.ld"}, + {__LINE__, 0x0ab575a2, "179664290", "%0d"}, + {__LINE__, 0x0024d07f, "0X24D07F", "%#X"}, + {__LINE__, 0x07ee35e1, "7EE35E1", "%+X"}, + {__LINE__, -0x00c114c, "-790860", "%#ld"}, + {__LINE__, 0x00003be3, " 15331", "%07.d"}, + {__LINE__, 0xfff87570, "FFF87570", "%4.0X"}, + {__LINE__, -0x14eab419, "-350925849", "%-ld"}, + {__LINE__, -0x000001b, "-27", "%ld"}, + {__LINE__, 0x167ce2ea, "0x167ce2ea", "%#0.x"}, + {__LINE__, -0x00009bc, "-002492", "% 3.6d"}, + {__LINE__, 0xfffffdb9, "0XFFFFFDB9", "%#7.X"}, + {__LINE__, 0x008b2b9d, "8B2B9D", "% X"}, + {__LINE__, 0x000cfec3, "CFEC3", "% 05X"}, + {__LINE__, 0x05970be6, "5970be6", "%x"}, + {__LINE__, 0x00002780, "010112", "%2.6d"}, + {__LINE__, 0x00000005, "+5", "%+d"}, + {__LINE__, 0xfffffffb, "0xfffffffb", "%#3.x"}, + {__LINE__, 0x00000001, "1 ", "%-#5.ld"}, + {__LINE__, -0x0000017, "-23", "%ld"}, + {__LINE__, -0x023b943, "-2341187", "%d"}, + {__LINE__, 0x0000000d, "13", "%ld"}, + {__LINE__, 0x00025a03, "25a03", "% .5x"}, + {__LINE__, 0x3e1ebe24, "3e1ebe24", "% x"}, + {__LINE__, 0x0000013a, "0x13a", "%#5.0x"}, + {__LINE__, 0xfff6f5b3, "FFF6F5B3", "%4.X"}, + {__LINE__, -0x0000a8a, "-2698", "%.3d"}, + {__LINE__, 0x0009dd5f, "9dd5f", "%x"}, + {__LINE__, 0x000003c7, " 3C7", "%04.2X"}, + {__LINE__, 0x1bcfa2f2, "1bcfa2f2", "%+1.x"}, + {__LINE__, 0x0001b4f4, "1b4f4", "%+1.x"}, + {__LINE__, 0x1bc19a90, "465672848", "%#d"}, + {__LINE__, 0xffffffff, "ffffffff", "%+06x"}, + {__LINE__, -0x0000a88, "-2696", "%3.d"}, + {__LINE__, 0x00084a19, "84A19", "%-X"}, + {__LINE__, 0xffe1fc8f, "FFE1FC8F", "%0.1X"}, + {__LINE__, -0x0000a3a, "-2618", "%5d"}, + {__LINE__, -0x0000001, "-1", "%ld"}, + {__LINE__, -0x5c6183d, "-96868413", "%+ld"}, + {__LINE__, -0x0000001, "-1", "%-d"}, + {__LINE__, 0x0000faa8, "64168", "%05.d"}, + {__LINE__, 0x003913ef, "3740655", "%ld"}, + {__LINE__, 0x0dde330a, "232665866", "%#ld"}, + {__LINE__, 0xfcfb1a7b, "FCFB1A7B", "%+X"}, + {__LINE__, 0x07b1a81f, " 129083423", "% 0d"}, + {__LINE__, 0x00000001, "1", "%d"}, + {__LINE__, 0x00000070, " 112", "%5ld"}, + {__LINE__, 0xffff74d9, "ffff74d9", "%x"}, + {__LINE__, -0x001ab93, "-109459", "%03.d"}, + {__LINE__, 0x0eb6b497, "EB6B497", "%+X"}, + {__LINE__, 0x07adbac2, "128826050", "%#0.4d"}, + {__LINE__, 0xff747068, "FF747068", "%6.X"}, + {__LINE__, -0x190ce98f, "-420276623", "%06.6ld"}, + {__LINE__, -0x0000007, "-7", "%.0d"}, + {__LINE__, 0x0001240f, "1240f", "% 3x"}, + {__LINE__, 0x267ae4a0, "645588128", "%-#ld"}, + {__LINE__, -0x0000001, "-1", "% ld"}, + {__LINE__, -0x0000066, "-00102", "%.5ld"}, + {__LINE__, 0x868fa035, "868fa035", "%x"}, + {__LINE__, 0x00000000, " ", "%-4.ld"}, + {__LINE__, 0xfffffe72, "FFFFFE72", "%4.4X"}, + {__LINE__, 0x00a6b4f4, "10925300", "%#ld"}, + {__LINE__, -0x0000002, "-2", "%00.1d"}, + {__LINE__, -0x00000a3, "-163", "%ld"}, + {__LINE__, 0xfffffffe, "fffffffe", "% 3.x"}, + {__LINE__, 0xffe25941, "ffe25941", "% x"}, + {__LINE__, 0x0000a20f, "41487", "%ld"}, + {__LINE__, -0x000009b, "-155", "%#.3ld"}, + {__LINE__, 0x000c5dc1, "810433", "%4.ld"}, + {__LINE__, 0x00003ec4, "16068", "%ld"}, + {__LINE__, 0x000002f3, "0755", "%04ld"}, + {__LINE__, 0xffffff28, "FFFFFF28", "%.5X"}, + {__LINE__, -0x08450ff, "-8671487", "%-3.0ld"}, + {__LINE__, 0x00000092, "92", "%x"}, + {__LINE__, -0x0000317, "-791", "%d"}, + {__LINE__, 0x0000000d, "d", "%x"}, + {__LINE__, 0x00000036, "36", "%x"}, + {__LINE__, -0x112693f, "-17983807", "%ld"}, + {__LINE__, 0x00004226, "16934", "%0.d"}, + {__LINE__, 0x000001ba, " 442", "% ld"}, + {__LINE__, 0xfffffffc, "0XFFFFFFFC", "%#4X"}, + {__LINE__, 0xffdb3d23, "0xffdb3d23", "% #x"}, + {__LINE__, 0x039eb84d, "39EB84D", "%+.6X"}, + {__LINE__, 0xffffc7da, "ffffc7da", "%0x"}, + {__LINE__, 0xfffffdb6, "FFFFFDB6", "%6X"}, + {__LINE__, 0x001b75b0, "1799600", "%ld"}, + {__LINE__, 0xfffffca2, "FFFFFCA2", "%-X"}, + {__LINE__, 0xffffffba, "ffffffba", "%7.4x"}, + {__LINE__, -0x000124e, "-4686", "%3.ld"}, + {__LINE__, -0x000bec0, "-48832", "% 0d"}, + {__LINE__, 0xfffffca0, "fffffca0", "%2.x"}, + {__LINE__, 0x00b2a462, "11707490", "%ld"}, + {__LINE__, 0x0745a647, "745a647", "%+4.x"}, + {__LINE__, 0xfffffbac, "0XFFFFFBAC", "%#3.X"}, + {__LINE__, -0x0000002, "-2", "%-0.1d"}, + {__LINE__, 0x0006cfdb, "446427", "%#5.d"}, + {__LINE__, -0x0000001, "-1", "%d"}, + {__LINE__, 0x043b134e, "43B134E", "%X"}, + {__LINE__, -0x0000015, "-21", "%ld"}, + {__LINE__, -0x0000114, "-276", "%0d"}, + {__LINE__, -0x0004d4a, "-19786", "%-d"}, + {__LINE__, -0x000001c, "-28", "%ld"}, + {__LINE__, -0x0cb89fc, "-13339132", "%ld"}, + {__LINE__, 0xffffffcf, "ffffffcf", "%x"}, + {__LINE__, 0xf6d2387a, "f6d2387a", "%-x"}, + {__LINE__, -0x00000cd, "-205", "%#ld"}, + {__LINE__, 0x00000000, "0", "%#x"}, + {__LINE__, 0xfffffc81, "fffffc81", "%x"}, + {__LINE__, 0x00000000, " 0", "% ld"}, + {__LINE__, 0x00024fb5, "24fb5", "%x"}, + {__LINE__, 0x000012fa, "12FA", "%X"}, + {__LINE__, 0x0318ce7c, "51957372", "%0d"}, + {__LINE__, 0x02280a99, "2280a99", "%-x"}, + {__LINE__, 0xffffff5c, "FFFFFF5C", "%2.X"}, + {__LINE__, -0x000002e, " -46", "%7ld"}, + {__LINE__, -0x04a73e8, "-4879336", "%4ld"}, + {__LINE__, 0x000007f3, "7f3", "% 1.3x"}, + {__LINE__, 0x00000114, "0x114", "%#x"}, + {__LINE__, 0x0000030c, "30c", "%-x"}, + {__LINE__, 0x001dd0dd, "0x1dd0dd", "%+#5.5x"}, + {__LINE__, 0xfff23de3, "fff23de3", "%-x"}, + {__LINE__, -0x0178f9c, "-1544092", "%d"}, + {__LINE__, 0x02ded8da, "2DED8DA", "%X"}, + {__LINE__, -0x0991672, "-10032754", "%3.d"}, + {__LINE__, 0x6943c150, "6943c150", "%x"}, + {__LINE__, 0xffffc25d, "FFFFC25D", "%4X"}, + {__LINE__, 0x00000c9c, " 0003228", "% .7d"}, + {__LINE__, 0xffffffdf, "FFFFFFDF", "% 6.X"}, + {__LINE__, 0x0001a145, " 1a145", "%6.0x"}, + {__LINE__, 0xffdc832f, "0xffdc832f", "%#.1x"}, + {__LINE__, 0x00699f7b, "699f7b", "%x"}, + {__LINE__, 0xf9575268, "F9575268", "%+0X"}, + {__LINE__, 0x04eb4783, "82528131", "%-ld"}, + {__LINE__, -0x0000023, "-35", "%0ld"}, + {__LINE__, -0x012b08a, "-1224842", "%0d"}, + {__LINE__, 0xffffb587, "FFFFB587", "%X"}, + {__LINE__, 0xffffffe9, "ffffffe9", "%x"}, + {__LINE__, 0x006b5596, " 7034262", "% 0d"}, + {__LINE__, 0x004d0d2a, "+5049642", "%+ld"}, + {__LINE__, -0x002a099, "-172185", "%d"}, + {__LINE__, 0x00000224, "548", "%ld"}, + {__LINE__, 0x03e0cca8, "65064104", "%d"}, + {__LINE__, -0x7bb389d, "-129710237", "%.3ld"}, + {__LINE__, 0xffc630f5, "ffc630f5", "%-07.0x"}, + {__LINE__, 0xfffffff8, "FFFFFFF8", "%X"}, + {__LINE__, 0x0030225b, "3154523", "%#d"}, + {__LINE__, 0xff7f4e28, "ff7f4e28", "%+4.x"}, + {__LINE__, 0x14ee154d, "+351147341", "%+ld"}, + {__LINE__, 0x00000003, "03", "%.2d"}, + {__LINE__, 0xfe0359d6, "fe0359d6", "%x"}, + {__LINE__, 0x002b71c3, "2847171", "%d"}, + {__LINE__, 0x055c4d4a, "55C4D4A", "%-X"}, + {__LINE__, 0xfffb17d2, "fffb17d2", "% .0x"}, + {__LINE__, 0x00000002, "2", "%x"}, + {__LINE__, 0x000018e1, "18E1", "%1.1X"}, + {__LINE__, 0x00000331, "817", "%0d"}, + {__LINE__, -0x0000982, "-2434 ", "%-06.ld"}, + {__LINE__, -0x0000168, "-0000360", "%.7ld"}, + {__LINE__, 0xffffffe9, "FFFFFFE9", "%-0.4X"}, + {__LINE__, 0xe42084ef, "E42084EF", "%X"}, + {__LINE__, 0x000000aa, "aa", "%x"}, + {__LINE__, -0xe8b98b5, "-244029621", "%+d"}, + {__LINE__, -0x00000d9, "-217", "%+2.d"}, + {__LINE__, 0x0000027b, "27B", "%+.0X"}, + {__LINE__, 0x002e52db, "3035867", "%-ld"}, + {__LINE__, -0x00e2ba8, "-928680", "%0.2ld"}, + {__LINE__, 0x003b74d8, "3B74D8", "%X"}, + {__LINE__, -0x000006f, "-111", "%+ld"}, + {__LINE__, 0xf8507e22, "0XF8507E22", "%-#X"}, + {__LINE__, 0x0629f4c0, "103412928", "%-ld"}, + {__LINE__, -0x000002d, "-45", "%0d"}, + {__LINE__, -0x0001db0, "-7600", "%d"}, + {__LINE__, -0x00001bb, " -443", "%5.ld"}, + {__LINE__, 0xffffd2b9, "ffffd2b9", "%+x"}, + {__LINE__, 0xffffe685, "0XFFFFE685", "%#0.7X"}, + {__LINE__, 0x0000a4ce, "A4CE", "% X"}, + {__LINE__, 0xffffffff, "FFFFFFFF", "%X"}, + {__LINE__, 0x0000000c, "C", "% X"}, + {__LINE__, 0xfff59369, "FFF59369", "%7X"}, + {__LINE__, 0x00000156, " 156", "%5.X"}, + {__LINE__, 0x02833aa9, "+42154665", "%+2d"}, + {__LINE__, 0x0004a8f3, "+305395", "%+d"}, + {__LINE__, 0x01a09267, "1A09267", "%0.3X"}, + {__LINE__, 0x000004f1, "4f1", "%x"}, + {__LINE__, 0x00000005, "5", "%x"}, + {__LINE__, 0x00000119, " 0281", "% #2.4ld"}, + {__LINE__, -0x0001a2a, "-6698", "%ld"}, + {__LINE__, 0xa3633a57, "A3633A57", "%7X"}, + {__LINE__, -0x10bd2970, "-280832368", "%-d"}, + {__LINE__, 0xffff9c38, "ffff9c38", "%x"}, + {__LINE__, 0xffdbe81e, "ffdbe81e", "%+6.7x"}, + {__LINE__, 0xffffffe7, "FFFFFFE7", "%-3.0X"}, + {__LINE__, 0x0002f6d6, "2f6d6", "%5.x"}, + {__LINE__, 0xffffffff, "ffffffff", "% x"}, + {__LINE__, 0xffc2c07a, "ffc2c07a", "%0.x"}, + {__LINE__, 0xfcc0e13a, "FCC0E13A", "%X"}, + {__LINE__, 0x0000000d, "d", "% x"}, + {__LINE__, 0x0016cac8, "16CAC8", "%-0.3X"}, + {__LINE__, 0x00945dc1, "9723329", "%2d"}, + {__LINE__, 0xf19a1cd1, "F19A1CD1", "%-X"}, + {__LINE__, 0x00000003, "+3", "%+ld"}, + {__LINE__, 0x00000773, "1907", "%ld"}, + {__LINE__, 0x000263e6, "263e6", "%-x"}, + {__LINE__, -0x0238b55, "-2329429", "%d"}, + {__LINE__, 0x00006c56, "6C56", "%X"}, + {__LINE__, 0x0000f34b, "62283", "%#.0ld"}, + {__LINE__, -0x1620e21, "-23203361", "%0ld"}, + {__LINE__, 0xf9257d6a, "f9257d6a", "%2x"}, + {__LINE__, -0x00ed463, "-971875", "%03.d"}, + {__LINE__, 0x02bb94c6, "45847750", "%d"}, + {__LINE__, 0xffffd20c, "0XFFFFD20C", "%#X"}, + {__LINE__, 0x000087d8, "34776", "%.0d"}, + {__LINE__, 0xfffffffc, "FFFFFFFC", "%+7.X"}, + {__LINE__, -0x0009cd5, "-40149", "%-ld"}, + {__LINE__, 0xfffff85e, "FFFFF85E", "% 0.7X"}, + {__LINE__, -0x0000006, " -6", "%+#6.ld"}, + {__LINE__, 0x007ff453, "0x7ff453", "%-#1.x"}, + {__LINE__, 0xffffffe6, "FFFFFFE6", "%2X"}, + {__LINE__, 0x0000001f, "0X1F", "%#4X"}, + {__LINE__, -0x001c157, "-115031", "%.3ld"}, + {__LINE__, 0x00096e06, "617990", "%3.1ld"}, + {__LINE__, 0x0f77271d, "259467037", "%d"}, + {__LINE__, -0x0001403, "-5123", "%d"}, + {__LINE__, 0xffffff8a, "ffffff8a", "%x"}, + {__LINE__, -0x000010f, "-271", "%1.ld"}, + {__LINE__, 0xe573cc4a, "E573CC4A", "%0X"}, + {__LINE__, -0x0000d88, "-3464", "%-d"}, + {__LINE__, 0x0000000e, "14", "%#ld"}, + {__LINE__, -0x000345b, "-13403", "%#d"}, + {__LINE__, 0x00000602, "602", "%+x"}, + {__LINE__, 0x00000011, "17", "%#d"}, + {__LINE__, -0x0000002, "-2", "%+d"}, + {__LINE__, 0x030fe6e6, "51373798", "%d"}, + {__LINE__, 0x00000007, "007", "%.3X"}, + {__LINE__, 0x0001abe0, "0X1ABE0", "%+#.4X"}, + {__LINE__, 0xfffffdb7, "fffffdb7", "%-6x"}, + {__LINE__, 0xffffff8d, "FFFFFF8D", "% 02.2X"}, + {__LINE__, 0xfff12126, "FFF12126", "%X"}, + {__LINE__, 0x0208e32d, "34136877", "%.2d"}, + {__LINE__, 0x11c04b55, "297814869", "%ld"}, + {__LINE__, 0xff1e5ca3, "0xff1e5ca3", "%#x"}, + {__LINE__, 0xf9643f09, "f9643f09", "%x"}, + {__LINE__, -0x003c6da, "-247514", "%4d"}, + {__LINE__, 0xff69d0e7, "FF69D0E7", "%-X"}, + {__LINE__, 0x00006ae9, "0x6ae9", "%#x"}, + {__LINE__, -0x005aefe, "-372478", "%d"}, + {__LINE__, 0x0000000d, "00013", "%3.5ld"}, + {__LINE__, 0x00cc185c, "CC185C", "%X"}, + {__LINE__, 0x3dd14d9f, "3DD14D9F", "%1.4X"}, + {__LINE__, -0x4cc2ad3, "-80489171", "%1.d"}, + {__LINE__, 0xfffff79e, "fffff79e", "%x"}, + {__LINE__, 0xfffeeb03, "fffeeb03", "%-1x"}, + {__LINE__, -0x0b1b15c, "-11645276", "%0ld"}, + {__LINE__, -0x06b558d, "-7034253", "%ld"}, + {__LINE__, 0xfffffe61, "fffffe61", "%x"}, + {__LINE__, -0x0000002, "-2", "%d"}, + {__LINE__, -0x0000162, "-000354", "%-5.6d"}, + {__LINE__, 0x01a23780, "27408256", "%d"}, + {__LINE__, 0xffff3a9b, "ffff3a9b", "% x"}, + {__LINE__, 0xfffffdc7, "0xfffffdc7", "%#4.5x"}, + {__LINE__, 0x00000000, "00", "%.2X"}, + {__LINE__, -0x0000006, "-6", "%0ld"}, + {__LINE__, -0x16072c6, "-23098054", "%#5ld"}, + {__LINE__, -0x07152b8, "-7426744", "%01ld"}, + {__LINE__, 0x0000d6c6, "0x0d6c6", "%#1.5x"}, + {__LINE__, 0x00000f7c, "000f7c", "%+04.6x"}, + {__LINE__, 0x00000bd0, "3024", "%4ld"}, + {__LINE__, 0x0000295e, "0x295e", "%#x"}, + {__LINE__, 0x00002e38, "11832", "%.5d"}, + {__LINE__, -0xa2f5de4, "-170876388", "%#d"}, + {__LINE__, -0x001aa36, "-109110", "%-#d"}, + {__LINE__, 0x03012091, "3012091", "%+2.5X"}, + {__LINE__, -0x00009ed, "-002541", "%-0.6ld"}, + {__LINE__, 0x0000001d, "1d", "%x"}, + {__LINE__, 0xffffe315, "FFFFE315", "%+4X"}, + {__LINE__, 0x0000716b, "716B", "%X"}, + {__LINE__, 0xfffb8315, "0xfffb8315", "%+#x"}, + {__LINE__, 0x00000132, "132 ", "%-7.3x"}, + {__LINE__, 0x00000000, "+0000000", "%+1.7d"}, + {__LINE__, 0xe16d27ab, "E16D27AB", "%X"}, + {__LINE__, 0xffffffe5, "ffffffe5", "%+x"}, + {__LINE__, -0x000ab9d, "-43933", "%ld"}, + {__LINE__, 0xffd042d6, "ffd042d6", "%2x"}, + {__LINE__, 0xffffff9b, "ffffff9b", "%x"}, + {__LINE__, 0x000000fb, "0xfb", "% #1.x"}, + {__LINE__, 0x0000000f, " 15", "%#3ld"}, + {__LINE__, 0xfffba2d8, "0XFFFBA2D8", "%-#0.X"}, + {__LINE__, 0xfffffff8, "0XFFFFFFF8", "% #X"}, + {__LINE__, 0x00000000, " ", "%4.ld"}, + {__LINE__, 0x00000002, "2", "%+x"}, + {__LINE__, 0xfffff314, "FFFFF314", "%-X"}, + {__LINE__, 0x00000000, " 0", "% ld"}, + {__LINE__, -0x0000007, "-07", "%3.2ld"}, + {__LINE__, 0xffffdd80, "FFFFDD80", "%.6X"}, + {__LINE__, -0x000001b, "-27", "%-ld"}, + {__LINE__, -0x0000258, "-600", "%-0d"}, + {__LINE__, 0x00016377, "16377", "%3X"}, + {__LINE__, 0x00000001, "1", "%X"}, + {__LINE__, -0xac5d314, "-180736788", "%d"}, + {__LINE__, -0x000036e, "-878", "% ld"}, + {__LINE__, 0xfe346af4, "fe346af4", "%.5x"}, + {__LINE__, 0xffffffe1, "ffffffe1", "%-7.6x"}, + {__LINE__, -0x0a1df07, "-10608391", "%#.5d"}, + {__LINE__, 0x000000c9, " 0XC9", "%+#5.X"}, + {__LINE__, 0xfffffffe, "fffffffe", "%x"}, + {__LINE__, 0xfffffff8, "fffffff8", "%+x"}, + {__LINE__, -0x4517255, "-72446549", "%.6ld"}, + {__LINE__, 0xfffa3670, "FFFA3670", "%-6X"}, + {__LINE__, 0xffffffe0, "ffffffe0", "%2.x"}, + {__LINE__, 0xffffffff, "ffffffff", "%0x"}, + {__LINE__, 0x0000230d, "8973", "%#.1d"}, + {__LINE__, 0x00000238, "238", "%0X"}, + {__LINE__, 0xfffce5ab, "FFFCE5AB", "%-X"}, + {__LINE__, 0x0000002c, "2C", "%X"}, + {__LINE__, 0x00000001, " 1", "%4.ld"}, + {__LINE__, 0xffffff8d, "FFFFFF8D", "%-X"}, + {__LINE__, 0x00069c69, "433257", "%06d"}, + {__LINE__, 0xfffffb8d, "0xfffffb8d", "%#x"}, + {__LINE__, 0x000d6a2d, "879149", "%5.5d"}, + {__LINE__, -0x0001fcb, " -8139", "%7.ld"}, + {__LINE__, 0xfff86937, "fff86937", "%-0x"}, + {__LINE__, 0x00059cf9, "367865", "%#.0ld"}, + {__LINE__, 0x02c5d87a, "46520442", "%3.ld"}, + {__LINE__, 0x00000571, "1393", "%ld"}, + {__LINE__, 0x0003c73f, "+247615", "%+4ld"}, + {__LINE__, 0x0000004f, "4f", "% 0x"}, + {__LINE__, 0x00000000, "0", "%-ld"}, + {__LINE__, -0x0e5850f, "-15041807", "% ld"}, + {__LINE__, -0x0000002, " -0002", "%7.4d"}, + {__LINE__, 0xfffffd1b, "fffffd1b", "%05x"}, + {__LINE__, 0x0000041c, " 1052", "% #0.ld"}, + {__LINE__, -0x0000030, "-48", "%d"}, + {__LINE__, -0x0013593, "-79251", "% #d"}, + {__LINE__, 0x00000001, "1", "%+X"}, + {__LINE__, 0x0000056b, " 56b", "%4.x"}, + {__LINE__, -0x0000004, "-4 ", "%-3d"}, + {__LINE__, -0x0000003, "-3", "% ld"}, + {__LINE__, 0xffff7c14, "0XFFFF7C14", "%#X"}, + {__LINE__, 0x02f63dd8, "49692120", "%.7ld"}, + {__LINE__, -0x03c51c9, "-3953097", "%+d"}, + {__LINE__, 0x00ded685, "14603909", "%5.ld"}, + {__LINE__, 0xffffffba, "ffffffba", "%x"}, + {__LINE__, 0x000370e8, "225512", "%#ld"}, + {__LINE__, 0x00000003, "3", "%X"}, + {__LINE__, -0x0024a64, "-150116", "%7.d"}, + {__LINE__, 0xff486ca1, "ff486ca1", "%x"}, + {__LINE__, 0x000001cf, "1CF", "% X"}, + {__LINE__, -0x0002d7e, "-11646", "%-0d"}, + {__LINE__, 0x0a594c65, "a594c65", "%.4x"}, + {__LINE__, -0x0000002, "-0002", "%-5.4ld"}, + {__LINE__, 0x00000000, "", "%00.ld"}, + {__LINE__, 0x00058bc4, "58BC4", "%3X"}, + {__LINE__, 0x0002cf8e, " 184206", "% 0ld"}, + {__LINE__, 0x000009c7, "+2503", "%+4.ld"}, + {__LINE__, 0xed0c984d, "ED0C984D", "%X"}, + {__LINE__, -0x0000058, "-088", "%#.3ld"}, + {__LINE__, 0x0076083d, "0X76083D", "%#6X"}, + {__LINE__, -0x0000001, "-1", "%#d"}, + {__LINE__, -0x6bf1777, "-113186679", "%#ld"}, + {__LINE__, -0x000011f, "-287", "%ld"}, + {__LINE__, 0x001b0e7d, "1B0E7D", "%-4X"}, + {__LINE__, 0x000007ac, " 1964", "%5.ld"}, + {__LINE__, 0x00000005, "5", "%0.d"}, + {__LINE__, -0x00003ba, "-954", "%4.0ld"}, + {__LINE__, 0xfffffffe, "FFFFFFFE", "%X"}, + {__LINE__, 0x00000019, "19", "%x"}, + {__LINE__, 0xffffffe0, "ffffffe0", "%-.6x"}, + {__LINE__, 0x0000012a, " 298", "% d"}, + {__LINE__, 0x00002c74, "2c74", "% 4.3x"}, + {__LINE__, 0x000002d5, "725", "%d"}, + {__LINE__, 0x0001c9a9, "1c9a9", "%-02x"}, + {__LINE__, 0xffc928c8, "ffc928c8", "%x"}, + {__LINE__, -0x03ae51f, "-3859743", "% #ld"}, + {__LINE__, 0x0000526d, "526d", "%x"}, + {__LINE__, -0x00028f0, "-10480", "%5ld"}, + {__LINE__, -0x49b4262, "-77283938", "%+02.0d"}, + {__LINE__, 0x028d37f0, "0x28d37f0", "%+#x"}, + {__LINE__, 0xd66e0af9, "D66E0AF9", "%03.X"}, + {__LINE__, -0x00c7707, "-816903", "%0d"}, + {__LINE__, -0x00000d0, "-208", "%-.1ld"}, + {__LINE__, 0x0000c328, "49960", "%d"}, + {__LINE__, 0x34cb86f1, "34CB86F1", "%X"}, + {__LINE__, 0x000000f6, "F6", "%+X"}, + {__LINE__, 0x0a3407ec, "0xa3407ec", "%-#x"}, + {__LINE__, 0x00007ebc, "32444", "%#3.d"}, + {__LINE__, 0xfffd3d65, "fffd3d65", "%x"}, + {__LINE__, 0x0007bc82, "0507010", "%0.7d"}, + {__LINE__, 0x0005bb93, "375699", "%ld"}, + {__LINE__, 0x0ec11cc8, "0XEC11CC8", "%+#6.2X"}, + {__LINE__, 0xfffff9c6, "fffff9c6", "%.5x"}, + {__LINE__, 0xff05ab70, "0XFF05AB70", "%-#.3X"}, + {__LINE__, 0x2328b716, "589870870", "%d"}, + {__LINE__, 0x00001a79, "6777", "%.1d"}, + {__LINE__, 0xfffee573, "fffee573", "%0.1x"}, + {__LINE__, -0x0000929, " -2345", "%7.d"}, + {__LINE__, 0xffffff9a, "FFFFFF9A", "%2.X"}, + {__LINE__, 0xfffffe60, "fffffe60", "%.5x"}, + {__LINE__, 0xfffffcd2, "fffffcd2", "%.7x"}, + {__LINE__, 0x00000001, " 001", "%6.3X"}, + {__LINE__, 0x00011e9c, "+73372", "%+0ld"}, + {__LINE__, 0x0000002a, "2a", "% x"}, + {__LINE__, 0xffffffff, "ffffffff", "%.7x"}, + {__LINE__, -0x0008ee8, "-36584", "%ld"}, + {__LINE__, 0x0000001c, "28", "%-d"}, + {__LINE__, 0x000abeda, "704218", "%d"}, + {__LINE__, 0x001347f7, "1347f7", "%3.0x"}, + {__LINE__, 0x0000023e, "574", "%3.3ld"}, + {__LINE__, 0x00000000, "0", "%-ld"}, + {__LINE__, -0x0016de0, "-93664", "%0ld"}, + {__LINE__, 0xffffff45, "FFFFFF45", "% X"}, + {__LINE__, 0x02dfb08c, "48214156", "%#ld"}, + {__LINE__, 0x003d73a2, "3d73a2", "%6.x"}, + {__LINE__, 0x00147da7, "1342887", "%#d"}, + {__LINE__, -0x5ff0f1e, "-100601630", "%-01ld"}, + {__LINE__, -0x000000b, "-11", "%ld"}, + {__LINE__, 0x00000168, " 168", "%+6.x"}, + {__LINE__, 0xffffc28e, "ffffc28e", "%0x"}, + {__LINE__, -0x00003a2, "-930", "%ld"}, + {__LINE__, 0x0002e56f, " 189807", "% 1.ld"}, + {__LINE__, 0x51abf44f, "0x51abf44f", "%#.7x"}, + {__LINE__, 0x00000000, "0", "%d"}, + {__LINE__, 0x9581268f, "9581268F", "%+X"}, + {__LINE__, 0xffffff3b, "FFFFFF3B", "%X"}, + {__LINE__, 0x000083d4, " 33748", "% #d"}, + {__LINE__, 0x00000001, "1", "%x"}, + {__LINE__, -0x000e51f, "-58655", "%.0ld"}, + {__LINE__, 0x0003eacb, "256715", "%6ld"}, + {__LINE__, 0x02be09db, " 46008795", "% 0.ld"}, + {__LINE__, 0xfffffffb, "FFFFFFFB", "% X"}, + {__LINE__, 0x000084f5, " 34037", "%6ld"}, + {__LINE__, -0x1127f99, "-17989529", "%#d"}, + {__LINE__, 0x5f6512de, "5f6512de", "%.7x"}, + {__LINE__, 0x00000001, "1", "%x"}, + {__LINE__, 0xfff74ab5, "fff74ab5", "%x"}, + {__LINE__, 0x0eebeb94, "250342292", "%4.ld"}, + {__LINE__, 0x0001b846, "0x1b846", "%#1x"}, + {__LINE__, 0x001e8c32, "1E8C32", "%2X"}, + {__LINE__, -0x0dae932, "-14346546", "%5.1d"}, + {__LINE__, 0x00000001, "1", "%ld"}, + {__LINE__, -0x0000042, "-66", "%ld"}, + {__LINE__, 0xffffff51, "FFFFFF51", "%0.1X"}, + {__LINE__, 0x00000043, "43", "%x"}, + {__LINE__, 0x04c21f39, " 79830841", "% 0ld"}, + {__LINE__, 0x0000061e, "1566", "%03.3d"}, + {__LINE__, -0x0000003, "-3", "%+d"}, + {__LINE__, 0x015b32db, " 22754011", "% .4d"}, + {__LINE__, 0xfffff181, "FFFFF181", "%-X"}, + {__LINE__, 0x000017ec, "0X17EC", "%#X"}, + {__LINE__, 0x000d703e, "880702", "%#ld"}, + {__LINE__, -0x6d7533a0, "-1836397472", "%ld"}, + {__LINE__, 0x0000008a, " 138", "% d"}, + {__LINE__, -0x7368794b, "-1936226635", "%+#d"}, + {__LINE__, 0x0000000d, "0XD", "%#X"}, + {__LINE__, 0x0000030d, "30D", "% X"}, + {__LINE__, 0xfffff9fe, "FFFFF9FE", "%5X"}, + {__LINE__, 0x00001bb2, "7090", "%d"}, + {__LINE__, 0x041d2a0c, "41D2A0C", "%0X"}, + {__LINE__, 0x00012aee, " 76526", "% d"}, + {__LINE__, 0x0000055f, "55f", "%.1x"}, + {__LINE__, 0xffffffff, "0XFFFFFFFF", "%#1X"}, + {__LINE__, 0x07b0a971, "+129018225", "%+.2ld"}, + {__LINE__, 0xfffffff8, "FFFFFFF8", "%4X"}, + {__LINE__, 0x00000001, "1", "%d"}, + {__LINE__, 0x00000038, "+56", "%+2ld"}, + {__LINE__, 0xfffffc2f, "fffffc2f", "%+7.x"}, + {__LINE__, 0x00004477, "0x4477", "% #x"}, + {__LINE__, 0x0000000d, "0XD", "%+#3X"}, + {__LINE__, 0xf5bf37b1, "F5BF37B1", "%1.X"}, + {__LINE__, 0x1a96f431, "446100529", "%d"}, + {__LINE__, 0x0037edf3, "+3665395", "%+#4.5ld"}, + {__LINE__, 0x0007f2aa, "520874", "%0ld"}, + {__LINE__, -0x00051a3, "-20899", "%+#1.ld"}, + {__LINE__, 0x0000037f, "37F", "%0X"}, + {__LINE__, 0xffffffb4, "ffffffb4", "%x"}, + {__LINE__, -0xd984c00, "-228084736", "%+06ld"}, + {__LINE__, 0xffffe1be, "FFFFE1BE", "%X"}, + {__LINE__, 0xfff20d48, "FFF20D48", "%+6.0X"}, + {__LINE__, 0x000028b7, "0x028b7", "%-#7.5x"}, + {__LINE__, -0x0000001, "-1", "%ld"}, + {__LINE__, 0x03f37945, "66287941", "%d"}, + {__LINE__, 0xffffffed, "0XFFFFFFED", "%+#6.4X"}, + {__LINE__, 0x0000f046, "f046", "%x"}, + {__LINE__, 0xe9772b51, "E9772B51", "%-1.X"}, + {__LINE__, 0xfffffffe, "fffffffe", "% x"}, + {__LINE__, 0xfffffffa, "0xfffffffa", "%#x"}, + {__LINE__, 0x00000015, "15", "%-X"}, + {__LINE__, 0x0000003c, "60", "%#ld"}, + {__LINE__, 0x3103952d, "822318381", "%0.ld"}, + {__LINE__, 0x17ba68bb, "398092475", "%2d"}, + {__LINE__, 0x000006c4, "+1732", "%+.2d"}, + {__LINE__, 0x00000043, "67", "%#d"}, + {__LINE__, 0x0043fb55, "4455253", "%.1ld"}, + {__LINE__, 0x00004b76, "4b76", "% 0x"}, + {__LINE__, 0xfff4c56b, "FFF4C56B", "%7X"}, + {__LINE__, 0x00766055, "766055", "%+5x"}, + {__LINE__, -0x000009f, "-159", "%+d"}, + {__LINE__, 0xffff063f, "ffff063f", "%-2x"}, + {__LINE__, 0x00808fc8, "808fc8", "%x"}, + {__LINE__, 0xffffffff, "ffffffff", "%x"}, + {__LINE__, 0x000000f1, "00000f1", "%+02.7x"}, + {__LINE__, 0x00000002, "2", "%X"}, + {__LINE__, 0x00000000, "000", "%03d"}, + {__LINE__, 0xe63f73b2, "E63F73B2", "% 1X"}, + {__LINE__, 0xfffffffe, "FFFFFFFE", "%5.1X"}, + {__LINE__, 0x0d3fa38b, "222274443", "%1d"}, + {__LINE__, 0x00000000, "0", "% X"}, + {__LINE__, 0x00000001, " 1", "%04.ld"}, + {__LINE__, 0x00000046, "46", "%0X"}, + {__LINE__, 0x0000761f, " 30239", "% ld"}, + {__LINE__, -0x0002517, "-9495", "%+d"}, + {__LINE__, 0x00000156, "156", "% 0x"}, + {__LINE__, 0x1c55eba2, "1c55eba2", "%.6x"}, + {__LINE__, 0x005af80d, "5af80d", "%.6x"}, + {__LINE__, 0x0000002e, "46", "%d"}, + {__LINE__, -0x0007c0f, "-31759", "%ld"}, + {__LINE__, 0xffffe924, "FFFFE924", "%7X"}, + {__LINE__, 0x00000174, "372", "%ld"}, + {__LINE__, 0xffffffc9, "0xffffffc9", "%-#x"}, + {__LINE__, 0x00000020, "+000032", "%+07d"}, + {__LINE__, 0xffffe5d9, "FFFFE5D9", "%4.5X"}, + {__LINE__, 0xffffffa3, "FFFFFFA3", "%+.3X"}, + {__LINE__, 0x00000a03, "+2563", "%+2d"}, + {__LINE__, 0x001b58ca, "+1792202", "%+4d"}, + {__LINE__, 0xffffffc9, "0xffffffc9", "%+#5x"}, + {__LINE__, -0x0000003, "-3", "% d"}, + {__LINE__, 0xfffffffc, "fffffffc", "%+0x"}, + {__LINE__, -0x0000002, "-02", "%.2d"}, + {__LINE__, 0x000243fb, "148475", "%-ld"}, + {__LINE__, 0x00000001, "1", "%0d"}, + {__LINE__, -0x0000672, "-1650", "%ld"}, + {__LINE__, -0x0005413, "-0021523", "% 7.7d"}, + {__LINE__, 0x00000017, "0X17", "%#X"}, + {__LINE__, 0x00000e48, "3656", "%0d"}, + {__LINE__, 0xffe79b38, "ffe79b38", "%-x"}, + {__LINE__, 0xffffff15, "FFFFFF15", "%+6.1X"}, + {__LINE__, 0xfff0272c, "fff0272c", "%-.5x"}, + {__LINE__, -0x00b706f, "-749679", "%1.ld"}, + {__LINE__, 0x0176aeec, "176AEEC", "%.1X"}, + {__LINE__, -0x00005a1, "-1441", "% 0ld"}, + {__LINE__, -0x0000002, "-00002", "%.5d"}, + {__LINE__, -0xd2e6f5d, "-221146973", "%1ld"}, + {__LINE__, -0x0000001, " -001", "%5.3ld"}, + {__LINE__, 0x00000001, " 1", "%05.ld"}, + {__LINE__, 0x0000749e, "+29854", "%+#d"}, + {__LINE__, 0x00000005, "5", "%d"}, + {__LINE__, 0xfa7128b0, "fa7128b0", "%1.x"}, + {__LINE__, 0xffffbbb4, "0XFFFFBBB4", "%#.1X"}, + {__LINE__, 0x0006862f, "427567", "%d"}, + {__LINE__, 0x00000002, "2", "%X"}, + {__LINE__, 0x000005d4, "5d4", "% x"}, + {__LINE__, 0x001387e1, "1279969", "%-05.0ld"}, + {__LINE__, -0x0035a56, "-219734", "%ld"}, + {__LINE__, -0x4064ecc6, "-1080356038", "%ld"}, + {__LINE__, 0x0000360d, "13837", "%0ld"}, + {__LINE__, -0xea1a85b, "-245475419", "%-.2ld"}, + {__LINE__, 0xffffff2d, "FFFFFF2D", "%X"}, + {__LINE__, 0x00000004, " 0004", "%7.4x"}, + {__LINE__, 0x00f72ffd, "F72FFD", "%-X"}, + {__LINE__, 0x00000fa2, "fa2 ", "%-5x"}, + {__LINE__, 0x05ae1f9a, "95297434", "%#ld"}, + {__LINE__, 0x0000bf2e, "48942", "%3.d"}, + {__LINE__, 0x00000000, " ", "%1.X"}, + {__LINE__, 0x01bcb097, "29143191", "%ld"}, + {__LINE__, 0x0000009c, "156 ", "%-4.0d"}, + {__LINE__, 0xfffffffe, "fffffffe", "% x"}, + {__LINE__, 0x00000001, "1 ", "%-6.d"}, + {__LINE__, 0xffffffef, "ffffffef", "%7.x"}, + {__LINE__, 0xfffffec1, "fffffec1", "%.5x"}, + {__LINE__, -0x000000f, "-15", "%-1d"}, + {__LINE__, -0x0008426, "-33830", "%0ld"}, + {__LINE__, 0x005be0ae, "5BE0AE", "% X"}, + {__LINE__, 0x00000009, " 9", "%+7X"}, + {__LINE__, -0x0007e18, "-32280", "%+0.d"}, + {__LINE__, 0x01697ba1, " 23690145", "% 5.ld"}, + {__LINE__, -0x0012042, "-073794", "%7.6d"}, + {__LINE__, 0x04e9bd0d, "4e9bd0d", "%-2x"}, + {__LINE__, 0xffffffd9, "FFFFFFD9", "%.2X"}, + {__LINE__, -0x01b9632, "-1807922", "%.6ld"}, + {__LINE__, 0x000000cd, "205", "%1.ld"}, + {__LINE__, 0x00000000, " ", "% .0d"}, + {__LINE__, 0xff17bbb1, "ff17bbb1", "%x"}, + {__LINE__, -0x00146d7, "-83671", "%+1.ld"}, + {__LINE__, 0xfffff144, "fffff144", "%x"}, + {__LINE__, 0x000f8dbe, "F8DBE", "%3.X"}, + {__LINE__, -0x000381c, "-14364", "%d"}, + {__LINE__, 0x0000001e, " 30", "%4.1d"}, + {__LINE__, 0x00000016, "22", "%-0d"}, + {__LINE__, 0x00000002, "+02", "%+1.2ld"}, + {__LINE__, 0x0000e803, "59395", "%d"}, + {__LINE__, 0xb4c2448d, "b4c2448d", "%-7x"}, + {__LINE__, 0x000e697d, "944509", "%ld"}, + {__LINE__, 0xfffe6e32, "0XFFFE6E32", "%#X"}, + {__LINE__, 0x00000190, " 190", "%+5.X"}, + {__LINE__, -0x03a2219, "-3809817", "%#6.ld"}, + {__LINE__, -0x000003c, "-60 ", "%-#4.ld"}, + {__LINE__, 0x00000000, " ", "% 03.ld"}, + {__LINE__, -0x074f922, "-7665954", "%ld"}, + {__LINE__, -0x00000f0, "-240", "%-ld"}, + {__LINE__, 0xfffe42d2, "0XFFFE42D2", "%#X"}, + {__LINE__, 0x000000dd, "DD", "%X"}, + {__LINE__, 0x00359abe, "359ABE", "%.1X"}, + {__LINE__, 0xffec7bdf, "FFEC7BDF", "%0.1X"}, + {__LINE__, 0x0ecddcba, "248372410", "%-#3.d"}, + {__LINE__, 0x00ad0dbc, "11341244", "%ld"}, + {__LINE__, -0x0000001, "-1", "%-d"}, + {__LINE__, 0x00050841, "50841", "% .5x"}, + {__LINE__, 0x01d359e7, "1d359e7", "%1.x"}, + {__LINE__, 0xff9efaa3, "FF9EFAA3", "%X"}, + {__LINE__, 0x0007ea10, "+518672", "%+ld"}, + {__LINE__, -0x000671c, "-26396", "%1d"}, + {__LINE__, 0xffffff91, "0xffffff91", "%#4.4x"}, + {__LINE__, 0x00000000, "+", "%+0.0ld"}, + {__LINE__, -0x002c53e, "-181566", "%3.d"}, + {__LINE__, 0xffffff56, "ffffff56", "%x"}, + {__LINE__, 0xfffff589, "FFFFF589", "%+X"}, + {__LINE__, 0x00024d13, "24D13", "%-5.2X"}, + {__LINE__, 0x00000000, " 0", "%6.1d"}, + {__LINE__, 0x00a64f33, "A64F33", "%4.4X"}, + {__LINE__, 0xffebb57a, "FFEBB57A", "%5.4X"}, + {__LINE__, 0xfff3b4a0, "fff3b4a0", "%2.x"}, + {__LINE__, 0xffffffd9, "FFFFFFD9", "%.2X"}, + {__LINE__, 0x00d37b84, "13859716", "%d"}, + {__LINE__, 0x00001e85, "0001E85", "%0.7X"}, + {__LINE__, -0x756148f, "-123081871", "% 7.d"}, + {__LINE__, -0x0319339, "-3248953", "%+#.4d"}, + {__LINE__, -0x00798b8, "-497848", "%#5ld"}, + {__LINE__, -0x0000039, "-57", "%0d"}, + {__LINE__, -0x000b1d7, "-45527", "%+0.ld"}, + {__LINE__, 0xff811fba, "FF811FBA", "%+X"}, + {__LINE__, 0x00000042, " 66", "% ld"}, + {__LINE__, 0xfffffe31, "0XFFFFFE31", "%#X"}, + {__LINE__, 0x00000073, "115", "%ld"}, + {__LINE__, 0x45091a39, "0x45091a39", "%+#3.x"}, + {__LINE__, 0x001270f5, "1270f5", "%-5.6x"}, + {__LINE__, 0xfffd91fd, "fffd91fd", "%x"}, + {__LINE__, -0x0817bad, "-8485805", "%#ld"}, + {__LINE__, -0x32ad55f, "-53138783", "%0d"}, + {__LINE__, 0x00003e57, "15959", "%0ld"}, + {__LINE__, -0x0048756, "-296790", "%2.6d"}, + {__LINE__, 0xff90f45f, "FF90F45F", "% X"}, + {__LINE__, 0x0000e454, "0e454", "% .5x"}, + {__LINE__, 0xfffffffc, "fffffffc", "%x"}, + {__LINE__, 0xfffffff7, "FFFFFFF7", "%-2X"}, + {__LINE__, 0xffdabf0e, "FFDABF0E", "%+X"}, + {__LINE__, 0xffffffff, "0XFFFFFFFF", "%#1X"}, + {__LINE__, 0x01516650, "1516650", "% x"}, + {__LINE__, 0xffffff51, "FFFFFF51", "%X"}, + {__LINE__, 0x000000ea, "234", "%00.d"}, + {__LINE__, 0x06db60ca, "115040458", "%5.d"}, + {__LINE__, 0x00000f01, " 3841", "% d"}, + {__LINE__, 0x00000009, "9", "%x"}, + {__LINE__, 0x299b3ba0, "299b3ba0", "%6.7x"}, + {__LINE__, 0x0067f298, "67f298", "%-2.6x"}, + {__LINE__, 0xfffffff5, "FFFFFFF5", "% 2X"}, + {__LINE__, 0x00102ff9, "102FF9", "%-.0X"}, + {__LINE__, 0xffc22393, "0xffc22393", "% #6x"}, + {__LINE__, 0x00007db5, "32181", "%-2ld"}, + {__LINE__, 0x0000b0a3, "0xb0a3", "%#0x"}, + {__LINE__, 0x001ceebb, "1CEEBB", "%-3.4X"}, + {__LINE__, 0x00025101, "0x25101", "%#x"}, + {__LINE__, -0x0000001, "-1", "%0ld"}, + {__LINE__, 0xffffd846, "FFFFD846", "%+2.3X"}, + {__LINE__, 0x00001d79, " 7545", "% 0.1ld"}, + {__LINE__, -0x0000002, " -2", "%5d"}, + {__LINE__, 0xf93b9fdc, "f93b9fdc", "%5x"}, + {__LINE__, 0xffff0021, "FFFF0021", "%6X"}, + {__LINE__, 0x00007cf9, "7cf9", "%3.1x"}, + {__LINE__, -0x0000002, "-2", "%d"}, + {__LINE__, 0x00001d84, "1d84", "%0x"}, + {__LINE__, -0x033201e, "-3350558", "%-2.0d"}, + {__LINE__, 0xfff8a6fb, "FFF8A6FB", "%+.7X"}, + {__LINE__, 0x00006fff, " 28671", "% ld"}, + {__LINE__, -0x02a274a, "-2762570", "%d"}, + {__LINE__, -0x0006628, "-26152", "%00ld"}, + {__LINE__, 0x00000011, "11", "%-x"}, + {__LINE__, -0x0000ed9, "-3801", "%0.ld"}, + {__LINE__, 0xfc5b725d, "FC5B725D", "%X"}, + {__LINE__, 0x3530bd4e, "892386638", "%7.d"}, + {__LINE__, 0x03bb4ff7, "62607351", "%#4.7ld"}, + {__LINE__, 0x00009f86, "9f86", "%x"}, + {__LINE__, 0x0000e727, "59175", "%1d"}, + {__LINE__, 0xfffffdf2, "0XFFFFFDF2", "%#X"}, + {__LINE__, 0x00e60dbf, "0XE60DBF", "% #1.X"}, + {__LINE__, 0xffffffff, "FFFFFFFF", "%+X"}, + {__LINE__, 0x0a16f44e, "0XA16F44E", "%#.0X"}, + {__LINE__, 0x0001f97c, "1f97c", "% x"}, + {__LINE__, 0x0000000d, "13", "%#0ld"}, + {__LINE__, 0x0000002a, "42", "%0ld"}, + {__LINE__, 0x00000007, " +7", "%+5ld"}, + {__LINE__, 0xffffff7f, "FFFFFF7F", "%-X"}, + {__LINE__, 0x000006a6, "1702", "%ld"}, + {__LINE__, 0xfaff2fb1, "faff2fb1", "% x"}, + {__LINE__, 0xffff94ab, "ffff94ab", "%x"}, + {__LINE__, 0x011d611b, "0X11D611B", "%#2.3X"}, + {__LINE__, 0x00000000, " +000", "%+#5.3ld"}, + {__LINE__, -0x87fcc37, "-142593079", "%+d"}, + {__LINE__, -0x0417424, "-4289572", "%+d"}, + {__LINE__, 0x03fabc0c, "3fabc0c", "%x"}, + {__LINE__, 0xfffff880, "fffff880", "%-x"}, + {__LINE__, 0x000002d7, "2d7", "%-02.x"}, + {__LINE__, 0x00003e82, "16002", "%#d"}, + {__LINE__, -0x0003713, "-14099", "% 5d"}, + {__LINE__, -0x0000027, "-39", "%ld"}, + {__LINE__, 0x00013098, "0077976", "%01.7d"}, + {__LINE__, -0x000000c, "-12", "%ld"}, + {__LINE__, -0x00000c0, "-192", "% ld"}, + {__LINE__, 0xffbe9285, "FFBE9285", "%3.X"}, + {__LINE__, 0x00000046, "46", "%x"}, + {__LINE__, 0x00000000, " ", "%+4.x"}, + {__LINE__, 0x00011e72, "73330", "%2.3d"}, + {__LINE__, -0x5276dd7, "-86470103", "%d"}, + {__LINE__, 0x00000013, "19", "%-02.ld"}, + {__LINE__, 0x384118a7, "0X384118A7", "%-#X"}, + {__LINE__, 0x00000000, "0", "% #X"}, + {__LINE__, 0x00000009, "9", "%#ld"}, + {__LINE__, 0x00021145, "135493", "%-ld"}, + {__LINE__, 0xff188a0c, "FF188A0C", "%1.X"}, + {__LINE__, 0xffffffd5, "ffffffd5", "%0x"}, + {__LINE__, 0xfffffffe, "FFFFFFFE", "% 0X"}, + {__LINE__, 0xffff74a3, "ffff74a3", "%x"}, + {__LINE__, 0x01d5a2f8, "1d5a2f8", "%-0.x"}, + {__LINE__, 0xfffffef6, "fffffef6", "%+06.x"}, + {__LINE__, 0x00000001, "1", "%ld"}, + {__LINE__, 0x00000000, "+0", "%+ld"}, + {__LINE__, 0xfffffffc, "fffffffc", "%4.x"}, + {__LINE__, -0x0000344, "-0836", "% .4d"}, + {__LINE__, 0xfffffffd, "FFFFFFFD", "%0X"}, + {__LINE__, 0x000a3121, "667937", "%#4.4ld"}, + {__LINE__, 0x0001e211, "0X1E211", "%#X"}, + {__LINE__, 0x00000c8b, "00C8B", "%05X"}, + {__LINE__, 0xfffffffe, "fffffffe", "%+0x"}, + {__LINE__, 0x001a53ce, "1725390", "%d"}, + {__LINE__, 0x0000057f, "57f ", "%-7.x"}, + {__LINE__, -0x0073e4d, "-474701", "%#ld"}, + {__LINE__, -0x0000002, " -2", "% 3.d"}, + {__LINE__, 0x482dc404, "482DC404", "%X"}, + {__LINE__, 0x0000011c, "11c", "%-.1x"}, + {__LINE__, 0x00000c12, " 3090", "%5.3ld"}, + {__LINE__, 0xfffe1068, "FFFE1068", "%-.4X"}, + {__LINE__, -0x0055e88, "-351880", "%ld"}, + {__LINE__, 0x000c9cef, "+826607", "%+d"}, + {__LINE__, 0xffffffe3, "ffffffe3", "%0x"}, + {__LINE__, -0x0000ee9, "-3817", "%#ld"}, + {__LINE__, 0xff1f6daa, "FF1F6DAA", "%X"}, + {__LINE__, 0xfffffc4e, "FFFFFC4E", "%5.2X"}, + {__LINE__, -0x000040a, "-1034", "%d"}, + {__LINE__, -0x0000085, "-00133", "% 01.5d"}, + {__LINE__, -0x126c797c, "-309098876", "%5.ld"}, + {__LINE__, 0x00000039, " 57", "% d"}, + {__LINE__, 0xfffffff6, "0xfffffff6", "%#5.x"}, + {__LINE__, 0xfffffff4, "fffffff4", "%7.6x"}, + {__LINE__, 0x00000003, "3", "%ld"}, + {__LINE__, 0x0000f8ae, "f8ae", "%.0x"}, + {__LINE__, 0x003ca1cf, "3973583", "%#3.7d"}, + {__LINE__, 0x14687009, "0x14687009", "%+#3x"}, + {__LINE__, 0xfffff1f7, "0xfffff1f7", "%#4.5x"}, + {__LINE__, 0xfffff17a, "fffff17a", "%3.x"}, + {__LINE__, 0x0011ea18, "1174040", "%ld"}, + {__LINE__, -0x0000019, "-25", "%03.d"}, + {__LINE__, 0x00015d72, "0X15D72", "%-#X"}, + {__LINE__, 0xffde4a41, "ffde4a41", "%x"}, + {__LINE__, 0x00006f1f, "28447", "%d"}, + {__LINE__, 0xffffffbd, "0xffffffbd", "%#.1x"}, + {__LINE__, 0x000013b9, "13B9", "%0X"}, + {__LINE__, -0x00001b9, "-00441", "%1.5d"}, + {__LINE__, 0x00000001, "000001", "%-.6d"}, + {__LINE__, 0x7b602d8f, "+2069900687", "%+0ld"}, + {__LINE__, 0x0005e323, "+385827", "%+ld"}, + {__LINE__, 0x00002fce, "2FCE", "%+0X"}, + {__LINE__, 0x0000000e, "0014", "%.4d"}, + {__LINE__, 0xffffffd6, "0XFFFFFFD6", "%#4.X"}, + {__LINE__, 0x037bf361, "58454881", "%5.ld"}, + {__LINE__, 0xffffffff, "FFFFFFFF", "%-7.5X"}, + {__LINE__, -0x016d4dc, "-1496284", "%6ld"}, + {__LINE__, 0x0005be9a, "0x5be9a", "%-#.5x"}, + {__LINE__, 0xffffffff, "ffffffff", "%1x"}, + {__LINE__, 0x00000055, " 85", "% 7.d"}, + {__LINE__, 0xffffffff, "ffffffff", "%x"}, + {__LINE__, -0x0135392, "-1266578", "% ld"}, + {__LINE__, 0x00850f26, "8720166", "%d"}, + {__LINE__, 0xffffee39, "ffffee39", "%0x"}, + {__LINE__, 0x000000dd, "221", "%ld"}, + {__LINE__, 0x00000000, " ", "%6.d"}, + {__LINE__, 0x000000d8, "d8", "%x"}, + {__LINE__, 0x000007ec, "002028", "%4.6ld"}, + {__LINE__, 0x0dab4e67, "0XDAB4E67", "%#X"}, + {__LINE__, 0xfffd7c95, "FFFD7C95", "% 4X"}, + {__LINE__, 0x0009302d, "9302D", "%3.1X"}, + {__LINE__, 0x00000003, " 3", "% d"}, + {__LINE__, 0x0000082f, "82f", "%-x"}, + {__LINE__, 0x0652517f, "652517F", "%-.2X"}, + {__LINE__, -0x1fd8f4e3, "-534312163", "%d"}, + {__LINE__, 0x00000176, "176", "%-x"}, + {__LINE__, 0x00000001, "1", "%ld"}, + {__LINE__, 0x0000001a, "1A", "%X"}, + {__LINE__, -0x0005740, "-22336", "% 0ld"}, + {__LINE__, 0xffffffff, "ffffffff", "%6x"}, + {__LINE__, 0x1b273b80, "0x1b273b80", "%#x"}, + {__LINE__, 0x00000065, "65", "%X"}, + {__LINE__, 0x6a62138a, "1784812426", "%2ld"}, + {__LINE__, 0x000001a2, "1A2", "%X"}, + {__LINE__, -0x002aafd, "-174845", "%02.ld"}, + {__LINE__, 0x00000014, "20", "%d"}, + {__LINE__, -0x00000c7, " -199", "%7.0ld"}, + {__LINE__, 0xff545bfd, "ff545bfd", "%-x"}, + {__LINE__, -0x002beb9, "-179897", "%02.2ld"}, + {__LINE__, -0x00000df, "-223", "% 02.d"}, + {__LINE__, -0x000d569, "-54633", "%1.ld"}, + {__LINE__, 0x0000000e, "14", "%d"}, + {__LINE__, -0x0077407, "-488455", "% ld"}, + {__LINE__, 0x0001be09, "114185", "%ld"}, + {__LINE__, -0x0000514, "-01300", "%+05.5d"}, + {__LINE__, 0xf1fb397f, "f1fb397f", "%+x"}, + {__LINE__, 0xfdb6707c, "FDB6707C", "%X"}, + {__LINE__, 0x03cad111, "3cad111", "%5.x"}, + {__LINE__, -0x022e72f, "-2287407", "%d"}, + {__LINE__, -0xda35f48, "-228810568", "%d"}, + {__LINE__, -0x02d1fd4, "-2957268", "%1.3d"}, + {__LINE__, 0x0000005f, "+95", "%+2d"}, + {__LINE__, 0xfffbf8a1, "FFFBF8A1", "%4.2X"}, + {__LINE__, 0x0000071e, " 71e", "%6.x"}, + {__LINE__, 0x000cc8a5, "+837797", "%+03ld"}, + {__LINE__, 0x000eebe9, " EEBE9", "%6.X"}, + {__LINE__, -0x2896b204, "-680964612", "%d"}, + {__LINE__, -0x09553f8, "-9786360", "%d"}, + {__LINE__, 0x000015d3, "5587", "%0d"}, + {__LINE__, 0x0000056d, " 56d", "%+4.x"}, + {__LINE__, -0x00624ad, "-402605", "% ld"}, + {__LINE__, 0xfea64ba5, "0xfea64ba5", "%#1x"}, + {__LINE__, 0x004f35c6, "5191110", "%-ld"}, + {__LINE__, -0x1441fe4, "-21241828", "%d"}, + {__LINE__, 0xffffff95, "FFFFFF95", "%X"}, + {__LINE__, 0xfffecf81, "FFFECF81", "%-2.X"}, + {__LINE__, -0x00002bb, "-699", "%-d"}, + {__LINE__, -0x0000c29, "-3113", "% 02ld"}, + {__LINE__, 0x000026a3, " 9891", "% .4d"}, + {__LINE__, 0x00000003, "3", "%-x"}, + {__LINE__, 0x000007db, "+02011", "%+.5ld"}, + {__LINE__, 0xfff99558, "FFF99558", "%.1X"}, + {__LINE__, 0x0000fce6, "64742", "%4.0d"}, + {__LINE__, 0x000b7ea2, "753314", "%ld"}, + {__LINE__, 0x13e5df30, "0X13E5DF30", "%#2.X"}, + {__LINE__, 0x006761c4, "06761C4", "%6.7X"}, + {__LINE__, 0xffffff78, "FFFFFF78", "%0.X"}, + {__LINE__, 0xfffff1c0, "0xfffff1c0", "% #x"}, + {__LINE__, -0x034af1c, "-3452700", "% 06.1d"}, + {__LINE__, 0x000000de, "0000222", "%2.7ld"}, + {__LINE__, 0x000003d8, "0x3d8", "%#4.x"}, + {__LINE__, -0x001a1d1, "-106961", "%3.1d"}, + {__LINE__, -0x0000002, "-2", "% d"}, + {__LINE__, 0x00001de6, "+7654", "%+0ld"}, + {__LINE__, 0x00000001, "001", "%#.3d"}, + {__LINE__, -0x53dacf9f, "-1406848927", "%ld"}, + {__LINE__, 0xfffffffc, "fffffffc", "%3.3x"}, + {__LINE__, -0x00950e8, "-610536", "%3.6ld"}, + {__LINE__, 0xff14ade9, "FF14ADE9", "%6X"}, + {__LINE__, 0x012f5284, "0X12F5284", "% #5X"}, + {__LINE__, 0x00005a21, " 5a21", "%5x"}, + {__LINE__, 0x00000638, "1592", "%2.4ld"}, + {__LINE__, -0x063017b, "-6488443", "%ld"}, + {__LINE__, 0x00000000, "0", "% X"}, + {__LINE__, 0xfffe8ef2, "FFFE8EF2", "%+0X"}, + {__LINE__, -0x0001c96, "-7318", "%.3d"}, + {__LINE__, 0x0000ca7d, "51837", "%ld"}, + {__LINE__, 0x00000001, "1", "%+1x"}, + {__LINE__, 0xfffff7bc, "FFFFF7BC", "%X"}, + {__LINE__, -0x03d15e2, "-4003298", "%ld"}, + {__LINE__, 0xfffffffe, "fffffffe", "% x"}, + {__LINE__, 0x00066183, "+418179", "%+7.1ld"}, + {__LINE__, 0xffffef2e, "ffffef2e", "%-2.x"}, + {__LINE__, 0x00000000, " 000", "%04.3x"}, + {__LINE__, -0x000000f, "-15", "% d"}, + {__LINE__, -0x00001f5, "-501", "%d"}, + {__LINE__, 0x0c67f159, "c67f159", "%6.2x"}, + {__LINE__, -0x0000006, "-6", "%.1d"}, + {__LINE__, 0x00000005, "0X5", "%+#1X"}, + {__LINE__, -0x0000002, " -2", "%6.ld"}, + {__LINE__, 0xeb2183ec, "eb2183ec", "% x"}, + {__LINE__, -0x5e12a322, "-1578279714", "%d"}, + {__LINE__, 0x00000001, "0x1", "%#x"}, + {__LINE__, -0x0001ea4, "-7844", "%0d"}, + {__LINE__, -0x19955a3, "-26826147", "%d"}, + {__LINE__, 0x000002a6, "2A6", "%2.X"}, + {__LINE__, 0x00000002, "2", "%X"}, + {__LINE__, 0xfffffeec, "fffffeec", "%0.4x"}, + {__LINE__, 0xfffffffc, "fffffffc", "%0x"}, + {__LINE__, 0xffdfe740, "FFDFE740", "% X"}, + {__LINE__, -0x0b0b3e7, "-11580391", "%.1d"}, + {__LINE__, 0x8e01077c, "8E01077C", "%5.7X"}, + {__LINE__, 0x3b6b6d55, "996896085", "%1.1d"}, + {__LINE__, 0x000016af, "5807", "%ld"}, + {__LINE__, -0x0004900, "-18688", "%d"}, + {__LINE__, 0xfffd77bc, "FFFD77BC", "%X"}, + {__LINE__, 0x004cbd74, "5029236", "%0d"}, + {__LINE__, 0x00000003, " 00003", "%6.5d"}, + {__LINE__, 0x0004720f, "4720f", "% x"}, + {__LINE__, 0x0e44535d, "e44535d", "%4x"}, + {__LINE__, 0xfffffff9, "FFFFFFF9", "%3.3X"}, + {__LINE__, -0x0000005, "-5", "%-d"}, + {__LINE__, 0x000001a6, "00001A6", "%1.7X"}, + {__LINE__, 0x0000004a, "4A", "%-2.X"}, + {__LINE__, 0xfffff249, "FFFFF249", "%X"}, + {__LINE__, 0x00004345, "4345", "%x"}, + {__LINE__, 0x0197041d, "197041d", "%+0x"}, + {__LINE__, 0x0000019a, " 19a", "% 6.x"}, + {__LINE__, 0xfff98376, "FFF98376", "%X"}, + {__LINE__, 0xfc536c41, "FC536C41", "%X"}, + {__LINE__, -0x0008d91, "-36241", "% d"}, + {__LINE__, 0xf058d69d, "f058d69d", "%4.x"}, + {__LINE__, -0x00013ef, "-5103", "%d"}, + {__LINE__, -0x0000003, "-3", "%00ld"}, + {__LINE__, -0x09e80f0, "-10387696", "%+07ld"}, + {__LINE__, -0x0222c15, "-2239509", "%#0.4ld"}, + {__LINE__, 0x00000004, "4", "%0ld"}, + {__LINE__, -0x02c6b0d, "-2910989", "% 0ld"}, + {__LINE__, 0xfffffffe, "FFFFFFFE", "%-4X"}, + {__LINE__, 0xffffff3d, "FFFFFF3D", "%-.0X"}, + {__LINE__, -0x0000015, "-21", "%0d"}, + {__LINE__, 0x131dfc90, "+320732304", "%+d"}, + {__LINE__, 0xffffffff, "ffffffff", "%+x"}, + {__LINE__, 0x000035c8, "13768", "%0ld"}, + {__LINE__, 0x00000033, "0x0033", "%#.4x"}, + {__LINE__, 0x0ce7e8c1, "0xce7e8c1", "%#.7x"}, + {__LINE__, 0xfc18b5d2, "FC18B5D2", "%+.3X"}, + {__LINE__, 0x00000015, "21", "%d"}, + {__LINE__, 0x001a5e7c, "1a5e7c", "%05x"}, + {__LINE__, -0x000fbf0, "-64496", "%ld"}, + {__LINE__, -0x000a4f7, "-042231", "%+2.6d"}, + {__LINE__, -0x0000002, "-002", "%3.3ld"}, + {__LINE__, 0x00728878, "728878", "%0X"}, + {__LINE__, -0x0000002, "-2", "%#.1ld"}, + {__LINE__, -0x00002ef, "-751", "%-0ld"}, + {__LINE__, 0xfffffff7, "fffffff7", "%.3x"}, + {__LINE__, 0x00491867, "0491867", "%.7X"}, + {__LINE__, 0x00000d4d, "3405", "%-ld"}, + {__LINE__, 0x00234e86, "234E86", "%0X"}, + {__LINE__, -0x000001b, "-27", "%ld"}, + {__LINE__, 0x00275255, "2576981", "%.5ld"}, + {__LINE__, 0xfeacc214, "0XFEACC214", "%-#3.X"}, + {__LINE__, -0x0001ce5, "-7397", "%+#2.2ld"}, + {__LINE__, 0x089ddb6a, "144563050", "%d"}, + {__LINE__, 0x003d5a95, "3D5A95", "%1X"}, + {__LINE__, 0x002f0b6d, "3083117", "%d"}, + {__LINE__, 0x1e79e228, "511304232", "%ld"}, + {__LINE__, 0xfffffe6b, "FFFFFE6B", "%+0X"}, + {__LINE__, -0x5104ff3, "-84955123", "%.4ld"}, + {__LINE__, 0xfffff1de, "FFFFF1DE", "%X"}, + {__LINE__, 0x000000cf, "+207", "%+.1ld"}, + {__LINE__, -0x16ad0164, "-380436836", "%+5.d"}, + {__LINE__, 0x001fefa6, "2092966", "%ld"}, + {__LINE__, 0x00000000, "00", "%-.2d"}, + {__LINE__, 0x00195f45, "195f45", "%+0x"}, + {__LINE__, 0x00000001, " 1", "%3.ld"}, + {__LINE__, -0x00001c9, "-457", "% ld"}, + {__LINE__, 0x0002479e, "149406", "%#ld"}, + {__LINE__, 0x001ab18b, "1749387", "%04d"}, + {__LINE__, 0x00000045, "69", "%ld"}, + {__LINE__, 0xfbb13f7d, "fbb13f7d", "%.2x"}, + {__LINE__, 0x03ddc208, "3ddc208", "%x"}, + {__LINE__, 0x00000007, "000007", "%#.6d"}, + {__LINE__, 0x00000000, "0", "%01X"}, + {__LINE__, -0x0023110, "-143632", "%+0.3d"}, + {__LINE__, 0x00000006, "06", "%#.2d"}, + {__LINE__, 0xffff9ec9, "ffff9ec9", "%7x"}, + {__LINE__, -0x08afb12, "-9108242", "% #0.ld"}, + {__LINE__, 0x00000004, "4", "%X"}, + {__LINE__, 0x00059684, "59684", "%x"}, + {__LINE__, 0xfff8d8f5, "FFF8D8F5", "%X"}, + {__LINE__, 0x00b7027d, "+11993725", "%+0.7ld"}, + {__LINE__, 0x0000d814, "55316", "%0ld"}, + {__LINE__, 0x03c95a08, "3c95a08", "%3x"}, + {__LINE__, -0x0b65f9a, "-11952026", "%d"}, + {__LINE__, 0xfd956021, "fd956021", "%0x"}, + {__LINE__, 0x000000ed, "ed", "%0x"}, + {__LINE__, -0x006a80c, "-436236", "%.6ld"}, + {__LINE__, 0xfedb109d, "fedb109d", "%x"}, + {__LINE__, 0x00000001, "1", "%X"}, + {__LINE__, 0x00b3eb71, " 11791217", "% d"}, + {__LINE__, 0x00000016, "16", "%0X"}, + {__LINE__, 0x000001db, " 475", "% ld"}, + {__LINE__, 0x00465eaf, "4611759", "%0d"}, + {__LINE__, 0x0001b423, "1B423", "%0X"}, + {__LINE__, 0x05df95ea, "5df95ea", "%+.5x"}, + {__LINE__, 0x0000000e, " 14", "%7ld"}, + {__LINE__, 0xffffb89e, "ffffb89e", "%+x"}, + {__LINE__, 0x01259918, " 19241240", "% d"}, + {__LINE__, -0x0000f8d, "-003981", "%+#.6d"}, + {__LINE__, 0x00054ae0, "54AE0", "%X"}, + {__LINE__, -0x4589ed4, "-72916692", "% ld"}, + {__LINE__, 0x01017516, "1017516", "%6X"}, + {__LINE__, 0xfffb9f15, "FFFB9F15", "%.2X"}, + {__LINE__, 0x005f8394, "5F8394", "%.2X"}, + {__LINE__, 0xffffffff, "ffffffff", "%x"}, + {__LINE__, -0x0000001, " -1", "%7.1ld"}, + {__LINE__, 0x004367af, "4417455", "%4.ld"}, + {__LINE__, 0xffffff86, "ffffff86", "%4.5x"}, + {__LINE__, -0x0000d17, "-3351", "%2.0ld"}, + {__LINE__, 0xffffff31, "ffffff31", "%.6x"}, + {__LINE__, -0x0000001, "-1", "%ld"}, + {__LINE__, -0x3d785fab, "-1031298987", "%d"}, + {__LINE__, -0x0000002, "-2", "%-0ld"}, + {__LINE__, 0x0000019c, "412", "%d"}, + {__LINE__, -0x0006f54, "-28500", "%d"}, + {__LINE__, 0xfffe3524, "FFFE3524", "% 6.2X"}, + {__LINE__, -0x128d3c00, "-311245824", "%2d"}, + {__LINE__, -0x3be71293, "-1004999315", "%d"}, + {__LINE__, 0x0000659d, "26013", "%d"}, + {__LINE__, 0x2d947538, "+764704056", "%+5d"}, + {__LINE__, 0xffa2a420, "FFA2A420", "%0X"}, + {__LINE__, 0x00000001, "1", "%d"}, + {__LINE__, 0x04477c14, "4477c14", "%.6x"}, + {__LINE__, -0x06e145b, "-7214171", "%d"}, + {__LINE__, 0x00009c01, "39937", "%-.1d"}, + {__LINE__, 0xffde174b, "ffde174b", "% 0x"}, + {__LINE__, 0x0001fbae, "1FBAE", "%01.X"}, + {__LINE__, -0x06b8406, "-7046150", "%d"}, + {__LINE__, 0x000005b8, "005b8", "%05x"}, + {__LINE__, -0x02d780b, "-2979851", "%1d"}, + {__LINE__, 0x00209e26, "2137638", "%2d"}, + {__LINE__, 0x0000041a, "41A", "%0X"}, + {__LINE__, 0x2a77f42c, "2A77F42C", "%02X"}, + {__LINE__, 0x13b6ee14, "+330755604", "%+0d"}, + {__LINE__, -0x0000002, "-2 ", "%-6.d"}, + {__LINE__, -0x0001eee, "-7918", "% #2.ld"}, + {__LINE__, 0xffffffff, "FFFFFFFF", "% .5X"}, + {__LINE__, 0x20d11927, "20d11927", "% 0.x"}, + {__LINE__, -0x0018690, "-99984", "% ld"}, + {__LINE__, 0x000002a0, "2A0", "%-0X"}, + {__LINE__, -0x0000511, "-1297", "%+d"}, + {__LINE__, 0x0e782f31, "242757425", "%-0.ld"}, + {__LINE__, 0x2ce06da0, "752905632", "%#0ld"}, + {__LINE__, 0x00000062, "62 ", "%-07x"}, + {__LINE__, -0x015d9d8, "-1432024", "% 7d"}, + {__LINE__, 0xc9125ea8, "c9125ea8", "%x"}, + {__LINE__, 0x00000006, "6", "%.0ld"}, + {__LINE__, 0x0000019c, "19c", "%x"}, + {__LINE__, 0x00000000, " ", "%6.d"}, + {__LINE__, 0x00043e89, "278153", "%0ld"}, + {__LINE__, 0x3e422abd, "1044523709", "%ld"}, + {__LINE__, 0x0220a75d, "35694429", "%#7.6d"}, + {__LINE__, 0x0000c21c, "C21C", "% X"}, + {__LINE__, 0x000074ab, "29867", "%d"}, + {__LINE__, 0x056b22aa, "56B22AA", "%+0.X"}, + {__LINE__, 0xfffffff9, "FFFFFFF9", "%X"}, + {__LINE__, 0x00000000, "0", "%X"}, + {__LINE__, 0xf094a4f4, "f094a4f4", "%+4.x"}, + {__LINE__, -0x1dad0244, "-497877572", "%d"}, + {__LINE__, 0xffffffff, "FFFFFFFF", "%.1X"}, + {__LINE__, 0xfffffe2d, "fffffe2d", "%7.x"}, + {__LINE__, 0x0000042b, "0x42b", "%#x"}, + {__LINE__, -0x0000001, "-1", "% d"}, + {__LINE__, 0x00e77ef5, " 15171317", "% 7.ld"}, + {__LINE__, 0x00006210, " 25104", "% 06d"}, + {__LINE__, 0x0011187a, "1120378", "%-ld"}, + {__LINE__, -0x000000b, "-11", "% #ld"}, + {__LINE__, 0x14cfaff0, "14cfaff0", "%-2.3x"}, + {__LINE__, 0xffff74ea, "FFFF74EA", "%3.X"}, + {__LINE__, 0x000bfb9d, "bfb9d", "%x"}, + {__LINE__, 0xfffffffe, "FFFFFFFE", "%X"}, + {__LINE__, 0x00014500, "0X14500", "%#4.X"}, + {__LINE__, -0x0000001, "-1", "%#1d"}, + {__LINE__, -0x0000024, "-36", "%-0d"}, + {__LINE__, -0x6528828, "-106072104", "%d"}, + {__LINE__, 0x00000075, " 117", "% #d"}, + {__LINE__, 0xff027d67, "ff027d67", "%0x"}, + {__LINE__, 0x0012b8b3, "12b8b3", "%0.1x"}, + {__LINE__, 0x1070147b, "275780731", "%.6ld"}, + {__LINE__, 0xffffe88e, "FFFFE88E", "%1.3X"}, + {__LINE__, 0xfffffc0d, "fffffc0d", "%00.6x"}, + {__LINE__, 0xffd889f5, "ffd889f5", "%x"}, + {__LINE__, 0x00000470, "1136", "%0ld"}, + {__LINE__, 0x000297f8, "169976", "%ld"}, + {__LINE__, 0xfffffffe, "fffffffe", "%+1x"}, + {__LINE__, 0x0000064a, "64a", "%x"}, + {__LINE__, -0x3d71e43b, "-1030874171", "%1.d"}, + {__LINE__, -0x0000004, "-4 ", "%-3.d"}, + {__LINE__, 0xfffff132, "FFFFF132", "%0.0X"}, + {__LINE__, 0x37b6356f, "37b6356f", "%-x"}, + {__LINE__, 0xffffff7a, "FFFFFF7A", "%.0X"}, + {__LINE__, 0x00023553, "23553", "%x"}, + {__LINE__, 0x39a4c29f, "39a4c29f", "%+5.x"}, + {__LINE__, 0xffffffcc, "ffffffcc", "%x"}, + {__LINE__, 0x0003a83b, "239675", "%#6ld"}, + {__LINE__, 0x00000002, "2", "%0x"}, + {__LINE__, -0x09b4e8c, "-10178188", "%+03.ld"}, + {__LINE__, 0x00000002, "0000002", "%-#.7ld"}, + {__LINE__, 0x00000b5e, "2910", "%-04ld"}, + {__LINE__, -0x0000254, "-596", "%+0d"}, + {__LINE__, 0x00000001, "1", "%+1.x"}, + {__LINE__, 0xf8290d3e, "0XF8290D3E", "% #X"}, + {__LINE__, 0x00000035, "035", "%3.3X"}, + {__LINE__, 0x00131d7d, "131D7D ", "%-7.6X"}, + {__LINE__, 0xffdbb36a, "0xffdbb36a", "%#.6x"}, + {__LINE__, 0xc7275816, "c7275816", "%04.x"}, + {__LINE__, 0x00bae994, "12249492", "%0ld"}, + {__LINE__, 0x00000002, "+2", "%+0.0ld"}, + {__LINE__, 0xffffffff, "ffffffff", "%0x"}, + {__LINE__, 0xffffffe0, "ffffffe0", "%x"}, + {__LINE__, 0x00000036, "36", "%.0X"}, + {__LINE__, 0xfffffffd, "FFFFFFFD", "%1X"}, + {__LINE__, 0xffffffc8, "ffffffc8", "%+x"}, + {__LINE__, 0xe71c3689, "e71c3689", "%x"}, + {__LINE__, 0x00000007, "7 ", "%-3.ld"}, + {__LINE__, 0xffffffff, "ffffffff", "%x"}, + {__LINE__, 0x00030400, "030400", "%-4.6x"}, + {__LINE__, 0xbd8c6fa7, "BD8C6FA7", "%-6X"}, + {__LINE__, 0x00000233, "0000563", "%.7ld"}, + {__LINE__, 0xfef92e35, "fef92e35", "%x"}, + {__LINE__, 0xffff2172, "ffff2172", "%3x"}, + {__LINE__, 0x00001233, "1233", "% X"}, + {__LINE__, -0x000d2e1, "-53985", "%-0d"}, + {__LINE__, -0x3ba8cb5b, "-1000917851", "%0d"}, + {__LINE__, -0x4fefb9a, "-83819418", "%5.ld"}, + {__LINE__, 0xffffe9eb, "FFFFE9EB", "%X"}, + {__LINE__, 0x1e472dc3, "507981251", "%ld"}, + {__LINE__, -0x0077046, "-487494", "%0d"}, + {__LINE__, 0x0002c4c9, "+181449", "%+7.d"}, + {__LINE__, 0xfffffe63, "fffffe63", "%x"}, + {__LINE__, 0xfff5a6db, "FFF5A6DB", "%X"}, + {__LINE__, 0x00174442, "174442", "%-5.0X"}, + {__LINE__, 0x017891d9, "17891D9", "%+5.X"}, + {__LINE__, 0x0261966b, "261966B", "%-X"}, + {__LINE__, -0x3e58614d, "-1045979469", "%ld"}, + {__LINE__, 0x002c4c41, "+2903105", "%+01ld"}, + {__LINE__, 0x0000000c, "012", "%#.3d"}, + {__LINE__, 0x0380f73a, "58783546", "%ld"}, + {__LINE__, 0x000002c7, "0000711", "%2.7ld"}, + {__LINE__, 0x00000002, " 002", "% 04ld"}, + {__LINE__, 0x00687ca0, "687CA0", "%X"}, + {__LINE__, 0x0000058a, "1418", "%0ld"}, + {__LINE__, -0x0000642, "-1602", "% ld"}, + {__LINE__, 0x0001f4f1, "1F4F1", "%X"}, + {__LINE__, 0x0026d6fc, "+2545404", "%+4.ld"}, + {__LINE__, 0x05dd423c, "+98386492", "%+#ld"}, + {__LINE__, 0x0000782c, "0782C", "%3.5X"}, + {__LINE__, 0xf67d91f8, "f67d91f8", "%-x"}, + {__LINE__, 0xffffcf2d, "ffffcf2d", "%+0x"}, + {__LINE__, -0x00af8a6, "-719014", "%0ld"}, + {__LINE__, -0xe606ef9, "-241200889", "%ld"}, + {__LINE__, 0xfe9d87f7, "fe9d87f7", "%+x"}, + {__LINE__, 0x00000d44, "d44", "% 1.x"}, + {__LINE__, 0x008716f5, "8716f5", "%2x"}, + {__LINE__, 0x000027d4, "27D4", "% X"}, + {__LINE__, 0xfdfd92ea, "FDFD92EA", "%-.4X"}, + {__LINE__, 0xfffe764f, "FFFE764F", "%X"}, + {__LINE__, 0xff699032, "ff699032", "%3.x"}, + {__LINE__, 0xffffffff, "FFFFFFFF", "%-3X"}, + {__LINE__, -0x368ba995, "-915122581", "%+#.6ld"}, + {__LINE__, 0xffffffff, "ffffffff", "%0x"}, + {__LINE__, 0x0000035e, " 862", "% 1d"}, + {__LINE__, 0xfe703e67, "fe703e67", "%07.0x"}, + {__LINE__, 0xfffffffe, "fffffffe", "%4.x"}, + {__LINE__, 0x000e20cf, "e20cf", "%0x"}, + {__LINE__, 0x000063b5, "0X63B5", "%-#X"}, + {__LINE__, 0xfffffffa, "fffffffa", "%+2.x"}, + {__LINE__, 0xffffffff, "FFFFFFFF", "%2.X"}, + {__LINE__, 0xfdfd69da, "FDFD69DA", "%.0X"}, + {__LINE__, 0x00002f61, "0x2f61", "%#3.x"}, + {__LINE__, 0x00000009, "9", "%x"}, + {__LINE__, 0xffffff86, "ffffff86", "%6x"}, + {__LINE__, 0xffffffe4, "ffffffe4", "%0x"}, + {__LINE__, 0x0062e73b, "+6481723", "%+0ld"}, + {__LINE__, -0x2b059130, "-721785136", "%+d"}, + {__LINE__, -0x0000073, "-115", "%d"}, + {__LINE__, 0xf596efcf, "f596efcf", "%x"}, + {__LINE__, 0x0002f1cb, "2F1CB", "%0X"}, + {__LINE__, -0x0000635, "-01589", "%.5ld"}, + {__LINE__, 0xfffa011a, "FFFA011A", "%0X"}, + {__LINE__, 0x00000047, " 47", "%4X"}, + {__LINE__, 0xfffffbc0, "FFFFFBC0", "%5.2X"}, + {__LINE__, 0x00000015, "15", "% X"}, + {__LINE__, 0x002a87a6, "2a87a6", "%.1x"}, + {__LINE__, -0x000069c, "-1692", "%+ld"}, + {__LINE__, 0xfffffffd, "fffffffd", "%+x"}, + {__LINE__, 0xfeda51f5, "FEDA51F5", "%0X"}, + {__LINE__, 0x001781a4, "1781a4", "%-0x"}, + {__LINE__, 0xe77358d4, "e77358d4", "%+0x"}, + {__LINE__, 0x00000084, " 84", "%3.x"}, + {__LINE__, 0xffff0cb2, "FFFF0CB2", "%+5.X"}, + {__LINE__, 0x0009fa17, "653847", "%0.0ld"}, + {__LINE__, -0x0000c92, "-3218", "%d"}, + {__LINE__, 0x0004ebbb, "4ebbb", "%x"}, + {__LINE__, 0x2e72568c, "+779245196", "%+#ld"}, + {__LINE__, 0xffae86a7, "ffae86a7", "%.7x"}, + {__LINE__, 0xffdf3f04, "ffdf3f04", "%x"}, + {__LINE__, 0x000000c7, "199", "%2.d"}, + {__LINE__, -0x0004a55, "-19029", "%ld"}, + {__LINE__, 0x00564ef9, "5656313", "%.6ld"}, + {__LINE__, 0xffffc205, "ffffc205", "%+.0x"}, + {__LINE__, -0x135085d0, "-324044240", "%#.5d"}, + {__LINE__, 0xfffffffe, "fffffffe", "%-7x"}, + {__LINE__, -0x0000003, "-3", "%.1ld"}, + {__LINE__, 0xffda9e0b, "ffda9e0b", "%+0x"}, + {__LINE__, 0x00000001, "1", "%d"}, + {__LINE__, 0xffffffda, "ffffffda", "%.6x"}, + {__LINE__, 0x5efdb3d1, "+1593684945", "%+0d"}, + {__LINE__, -0x00000ca, "-202", "% 4.d"}, + {__LINE__, -0x0014433, "-82995", "%.3d"}, + {__LINE__, -0x0000002, "-000002", "% .6ld"}, + {__LINE__, 0x24aac879, "615172217", "%.7d"}, + {__LINE__, -0x1db3c1d, "-31144989", "%+#4ld"}, + {__LINE__, 0x000945ad, "0x945ad", "%#1x"}, + {__LINE__, 0x0000000a, "10", "%#.1ld"}, + {__LINE__, -0x002a2e5, "-172773", "%d"}, + {__LINE__, 0xfffffff3, "FFFFFFF3", "%5X"}, + {__LINE__, 0x0000000e, "e", "%+x"}, + {__LINE__, 0x335333dc, "861090780", "%6.d"}, + {__LINE__, 0xfffa16f4, "FFFA16F4", "%6X"}, + {__LINE__, 0xffffc727, "ffffc727", "%+2.x"}, + {__LINE__, 0x00000273, "273", "%x"}, + {__LINE__, -0x000000f, "-15", "%-0d"}, + {__LINE__, 0x00065fbd, "417725", "%5.1d"}, + {__LINE__, 0x00000ed5, "3797", "%d"}, + {__LINE__, 0x30a40024, "30A40024", "%3.7X"}, + {__LINE__, 0x00000054, "84", "%ld"}, + {__LINE__, 0x00000515, "01301", "%.5ld"}, + {__LINE__, 0x00000897, "+02199", "%+.5d"}, + {__LINE__, -0x0001bcc, "-7116", "% ld"}, + {__LINE__, 0xfffffffe, "FFFFFFFE", "%7X"}, + {__LINE__, 0x00000013, "0X13", "%#X"}, + {__LINE__, 0xffffffff, "0xffffffff", "% #x"}, + {__LINE__, 0x00000006, "6", "%ld"}, + {__LINE__, -0x00000c3, "-195", "%1.ld"}, + {__LINE__, -0x005291e, "-338206", "%+d"}, + {__LINE__, 0xffb437a7, "FFB437A7", "%-0X"}, + {__LINE__, 0xff8335cb, "ff8335cb", "%x"}, + {__LINE__, 0x0000006a, "6A", "%2X"}, + {__LINE__, -0x004f629, "-325161", "% .4d"}, + {__LINE__, 0x003698ef, "3578095", "%0ld"}, + {__LINE__, 0x6b5cdf3a, "6b5cdf3a", "%-x"}, + {__LINE__, 0xe9bc5c21, "e9bc5c21", "%+x"}, + {__LINE__, -0x0000001, " -1", "%+6.ld"}, + {__LINE__, 0xfffeffc8, "FFFEFFC8", "%6.X"}, + {__LINE__, 0xff070a73, "ff070a73", "%+.7x"}, + {__LINE__, 0x0023f8ae, "2357422", "%07.4ld"}, + {__LINE__, 0x00000000, "0", "%X"}, + {__LINE__, 0x00000016, "16", "%0X"}, + {__LINE__, -0x000005a, " -90", "%4d"}, + {__LINE__, 0x00000116, "116", "% .3x"}, + {__LINE__, 0xfffed024, "fffed024", "%-x"}, + {__LINE__, 0xfb907950, "fb907950", "%.0x"}, + {__LINE__, 0x0101a1e5, "101a1e5", "%x"}, + {__LINE__, -0x09e7684, "-10385028", "%-#ld"}, + {__LINE__, 0xffffffff, "ffffffff", "%1x"}, + {__LINE__, 0xfffffff6, "fffffff6", "%x"}, + {__LINE__, 0x00000078, "78", "%x"}, + {__LINE__, 0xe6bca9c9, "0XE6BCA9C9", "%#.5X"}, + {__LINE__, -0x0000010, "-16", "%d"}, + {__LINE__, -0x1348f685, "-323548805", "%d"}, + {__LINE__, 0x4dd85797, "1306023831", "%ld"}, + {__LINE__, -0x0000080, "-128", "%.2d"}, + {__LINE__, -0xaed13a7, "-183309223", "%+ld"}, + {__LINE__, -0x000002f, "-47", "% d"}, + {__LINE__, -0x679911f, "-108630303", "%ld"}, + {__LINE__, 0xfffff221, "FFFFF221", "% .7X"}, + {__LINE__, 0x0007476c, "7476c", "%x"}, + {__LINE__, 0xffffe02a, "0xffffe02a", "%#7x"}, + {__LINE__, 0x00000ebb, "0XEBB", "%#X"}, + {__LINE__, 0xffffffff, "0XFFFFFFFF", "%-#X"}, + {__LINE__, 0x00281896, "281896", "%+1.x"}, + {__LINE__, 0x0000085d, " 0X85D", "%#6.3X"}, + {__LINE__, 0x000112bf, "112BF", "%X"}, + {__LINE__, 0xf5518fbf, "F5518FBF", "% X"}, + {__LINE__, -0x00c945b, "-824411", "%ld"}, + {__LINE__, 0x00001b43, "0x1b43", "%-#x"}, + {__LINE__, -0x5872a246, "-1483907654", "%#7.7ld"}, + {__LINE__, 0x00001f96, "8086", "%#d"}, + {__LINE__, 0xfffffff9, "FFFFFFF9", "%X"}, + {__LINE__, -0x006e244, "-451140", "% .3d"}, + {__LINE__, -0x0382188, "-3678600", "%0.2ld"}, + {__LINE__, 0x00000006, "6", "%-x"}, + {__LINE__, 0x00000036, "54 ", "%-5.d"}, + {__LINE__, -0x0000439, " -1081", "%#6.3ld"}, + {__LINE__, 0xfff911c6, "FFF911C6", "%X"}, + {__LINE__, -0x03454dc, "-3429596", "%d"}, + {__LINE__, -0x0363e8d, "-3554957", "%-.2ld"}, + {__LINE__, 0x00000000, "000", "%.3X"}, + {__LINE__, -0x59bb030f, "-1505428239", "%0ld"}, + {__LINE__, 0x073c94d8, "121410776", "%-d"}, + {__LINE__, -0x001ef94, "-126868", "%5.1ld"}, + {__LINE__, 0xfff65fc5, "FFF65FC5", "%0X"}, + {__LINE__, 0xfffffff4, "fffffff4", "%-x"}, + {__LINE__, 0x00001d83, "07555", "%5.5d"}, + {__LINE__, 0x0012b40a, "1225738", "%ld"}, + {__LINE__, -0x0000006, "-6", "%0ld"}, + {__LINE__, 0xfffffffc, "fffffffc", "%06.0x"}, + {__LINE__, -0x0000002, "-00002", "%#.5ld"}, + {__LINE__, 0xf9932c1d, "f9932c1d", "%-x"}, + {__LINE__, -0x46a31d9, "-74068441", "%.3ld"}, + {__LINE__, 0x000987e9, "987E9", "%1X"}, + {__LINE__, 0x0000000f, "15", "%-ld"}, + {__LINE__, -0x0001c4d, "-7245", "%ld"}, + {__LINE__, -0x007deee, "-515822", "%2.6d"}, + {__LINE__, 0xffffffa2, "FFFFFFA2", "%.6X"}, + {__LINE__, 0x00000001, "1", "%-ld"}, + {__LINE__, 0xfc106bde, "fc106bde", "%.4x"}, + {__LINE__, 0x0002f1f8, "0x2f1f8", "%#7.x"}, + {__LINE__, -0x06a290b, "-6957323", "%-ld"}, + {__LINE__, -0x0000037, " -55", "%4ld"}, + {__LINE__, 0x0000152e, "5422", "%2.d"}, + {__LINE__, 0xfffffcb2, "0XFFFFFCB2", "%#3.X"}, + {__LINE__, 0x1b7ca086, "1b7ca086", "%+x"}, + {__LINE__, 0x00000001, "1", "%ld"}, + {__LINE__, 0x006775fc, "6775fc", "%3.2x"}, + {__LINE__, 0x0000000e, "0XE", "%#3.X"}, + {__LINE__, 0xffffffff, "0xffffffff", "%+#4.x"}, + {__LINE__, 0x00001246, "1246", "%X"}, + {__LINE__, 0xffffaed6, "ffffaed6", "%2x"}, + {__LINE__, -0x3a2dec78, "-976088184", "% 0ld"}, + {__LINE__, 0x0001423b, "1423b", "%01x"}, + {__LINE__, 0x00000007, " 0X7", "%#4.X"}, + {__LINE__, 0x01a7ff5a, "27787098", "%.4ld"}, + {__LINE__, -0x0020d05, "-134405", "%-d"}, + {__LINE__, 0xffffff9a, "ffffff9a", "%-.1x"}, + {__LINE__, 0xffff3557, "ffff3557", "%x"}, + {__LINE__, 0x08828e35, "8828e35", "%+.1x"}, + {__LINE__, 0x000006b2, "001714", "%04.6ld"}, + {__LINE__, 0x00000013, "19", "%.0ld"}, + {__LINE__, -0x00341a5, "-213413", "%#d"}, + {__LINE__, -0x0000043, "-67", "%d"}, + {__LINE__, -0x074dce3, "-7658723", "%.1d"}, + {__LINE__, -0x16de2df3, "-383659507", "% ld"}, + {__LINE__, 0x00000000, "0", "%x"}, + {__LINE__, 0x00000ce7, "ce7", "% 2.1x"}, + {__LINE__, 0xffecd377, "ffecd377", "% 0x"}, + {__LINE__, 0xa4e8465c, "a4e8465c", "% x"}, + {__LINE__, 0x000005e8, "1512", "%d"}, + {__LINE__, 0x00000513, "1299", "%d"}, + {__LINE__, 0xffffffb8, "FFFFFFB8", "%X"}, + {__LINE__, 0x00000003, "00003", "%3.5x"}, + {__LINE__, -0x0000003, "-3 ", "%-3.ld"}, + {__LINE__, 0xad53f01d, "ad53f01d", "%0x"}, + {__LINE__, 0x0f1c1dae, "253500846", "%-#.0d"}, + {__LINE__, 0xff1753c0, "0xff1753c0", "%#3.x"}, + {__LINE__, -0x00389c5, "-231877", "%d"}, + {__LINE__, 0x0000016e, "00016E", "%.6X"}, + {__LINE__, -0x54d3310f, "-1423126799", "%-d"}, + {__LINE__, 0x00000005, "0X5", "%#.1X"}, + {__LINE__, 0xfffffffd, "0XFFFFFFFD", "%#5.3X"}, + {__LINE__, 0xfffffe0e, "fffffe0e", "%-x"}, + {__LINE__, 0xa3c02157, "a3c02157", "%.5x"}, + {__LINE__, 0x00005765, "22373", "%d"}, + {__LINE__, -0x12668cd, "-19294413", "%+ld"}, + {__LINE__, -0x66544da, "-107300058", "%2d"}, + {__LINE__, 0x8646c605, "0X8646C605", "% #X"}, + {__LINE__, 0x000001f5, "1F5", "%X"}, + {__LINE__, 0x01b33ae4, "28523236", "%5ld"}, + {__LINE__, 0x000007ce, "7ce", "%3.x"}, + {__LINE__, 0x00000355, "355", "%X"}, + {__LINE__, 0x000001ce, "1CE", "% X"}, + {__LINE__, 0xfffffccd, "fffffccd", "%7.0x"}, + {__LINE__, -0x0000001, "-1", "%0ld"}, + {__LINE__, 0x000640b6, "640b6", "%5.x"}, + {__LINE__, 0x0038c4ec, "3720428", "%5.4d"}, + {__LINE__, -0x0f10b5e, "-15797086", "%2ld"}, + {__LINE__, 0x256c815f, "256c815f", "%4.x"}, + {__LINE__, 0x00000682, " 1666", "%6ld"}, + {__LINE__, -0x00000ab, "-171", "%2ld"}, + {__LINE__, 0x00000003, "3", "%0d"}, + {__LINE__, 0x063f5075, "63F5075", "%X"}, + {__LINE__, 0xff83b5d0, "FF83B5D0", "%7.X"}, + {__LINE__, 0xffffffec, "ffffffec", "%x"}, + {__LINE__, 0xffb551c4, "0XFFB551C4", "% #4.X"}, + {__LINE__, -0x071f057, "-7467095", "%3.7d"}, + {__LINE__, 0x00634879, "6506617", "%#ld"}, + {__LINE__, 0x000001d7, "471", "%d"}, + {__LINE__, 0x00a7da92, "A7DA92", "% .4X"}, + {__LINE__, 0x00000003, "3 ", "%-2.ld"}, + {__LINE__, -0x0000004, "-0004", "%.4d"}, + {__LINE__, -0x01dea32, "-1960498", "% #7.d"}, + {__LINE__, 0x53c4159f, "53C4159F", "%1.7X"}, + {__LINE__, -0x1ad7904, "-28145924", "%#d"}, + {__LINE__, -0x0000a85, "-2693", "%ld"}, + {__LINE__, -0x0000c7d, "-3197", "%d"}, + {__LINE__, 0xfffffffc, "FFFFFFFC", "%+0X"}, + {__LINE__, 0x00000004, "00004", "%1.5d"}, + {__LINE__, 0x0000b761, "46945", "%5ld"}, + {__LINE__, -0x0ee3b2c, "-15612716", "%.6d"}, + {__LINE__, 0x0677a73d, "677a73d", "% x"}, + {__LINE__, -0x5f96020, "-100229152", "% d"}, + {__LINE__, 0x00000000, " 0", "%#7X"}, + {__LINE__, -0x5d1cb5b, "-97635163", "% ld"}, + {__LINE__, -0x00a8d8b, "-691595", "%-0ld"}, + {__LINE__, 0xffffffa2, "FFFFFFA2", "%X"}, + {__LINE__, 0xffffffc9, "FFFFFFC9", "%X"}, + {__LINE__, 0x0b180d35, "B180D35", "%X"}, + {__LINE__, 0xfc0b94ce, "fc0b94ce", "%.1x"}, + {__LINE__, 0x0012cd7b, "12CD7B", "% X"}, + {__LINE__, -0x02f1da8, "-3087784", "%ld"}, + {__LINE__, -0x000a6f9, "-42745", "%-ld"}, + {__LINE__, -0x000006d, "-109 ", "%-6d"}, + {__LINE__, 0x00000001, "+1", "%+0d"}, + {__LINE__, 0x00000001, "1", "%1d"}, + {__LINE__, 0xfffffff8, "fffffff8", "%5.x"}, + {__LINE__, -0x00fc4d7, "-1033431", "%+0.5ld"}, + {__LINE__, 0xffff41b4, "0xffff41b4", "%#x"}, + {__LINE__, -0x0000d37, "-3383", "%ld"}, + {__LINE__, 0xffc4e405, "ffc4e405", "%7x"}, + {__LINE__, 0xffffffb0, "FFFFFFB0", "%04X"}, + {__LINE__, -0x0054477, "-345207", "%01.ld"}, + {__LINE__, 0x00512778, "0x512778", "%#3.0x"}, + {__LINE__, 0x00000007, " 7", "%7.d"}, + {__LINE__, 0x00000008, " 00008", "% .5ld"}, + {__LINE__, 0x000053fd, "21501", "%.4ld"}, + {__LINE__, 0x0000370c, "370c", "%2x"}, + {__LINE__, -0x44670a7, "-71725223", "%3d"}, + {__LINE__, 0x00000064, " 64", "%+5x"}, + {__LINE__, 0xfffffffc, "FFFFFFFC", "%X"}, + {__LINE__, 0xf7bbf094, "f7bbf094", "%3x"}, + {__LINE__, 0xfffeb268, "FFFEB268", "%X"}, + {__LINE__, 0x00001ef0, "1ef0", "%4.x"}, + {__LINE__, 0x05ad9aa4, " 95263396", "% 0.ld"}, + {__LINE__, 0xf294dca7, "F294DCA7", "% 4.X"}, + {__LINE__, -0x0000003, "-000003", "%.6d"}, + {__LINE__, 0xfff57471, "fff57471", "% x"}, + {__LINE__, 0x0a848cfd, "176459005", "%d"}, + {__LINE__, -0x000002e, "-46", "%.0d"}, + {__LINE__, 0x00000051, " +81", "%+5d"}, + {__LINE__, -0x000072b, "-0001835", "%06.7d"}, + {__LINE__, -0x0000002, " -2", "%+#6ld"}, + {__LINE__, 0x00000003, "3", "%x"}, + {__LINE__, 0xfffd1799, "FFFD1799", "%6.X"}, + {__LINE__, 0x00000005, "5", "%ld"}, + {__LINE__, 0x0052138b, "5378955", "%#7.7ld"}, + {__LINE__, 0x000000c0, " 192", "% 7ld"}, + {__LINE__, 0x005b26cd, "5B26CD", "%X"}, + {__LINE__, -0x008df17, "-581399", "%.4ld"}, + {__LINE__, 0xfffffad8, "fffffad8", "%-x"}, + {__LINE__, 0x000006a9, "6a9", "%.0x"}, + {__LINE__, -0x003b7f9, "-243705", "%+0ld"}, + {__LINE__, 0x005d7ea4, "6127268", "%ld"}, + {__LINE__, -0x003ccea, "-249066", "%+.0ld"}, + {__LINE__, 0x0000846f, "846F", "%X"}, + {__LINE__, 0x00004f79, "4F79", "%4.X"}, + {__LINE__, 0xe3e1409c, "E3E1409C", "%-X"}, + {__LINE__, 0x07cce2f4, "7CCE2F4", "%2.X"}, + {__LINE__, 0x004bcc8b, "4967563", "%-.5ld"}, + {__LINE__, 0x7d49665e, "2101962334", "%ld"}, + {__LINE__, 0xfffffffc, "FFFFFFFC", "%.5X"}, + {__LINE__, 0x0000019e, "+000414", "%+.6d"}, + {__LINE__, 0x000027ef, "10223", "%d"}, + {__LINE__, -0x0000261, "-609", "%3ld"}, + {__LINE__, -0x000000e, "-14", "% 2.ld"}, + {__LINE__, 0xff3ba3c7, "ff3ba3c7", "%+5.7x"}, + {__LINE__, 0xffffffc4, "FFFFFFC4", "%-1.X"}, + {__LINE__, 0xfffc5a70, "0xfffc5a70", "%#4.4x"}, + {__LINE__, 0x0000d156, " 53590", "% d"}, + {__LINE__, -0x0486258, "-4743768", "%0ld"}, + {__LINE__, 0x00000000, " ", "% 2.d"}, + {__LINE__, 0x04a0ef9f, "77655967", "%0.6ld"}, + {__LINE__, 0xffffffff, "FFFFFFFF", "%X"}, + {__LINE__, 0x00000019, "0000019", "%.7x"}, + {__LINE__, -0x0058d3a, "-363834", "%ld"}, + {__LINE__, 0xfffff6b3, "fffff6b3", "%x"}, + {__LINE__, 0xfffffff5, "FFFFFFF5", "%.0X"}, + {__LINE__, 0x005e1fcb, "5E1FCB", "%+6X"}, + {__LINE__, 0xffc3c866, "0xffc3c866", "%-#.4x"}, + {__LINE__, 0x00000003, "3", "%X"}, + {__LINE__, 0xffa2e961, "FFA2E961", "%7.4X"}, + {__LINE__, 0x00000029, "41", "%d"}, + {__LINE__, -0x0000035, "-53", "%d"}, + {__LINE__, 0x0001b033, "110643", "%ld"}, + {__LINE__, 0x004dd51b, "5100827", "%-2ld"}, + {__LINE__, -0x000252d, "-9517", "% d"}, + {__LINE__, 0xffffdeb2, "ffffdeb2", "%4.x"}, + {__LINE__, 0xffe94eab, "0xffe94eab", "%#x"}, + {__LINE__, 0xf921edf6, "f921edf6", "%4.2x"}, + {__LINE__, 0x0007df97, "515991", "%4.ld"}, + {__LINE__, 0x00709bc5, "709BC5", "%0X"}, + {__LINE__, -0x0000001, "-1", "%d"}, + {__LINE__, 0xfffffffb, "FFFFFFFB", "%7.3X"}, + {__LINE__, -0x0063f74, "-409460", "%+05.0d"}, + {__LINE__, 0xfffffe9a, "FFFFFE9A", "%.2X"}, + {__LINE__, -0x0001ce2, "-7394", "%.4d"}, + {__LINE__, 0x000038c5, "14533", "%ld"}, + {__LINE__, 0x000000ad, "000ad", "% 5.5x"}, + {__LINE__, 0xffffbcc4, "ffffbcc4", "%-5x"}, + {__LINE__, 0x00000000, "0", "% X"}, + {__LINE__, 0x00372877, "372877", "%.6X"}, + {__LINE__, 0xffffffd7, "FFFFFFD7", "%1.X"}, + {__LINE__, 0xfa58b14b, "fa58b14b", "%x"}, + {__LINE__, 0xfffffd9f, "FFFFFD9F", "%0.7X"}, + {__LINE__, 0x00000710, "+1808", "%+#.2ld"}, + {__LINE__, 0x00000006, " 6", "%5.0ld"}, + {__LINE__, 0x0fba9706, "263886598", "%-6.3d"}, + {__LINE__, 0xffff420a, "ffff420a", "%-2x"}, + {__LINE__, 0x14b9a825, "14b9a825", "%x"}, + {__LINE__, 0x0077ffe4, "77FFE4", "%+.2X"}, + {__LINE__, 0x00067108, "422152 ", "%-7.ld"}, + {__LINE__, 0x00000001, " 00001", "%6.5X"}, + {__LINE__, 0x00000000, "0", "%ld"}, + {__LINE__, -0x0000001, " -1", "% 7ld"}, + {__LINE__, 0x01ddc7a3, "31311779", "%d"}, + {__LINE__, -0x2a92f9b, "-44642203", "% 3ld"}, + {__LINE__, 0xfffffff9, "fffffff9", "%4.6x"}, + {__LINE__, 0x0279a274, "279a274", "%x"}, + {__LINE__, 0x2e37ed8e, "775417230", "%d"}, + {__LINE__, 0x5ba59f58, "1537580888", "%-ld"}, + {__LINE__, 0xffffffe0, "ffffffe0", "%x"}, + {__LINE__, 0x3110ae47, "0X3110AE47", "%+#X"}, + {__LINE__, 0x000e00b9, "917689", "%d"}, + {__LINE__, 0x0000002e, " 0046", "% 7.4d"}, + {__LINE__, 0x00000363, " 867", "%7.d"}, + {__LINE__, -0x000000b, "-0011", "% 0.4d"}, + {__LINE__, 0x000349c8, " 349C8", "% 7.X"}, + {__LINE__, -0x01358f1, "-1267953", "%d"}, + {__LINE__, -0x0039d3c, "-236860", "%-.3d"}, + {__LINE__, 0xffd6de19, "ffd6de19", "%04.0x"}, + {__LINE__, -0x0003c54, "-0015444", "%1.7d"}, + {__LINE__, -0x0000e17, "-3607", "%d"}, + {__LINE__, 0xff0fa3a9, "ff0fa3a9", "%+3x"}, + {__LINE__, 0x00000009, "0000009", "%1.7x"}, + {__LINE__, 0xfffffc81, "FFFFFC81", "% X"}, + {__LINE__, -0x4ef2df5, "-82783733", "%ld"}, + {__LINE__, 0x00000013, "19", "%-ld"}, + {__LINE__, 0x00000000, " 0", "%#7x"}, + {__LINE__, -0x3b9485fd, "-999589373", "%1.d"}, + {__LINE__, -0x0000006, "-00006", "%6.5d"}, + {__LINE__, 0x0000003f, "+63", "%+ld"}, + {__LINE__, 0x000004c5, "1221", "%1.d"}, + {__LINE__, 0x003f8a8c, "4164236", "%d"}, + {__LINE__, -0x000001e, "-30", "%-#3d"}, + {__LINE__, 0xfff9d230, "FFF9D230", "%+07.3X"}, + {__LINE__, 0x0147cf17, "147cf17", "% x"}, + {__LINE__, 0xffffffeb, "ffffffeb", "%x"}, + {__LINE__, 0x0000007d, "00125", "%.5ld"}, + {__LINE__, 0x000fff56, "1048406", "%#3d"}, + {__LINE__, 0x064307a0, " 105056160", "% 0.3ld"}, + {__LINE__, 0x007d2860, "8202336", "%-.2d"}, + {__LINE__, 0x00a05711, "a05711", "%x"}, + {__LINE__, 0x179a7f9e, "0x179a7f9e", "%+#.3x"}, + {__LINE__, 0x00000003, "3", "%X"}, + {__LINE__, -0x0001d7d, "-7549", "%#5d"}, + {__LINE__, 0x0025d3f2, "+2479090", "%+2.d"}, + {__LINE__, -0x0000001, "-1", "%#ld"}, + {__LINE__, 0xfffffdd5, "fffffdd5", "%.7x"}, + {__LINE__, 0x003462b9, "3433145", "%d"}, + {__LINE__, 0x00005a81, "23169", "%d"}, + {__LINE__, 0xfffffcdb, "fffffcdb", "%-x"}, + {__LINE__, 0x00000000, "0", "%d"}, + {__LINE__, 0xfff22085, "fff22085", "%x"}, + {__LINE__, 0x00016d72, " 93554", "% d"}, + {__LINE__, -0x0000002, "-2", "%0ld"}, + {__LINE__, 0xfffffd21, "fffffd21", "% 0x"}, + {__LINE__, 0x00000931, "2353", "%ld"}, + {__LINE__, 0x00010021, "10021", "%5.1X"}, + {__LINE__, -0x000007e, "-126", "%1.0ld"}, + {__LINE__, 0xfffffff8, "fffffff8", "%01.x"}, + {__LINE__, -0x001d148, "-119112", "%d"}, + {__LINE__, -0x0000008, "-8", "%ld"}, + {__LINE__, -0x000038e, "-910", "% ld"}, + {__LINE__, 0x0039e3e5, "3793893", "%0.1d"}, + {__LINE__, 0x0038fb8e, "38FB8E", "%.2X"}, + {__LINE__, -0x002dafa, "-187130", "%ld"}, + {__LINE__, -0xbec275b, "-200025947", "%ld"}, + {__LINE__, 0x1a32f999, "1A32F999", "%05.4X"}, + {__LINE__, 0x0000002f, "2f", "%x"}, + {__LINE__, -0x0001a5b, "-6747", "%+3.ld"}, + {__LINE__, 0x00000762, " 1890", "%7.ld"}, + {__LINE__, 0x000000c2, "000194", "%0.6ld"}, + {__LINE__, 0xffff002b, "FFFF002B", "%.4X"}, + {__LINE__, -0x0019dae, "-105902", "% .2d"}, + {__LINE__, 0x0000125f, "125f", "%+1x"}, + {__LINE__, -0x000b688, " -46728", "%#7.d"}, + {__LINE__, 0x000401ca, "401ca", "%0x"}, + {__LINE__, 0x00000192, "402", "%#ld"}, + {__LINE__, 0xffffffff, "ffffffff", "%x"}, + {__LINE__, 0x1e505a0c, "0X1E505A0C", "%#1.3X"}, + {__LINE__, 0x000f8f6c, "1019756", "%d"}, + {__LINE__, 0x0004a296, "4a296", "%5.2x"}, + {__LINE__, 0x00000003, "3", "% x"}, + {__LINE__, -0x000d44c, "-54348", "%#ld"}, + {__LINE__, 0x00009ae2, "39650", "%-d"}, + {__LINE__, 0xffffff3a, "FFFFFF3A", "% .7X"}, + {__LINE__, 0x0042350b, "4338955", "%d"}, + {__LINE__, 0x000071af, "71af", "%+.4x"}, + {__LINE__, 0x00000001, "0x1", "%#0x"}, + {__LINE__, 0x00000033, "00051", "%3.5d"}, + {__LINE__, 0x00000001, "1", "%X"}, + {__LINE__, -0xebfb0e7, "-247443687", "%+3ld"}, + {__LINE__, 0x00000027, "27 ", "%-07.X"}, + {__LINE__, -0x0004837, "-18487", "%01d"}, + {__LINE__, 0x1a8c53da, "1A8C53DA", "%X"}, + {__LINE__, -0x0bdb8a9, "-12433577", "%d"}, + {__LINE__, -0x0000098, "-152", "%#ld"}, + {__LINE__, -0x003b554, "-243028", "%d"}, + {__LINE__, 0x000000cb, "00000CB", "%+.7X"}, + {__LINE__, 0xfffffeda, "FFFFFEDA", "%X"}, + {__LINE__, -0x0000010, "-16", "%-#d"}, + {__LINE__, 0x00000006, "+6", "%+d"}, + {__LINE__, 0x003c294a, "+3942730", "%+4.ld"}, + {__LINE__, 0x00000009, "9", "%ld"}, + {__LINE__, 0xfbbdd2bc, "FBBDD2BC", "% X"}, + {__LINE__, 0x71c86678, "+1908958840", "%+0.6ld"}, + {__LINE__, -0x0b49bff, "-11836415", "% 6.ld"}, + {__LINE__, 0xfff416be, "fff416be", "%3.x"}, + {__LINE__, 0x00000077, "+119", "%+d"}, + {__LINE__, 0xfff1cfaa, "FFF1CFAA", "% 0.2X"}, + {__LINE__, 0xfffffffb, "fffffffb", "% x"}, + {__LINE__, 0x0000127e, "4734", "%d"}, + {__LINE__, 0x00107ad2, "107ad2", "%+2.6x"}, + {__LINE__, 0x0006b8e9, "440553", "%-#d"}, + {__LINE__, 0x0000eb6f, "eb6f", "% x"}, + {__LINE__, 0x00001f18, "7960", "%0d"}, + {__LINE__, 0xfffff225, "fffff225", "%1.5x"}, + {__LINE__, 0xfffffff9, "fffffff9", "%+6.x"}, + {__LINE__, 0x000005b9, "01465", "%.5ld"}, + {__LINE__, 0xfffc26b8, "FFFC26B8", "% X"}, + {__LINE__, 0x540d580d, "0X540D580D", "%+#X"}, + {__LINE__, 0x05ad7094, "5AD7094", "% 4.7X"}, + {__LINE__, -0x000019b, "-411", "% d"}, + {__LINE__, 0x00000006, "000006", "%6.6ld"}, + {__LINE__, 0x0000026a, "+618", "%+ld"}, + {__LINE__, 0x0000000b, "11", "%ld"}, + {__LINE__, -0x26985d5, "-40469973", "%#.0ld"}, + {__LINE__, 0x0000007d, "7D", "%+02.0X"}, + {__LINE__, -0x0079ddf, "-0499167", "%+.7ld"}, + {__LINE__, 0x0000375f, "14175", "%0d"}, + {__LINE__, -0x18de7f99, "-417234841", "%ld"}, + {__LINE__, -0x00507cc, "-329676", "%.0d"}, + {__LINE__, 0x000029d5, "29D5", "%-2.1X"}, + {__LINE__, 0x0000328c, "328C", "%-3.X"}, + {__LINE__, 0x016f6234, "24076852", "%3.ld"}, + {__LINE__, 0xfffffffc, "0XFFFFFFFC", "%#.5X"}, + {__LINE__, 0xfe6163ca, "FE6163CA", "%5.X"}, + {__LINE__, 0xffffffc2, "FFFFFFC2", "%X"}, + {__LINE__, 0x00000087, "+135", "%+ld"}, + {__LINE__, 0x00310166, "310166", "% x"}, + {__LINE__, 0x00e8c871, "15255665", "%d"}, + {__LINE__, 0x000005ee, "1518", "%ld"}, + {__LINE__, 0xfcb24306, "FCB24306", "%X"}, + {__LINE__, 0x0000000b, " 11", "%5ld"}, + {__LINE__, 0x006d11d0, "0x6d11d0", "%#.0x"}, + {__LINE__, 0x0010d416, "1102870", "%#6.5d"}, + {__LINE__, -0x0047cb3, "-294067", "%.3d"}, + {__LINE__, 0x000000c0, "c0", "%x"}, + {__LINE__, 0xffffffff, "FFFFFFFF", "%+X"}, + {__LINE__, -0x000000a, "-10", "%d"}, + {__LINE__, -0x0000007, "-7", "% ld"}, + {__LINE__, 0xfffffffe, "FFFFFFFE", "%-X"}, + {__LINE__, 0x00000014, "0x14", "%-#3.1x"}, + {__LINE__, 0x00003319, "3319", "% x"}, + {__LINE__, 0x00000000, "00", "%+#.2X"}, + {__LINE__, -0x0000009, "-9", "% ld"}, + {__LINE__, -0x0000001, "-1 ", "%-3ld"}, + {__LINE__, 0x00262909, "2500873", "%.5ld"}, + {__LINE__, 0x33e76560, "33e76560", "%7.0x"}, + {__LINE__, -0x0000002, "-2", "%ld"}, + {__LINE__, 0x00035ee9, "35EE9", "%-3.X"}, + {__LINE__, -0x0000235, "-565", "%+4.ld"}, + {__LINE__, -0x3ea63c5, "-65692613", "%d"}, + {__LINE__, 0x00000003, "3", "%ld"}, + {__LINE__, -0x003362f, "-210479", "% d"}, + {__LINE__, -0x1a819f8a, "-444702602", "%.7d"}, + {__LINE__, 0x027a4668, "41567848", "%d"}, + {__LINE__, 0x0002b025, "2b025", "%x"}, + {__LINE__, -0x0000001, "-001", "%.3ld"}, + {__LINE__, 0xfffffff0, "fffffff0", "%-0x"}, + {__LINE__, -0x0000d4f, "-3407", "%-ld"}, + {__LINE__, 0x00000146, " 326", "% 1.d"}, + {__LINE__, -0x0000006, "-6", "%d"}, + {__LINE__, 0xffffffff, "FFFFFFFF", "%06.4X"}, + {__LINE__, 0x376fddae, "+930078126", "%+#0ld"}, + {__LINE__, 0x006d9da3, "6d9da3", "%1.x"}, + {__LINE__, -0x0000f28, "-3880", "%3.2ld"}, + {__LINE__, 0x0006962c, " 431660", "% 5d"}, + {__LINE__, 0x000011db, " 4571", "%6.ld"}, + {__LINE__, 0xffffffa8, "ffffffa8", "%+x"}, + {__LINE__, 0x0d886db3, "D886DB3", "%.7X"}, + {__LINE__, 0x00000000, "000000", "%2.6ld"}, + {__LINE__, 0xfffff6b6, "FFFFF6B6", "% X"}, + {__LINE__, -0x0739068, "-7573608", "%+6.ld"}, + {__LINE__, 0xfba62553, "0XFBA62553", "%#X"}, + {__LINE__, -0x4474bc5, "-71781317", "%-2ld"}, + {__LINE__, 0xffffff95, "FFFFFF95", "% 2.X"}, + {__LINE__, -0x1d0e1ca, "-30466506", "%+.0d"}, + {__LINE__, -0x000f3aa, "-62378", "%ld"}, + {__LINE__, 0x00000026, "26", "%1x"}, + {__LINE__, 0x001c5400, "1856512", "%-#d"}, + {__LINE__, 0x03808442, "3808442", "%X"}, + {__LINE__, -0x0000081, "-129", "%+#ld"}, + {__LINE__, 0x000004ae, " 1198", "% 3.4d"}, + {__LINE__, -0x7f4ed54, "-133492052", "%d"}, + {__LINE__, 0x00000000, "+0", "%+ld"}, + {__LINE__, 0x00000000, "0", "%+x"}, + {__LINE__, 0x004c7e46, "5013062", "%.0d"}, + {__LINE__, -0x647d7a65, "-1685944933", "%0.2d"}, + {__LINE__, 0x00003b59, "15193", "%-#1d"}, + {__LINE__, 0xfff3e64d, "FFF3E64D", "%-X"}, + {__LINE__, 0x00007022, "28706", "%-d"}, + {__LINE__, 0xc28d0ad8, "c28d0ad8", "%+x"}, + {__LINE__, -0x005c208, "-377352", "% ld"}, + {__LINE__, 0x00cfbadc, "13613788", "%d"}, + {__LINE__, 0x000016ea, "5866", "%0d"}, + {__LINE__, 0x00000029, "29", "%X"}, + {__LINE__, 0xffe16813, "0XFFE16813", "%+#X"}, + {__LINE__, 0x00000004, "4", "%0X"}, + {__LINE__, -0x0000096, " -150", "%5d"}, + {__LINE__, 0x00027ac7, "162503", "%ld"}, + {__LINE__, -0x0075de0, "-482784", "%d"}, + {__LINE__, 0x005fcff6, "6279158", "%d"}, + {__LINE__, 0xffffffef, "FFFFFFEF", "%3X"}, + {__LINE__, 0x267b05ec, "645596652", "%4ld"}, + {__LINE__, 0xa487b724, "a487b724", "%x"}, + {__LINE__, 0x01da2a11, "31074833", "%-.0ld"}, + {__LINE__, 0xffffffff, "FFFFFFFF", "%X"}, + {__LINE__, 0x0000037a, "37a", "%x"}, + {__LINE__, 0x003d0314, "+3998484", "%+#1d"}, + {__LINE__, 0x0000011b, " 283", "%5.2d"}, + {__LINE__, 0x094f6066, "94f6066", "%x"}, + {__LINE__, 0x00000004, "4", "%X"}, + {__LINE__, -0x102e14bd, "-271455421", "% 7.ld"}, + {__LINE__, 0x000048da, "0018650", "%07ld"}, + {__LINE__, -0x24ae0390, "-615383952", "%0.6d"}, + {__LINE__, 0xffff5159, "0XFFFF5159", "%#0X"}, + {__LINE__, 0xfffd38c3, "fffd38c3", "%x"}, + {__LINE__, 0xfffff9ea, "FFFFF9EA", "%-X"}, + {__LINE__, -0x000fd28, "-64808", "% ld"}, + {__LINE__, 0x002c1bf4, "2890740", "%-.1d"}, + {__LINE__, 0x00d00ee7, "D00EE7", "%0.4X"}, + {__LINE__, 0x00000cf9, "3321", "%0d"}, + {__LINE__, -0x0000001, "-1", "%-#ld"}, + {__LINE__, 0xfffffd75, "FFFFFD75", "%.2X"}, + {__LINE__, 0x00000012, "18", "%-d"}, + {__LINE__, 0xfd44b4b2, "fd44b4b2", "%+5.x"}, + {__LINE__, -0x001c53f, "-116031", "%-#6.d"}, + {__LINE__, 0x000ff6fd, "ff6fd", "%2x"}, + {__LINE__, 0x00000001, "1", "%0d"}, + {__LINE__, 0x0120b478, "120B478", "%.7X"}, + {__LINE__, 0x0145591e, "145591E", "%1.4X"}, + {__LINE__, 0x001f99b9, "1F99B9", "%.1X"}, + {__LINE__, 0xffffd078, "ffffd078", "%-1.5x"}, + {__LINE__, 0xffffff1a, "FFFFFF1A", "%-4.6X"}, + {__LINE__, 0xfffffffa, "fffffffa", "%x"}, + {__LINE__, -0x00000b9, "-185", "%3ld"}, + {__LINE__, 0x00001cf0, "7408", "%-ld"}, + {__LINE__, 0xffffffff, "FFFFFFFF", "%X"}, + {__LINE__, 0x00151f30, "151F30", "%X"}, + {__LINE__, -0x0000103, "-259", "%d"}, + {__LINE__, -0x000303f, "-12351", "%d"}, + {__LINE__, 0x000002ca, "714", "%ld"}, + {__LINE__, -0x0000c55, "-3157", "%1d"}, + {__LINE__, 0x00000691, "01681", "%#.5ld"}, + {__LINE__, 0x00230537, "2295095", "%#d"}, + {__LINE__, 0x032a1faa, "53092266", "%.4d"}, + {__LINE__, 0x000050d7, "20695", "%d"}, + {__LINE__, -0x0c7ad4c, "-13086028", "%#.4ld"}, + {__LINE__, -0x00009d9, "-2521", "%+d"}, + {__LINE__, 0xfffffffe, "fffffffe", "%0x"}, + {__LINE__, 0xffdec2d9, "FFDEC2D9", "%5.1X"}, + {__LINE__, -0x000563c, "-22076", "%-.2ld"}, + {__LINE__, 0x0073b36a, "0x73b36a", "%-#x"}, + {__LINE__, 0xfffffffd, "fffffffd", "%x"}, + {__LINE__, 0x0193ba5a, "193ba5a", "%1.x"}, + {__LINE__, 0x00d147b5, "13715381", "%2.d"}, + {__LINE__, 0xffffff10, "ffffff10", "%4x"}, + {__LINE__, 0x000648d5, "648d5", "%1.3x"}, + {__LINE__, 0x00000011, "11", "%X"}, + {__LINE__, 0xff259f5b, "0xff259f5b", "% #.1x"}, + {__LINE__, 0x00000175, "175", "%x"}, + {__LINE__, 0x00000000, "0", "%ld"}, + {__LINE__, 0x00000015, "21", "%#ld"}, + {__LINE__, 0xfffffffe, "fffffffe", "%-x"}, + {__LINE__, 0x00000013, " 19", "% 0ld"}, + {__LINE__, -0x0000001, "-0000001", "% 5.7ld"}, + {__LINE__, 0x0000139d, "139D", "%X"}, + {__LINE__, 0x0041ad18, "41ad18", "%-.6x"}, + {__LINE__, -0x00000f9, "-249", "% 3.d"}, + {__LINE__, 0x00000076, "118", "%ld"}, + {__LINE__, 0x000006f8, "1784", "%d"}, + {__LINE__, -0x0000005, "-5", "%ld"}, + {__LINE__, -0x00008e7, "-2279", "%+ld"}, + {__LINE__, 0x00003f77, "3F77", "%+0X"}, + {__LINE__, 0x000ca3f8, "0XCA3F8", "%+#X"}, + {__LINE__, -0x00004bf, "-001215", "%#5.6ld"}, + {__LINE__, 0x319129ab, "0x319129ab", "%+#x"}, + {__LINE__, -0x0000002, "-2", "%ld"}, + {__LINE__, -0x0f6686e, "-16148590", "%.6ld"}, + {__LINE__, 0x0329576b, "53041003", "%2.d"}, + {__LINE__, -0x000179e, "-6046", "%d"}, + {__LINE__, 0x000002cc, "+716", "%+1.3ld"}, + {__LINE__, 0xfffffff7, "0xfffffff7", "% #x"}, + {__LINE__, 0x0016eb40, "1502016", "%ld"}, + {__LINE__, 0x00000003, "3", "%-0ld"}, + {__LINE__, 0x0023e0d6, "23E0D6", "%-05.X"}, + {__LINE__, 0xffffa6a4, "0XFFFFA6A4", "%#X"}, + {__LINE__, 0x00087664, "87664", "% .2x"}, + {__LINE__, -0x0000002, " -2", "%3.ld"}, + {__LINE__, 0x003ad85d, "3AD85D", "%X"}, + {__LINE__, 0x00002f20, "12064", "%ld"}, + {__LINE__, 0x02030bfc, "2030BFC", "%02.3X"}, + {__LINE__, 0xfffff36a, "FFFFF36A", "%X"}, + {__LINE__, 0xfe0729ff, "0xfe0729ff", "% #.0x"}, + {__LINE__, 0xfec15164, "FEC15164", "%0.2X"}, + {__LINE__, -0x00169ec, "-92652", "%+d"}, + {__LINE__, 0x006d7990, "0x6d7990", "%#x"}, + {__LINE__, 0xffcc89e6, "ffcc89e6", "%x"}, + {__LINE__, 0x002d7cca, "2981066", "%7.7ld"}, + {__LINE__, -0x1649692b, "-373909803", "%#ld"}, + {__LINE__, 0x00664f47, "664f47", "%+6.x"}, + {__LINE__, 0x00000000, "0", "% X"}, + {__LINE__, 0x00000047, "000047", "%.6X"}, + {__LINE__, 0x00000007, "0000007", "%.7ld"}, + {__LINE__, 0x00000030, "30", "%-x"}, + {__LINE__, -0x25bcbabb, "-633125563", "% ld"}, + {__LINE__, 0xfe11c031, "FE11C031", "%4.6X"}, + {__LINE__, -0x0000001, "-0000001", "%.7d"}, + {__LINE__, 0x00b56d84, "11890052", "%ld"}, + {__LINE__, -0x0000b01, "-0002817", "%+07.7ld"}, + {__LINE__, 0xffffe4ad, "ffffe4ad", "% 0.0x"}, + {__LINE__, 0x007760fc, "7760fc", "%+x"}, + {__LINE__, 0xffef44d8, "FFEF44D8", "%X"}, + {__LINE__, 0xfcb6862e, "fcb6862e", "%+x"}, + {__LINE__, -0x0000001, "-1", "%0d"}, + {__LINE__, 0xffffffe6, "FFFFFFE6", "%3.1X"}, + {__LINE__, 0xff816e27, "FF816E27", "% 6.X"}, + {__LINE__, 0x00006415, "25621", "%ld"}, + {__LINE__, -0xfae5449, "-263083081", "%0ld"}, + {__LINE__, 0x00000001, " 1", "% 0d"}, + {__LINE__, 0x00000009, " 9", "%2.X"}, + {__LINE__, 0x002d7e18, "2981400", "%7d"}, + {__LINE__, -0x00000fc, "-0000252", "%-#.7d"}, + {__LINE__, 0x00000003, "3", "%0x"}, + {__LINE__, 0x0d46e47f, "222749823", "%ld"}, + {__LINE__, 0xfffcbc52, "FFFCBC52", "%+X"}, + {__LINE__, 0x00000000, "0", "%-X"}, + {__LINE__, 0xfffff0e5, "fffff0e5", "%x"}, + {__LINE__, 0xffffffd9, "FFFFFFD9", "%07X"}, + {__LINE__, 0x000004ee, "4ee", "%0x"}, + {__LINE__, 0xffffffff, "ffffffff", "%0x"}, + {__LINE__, -0x0008cb4, "-036020", "%+3.6ld"}, + {__LINE__, 0x0000dada, "0xdada", "%#0.x"}, + {__LINE__, 0x0000001a, "26 ", "%-4d"}, + {__LINE__, -0x000000c, " -12", "%04.d"}, + {__LINE__, 0x0000025c, " 25c", "%7.x"}, + {__LINE__, 0xfe9b091e, "FE9B091E", "%X"}, + {__LINE__, 0x00000002, " 2", "%07.ld"}, + {__LINE__, -0x0004930, "-18736", "% 6.d"}, + {__LINE__, 0xffffffe9, "FFFFFFE9", "%X"}, + {__LINE__, 0x00000003, " 3", "%2.ld"}, + {__LINE__, 0x00000e00, "3584", "%.4d"}, + {__LINE__, 0xffff38c2, "ffff38c2", "%0.x"}, + {__LINE__, 0xffffffff, "FFFFFFFF", "% .3X"}, + {__LINE__, 0xff7c1b2f, "FF7C1B2F", "%-3.2X"}, + {__LINE__, -0x0000005, "-5", "%2d"}, + {__LINE__, 0x00098775, "98775", "%x"}, + {__LINE__, 0x000015ff, " 15FF", "%6.X"}, + {__LINE__, 0xfffbe3ef, "FFFBE3EF", "%0.3X"}, + {__LINE__, -0x0000048, "-72", "%ld"}, + {__LINE__, 0x0001488a, "84106", "%d"}, + {__LINE__, 0x00000001, "1", "%x"}, + {__LINE__, -0x0000002, "-2", "%-0.0ld"}, + {__LINE__, -0x0000001, "-1", "%-d"}, + {__LINE__, 0x0006616f, "6616f", "%x"}, + {__LINE__, 0x3657856d, "911705453", "%6.d"}, + {__LINE__, -0x0007222, "-0029218", "%.7d"}, + {__LINE__, 0x00041606, "267782", "%04.5d"}, + {__LINE__, 0x00000001, " 1", "%2.ld"}, + {__LINE__, 0x00000219, "219", "%0x"}, + {__LINE__, 0x0ae0184c, "ae0184c", "%x"}, + {__LINE__, 0x00003a7d, " 14973", "%7.ld"}, + {__LINE__, 0xffffffff, "0XFFFFFFFF", "%#X"}, + {__LINE__, -0x0000002, "-2", "%0ld"}, + {__LINE__, 0x00002cdf, "11487", "%0ld"}, + {__LINE__, -0x000000c, "-12", "%d"}, + {__LINE__, -0x000000e, "-14", "%-#2d"}, + {__LINE__, 0x00000371, "881", "%#ld"}, + {__LINE__, 0x000015be, " 5566", "%5.ld"}, + {__LINE__, 0x01525b91, "22174609", "%#0.0ld"}, + {__LINE__, 0xff8fc22f, "FF8FC22F", "% X"}, + {__LINE__, -0x0007f7b, "-32635", "%4.ld"}, + {__LINE__, 0x00007bca, "7bca", "%x"}, + {__LINE__, -0x0000582, "-1410", "%ld"}, + {__LINE__, 0x00000047, " +71", "%+04.2d"}, + {__LINE__, 0xf8a8dce2, "f8a8dce2", "%+.6x"}, + {__LINE__, -0x000de2e, "-56878", "%.0d"}, + {__LINE__, 0x019c03c1, "0X19C03C1", "%#X"}, + {__LINE__, -0x0f3a43e, "-15967294", "%ld"}, + {__LINE__, 0x00009e87, "40583", "%#5.1d"}, + {__LINE__, 0x000000b8, "184", "%0ld"}, + {__LINE__, -0x000befe, "-48894", "%2ld"}, + {__LINE__, -0x002ee1a, "-192026", "%.2d"}, + {__LINE__, 0x00004fd8, "4fd8", "%x"}, + {__LINE__, 0x0006d57b, "447867", "%2d"}, + {__LINE__, 0xfffffa9c, "FFFFFA9C", "%-X"}, + {__LINE__, 0x0000000f, "15", "%ld"}, + {__LINE__, 0x0005deb2, "5DEB2", "% X"}, + {__LINE__, 0x00000007, "7", "%X"}, + {__LINE__, 0xffffffc8, "0XFFFFFFC8", "% #.1X"}, + {__LINE__, 0xfffff62f, "FFFFF62F", "%X"}, + {__LINE__, -0x1a935bba, "-445864890", "% 3.5d"}, + {__LINE__, 0x000b34b4, "0x0b34b4", "%-#3.6x"}, + {__LINE__, 0xfffff430, "FFFFF430", "%X"}, + {__LINE__, 0x00000b5f, "+0002911", "%+#.7d"}, + {__LINE__, 0x00000007, " 7", "%3ld"}, + {__LINE__, 0xffffffd8, "FFFFFFD8", "% .7X"}, + {__LINE__, 0xfffff544, "FFFFF544", "%0X"}, + {__LINE__, -0x353667b9, "-892757945", "%d"}, + {__LINE__, 0x00000058, "0x00058", "%+#.5x"}, + {__LINE__, 0x39dbcc4a, "+970705994", "%+0.6ld"}, + {__LINE__, 0xfffffffd, "fffffffd", "% 01x"}, + {__LINE__, 0x00b1c28e, "+11649678", "%+0ld"}, + {__LINE__, 0x000066c2, "0X66C2", "%-#4X"}, + {__LINE__, 0x007171a2, "+7434658", "%+07.ld"}, + {__LINE__, -0x0000001, "-1", "%-d"}, + {__LINE__, 0x00000ae0, "+2784", "%+0d"}, + {__LINE__, 0x13786a57, "326658647", "%#5d"}, + {__LINE__, -0x0000001, "-1", "%2.ld"}, + {__LINE__, -0x0168a16, "-1477142", "%d"}, + {__LINE__, 0x12df7dd6, "316636630", "%ld"}, + {__LINE__, 0x00000000, "000000", "%1.6d"}, + {__LINE__, 0x266da2a9, "644719273", "%ld"}, + {__LINE__, 0x0000004a, "74", "%d"}, + {__LINE__, 0x000102ff, "00102FF", "%+06.7X"}, + {__LINE__, 0x17916237, "0x17916237", "%#5x"}, + {__LINE__, -0x0003cbb, "-0015547", "%-.7d"}, + {__LINE__, 0xe7da2010, "e7da2010", "%2.4x"}, + {__LINE__, 0xfffffff3, "fffffff3", "% .7x"}, + {__LINE__, 0xfc9b64f8, "FC9B64F8", "% 7.X"}, + {__LINE__, 0x000001af, "431", "%0d"}, + {__LINE__, 0xffc81796, "0xffc81796", "%#.5x"}, + {__LINE__, 0x057a1fbc, "+91889596", "%+04d"}, + {__LINE__, 0x00001ae1, "6881", "%ld"}, + {__LINE__, 0xfffffff6, "fffffff6", "%3.0x"}, + {__LINE__, -0x6b7d5db, "-112711131", "%-06.1d"}, + {__LINE__, 0x008e8a5c, " 8e8a5c", "%7.0x"}, + {__LINE__, 0xfe07a9bd, "fe07a9bd", "%.1x"}, + {__LINE__, -0x00278e6, "-162022", "%0ld"}, + {__LINE__, 0xf98709f5, "F98709F5", "%X"}, + {__LINE__, -0x00000c9, "-201", "% 1.d"}, + {__LINE__, -0x000001d, "-00029", "%+2.5ld"}, + {__LINE__, 0x00000030, " 48", "% d"}, + {__LINE__, 0xffd753f4, "FFD753F4", "%0X"}, + {__LINE__, 0xfffffffd, "FFFFFFFD", "%X"}, + {__LINE__, 0x0000a765, "a765", "%x"}, + {__LINE__, 0x0026e2c8, "26E2C8", "%-0X"}, + {__LINE__, -0x00003eb, "-1003", "%3.1ld"}, + {__LINE__, 0x015d53ca, "22893514", "%0ld"}, + {__LINE__, -0x0000020, "-32", "%ld"}, + {__LINE__, -0x03558dd, "-3496157", "%1.0ld"}, + {__LINE__, -0x000007f, "-127", "%1.d"}, + {__LINE__, 0xffffc737, "0xffffc737", "%+#x"}, + {__LINE__, 0x0000a70d, " a70d", "%6.x"}, + {__LINE__, 0x01ea0e31, "0X1EA0E31", "% #1.X"}, + {__LINE__, 0x00b5f406, "0X0B5F406", "%-#.7X"}, + {__LINE__, 0x0e58fa9a, "240712346", "%.2d"}, + {__LINE__, 0xf43ff8a9, "f43ff8a9", "%+0.6x"}, + {__LINE__, -0x5d0d3d3, "-97571795", "%.3ld"}, + {__LINE__, -0x000027a, "-634", "%0d"}, + {__LINE__, 0xffcef248, "FFCEF248", "%07.X"}, + {__LINE__, 0x000002dc, "2dc", "%0x"}, + {__LINE__, -0x31fa6c1, "-52405953", "%.2d"}, + {__LINE__, 0x00000014, "14", "%X"}, + {__LINE__, -0x0282f98, "-2633624", "%ld"}, + {__LINE__, 0x00005f55, "24405", "%#d"}, + {__LINE__, -0x0000004, "-4", "%d"}, + {__LINE__, 0x00000001, "1", "%+x"}, + {__LINE__, 0x013f47ce, "13f47ce", "%0.x"}, + {__LINE__, 0x00143fce, "1327054", "%.3d"}, + {__LINE__, 0x00000000, "0", "%d"}, + {__LINE__, 0x00001f9a, "1F9A", "% X"}, + {__LINE__, 0x00000cf5, "cf5", "%x"}, + {__LINE__, 0xffea9c24, "ffea9c24", "%x"}, + {__LINE__, 0xf09f85a7, "F09F85A7", "%X"}, + {__LINE__, 0x00001e04, "7684", "%ld"}, + {__LINE__, 0xffffc82a, "ffffc82a", "%7x"}, + {__LINE__, -0x0000a77, "-2679", "% d"}, + {__LINE__, 0x0019a859, "+1681497", "%+2.6ld"}, + {__LINE__, -0x00002d7, "-727", "%ld"}, + {__LINE__, 0x00011b82, "72578", "%-#ld"}, + {__LINE__, 0x00000c32, "3122", "%ld"}, + {__LINE__, -0x0000337, "-823", "%1.d"}, + {__LINE__, 0x00000004, "4", "%1ld"}, + {__LINE__, 0x0000062c, "1580", "%.1ld"}, + {__LINE__, 0xffffffd3, "FFFFFFD3", "% X"}, + {__LINE__, -0x07b1bf8, "-8068088", "%#d"}, + {__LINE__, 0xfffffff9, "fffffff9", "%x"}, + {__LINE__, 0x159e6cfb, "159e6cfb", "%0.x"}, + {__LINE__, 0x0001148d, "1148d", "%-.1x"}, + {__LINE__, 0x003373b7, "3371959", "%#.0d"}, + {__LINE__, 0x00001af2, "1af2", "%.4x"}, + {__LINE__, -0x0000001, "-000001", "%+.6ld"}, + {__LINE__, -0x00001a3, "-419", "%d"}, + {__LINE__, 0xfdb232e7, "fdb232e7", "%5.4x"}, + {__LINE__, -0x000000d, "-13", "%d"}, + {__LINE__, 0x98ec1c74, "98ec1c74", "% 3x"}, + {__LINE__, 0xfffffff8, "fffffff8", "%+1.4x"}, + {__LINE__, -0x0000d58, "-3416", "%+#0ld"}, + {__LINE__, -0x65d1973, "-106764659", "%.6d"}, + {__LINE__, -0x0737641, "-7566913", "%-d"}, + {__LINE__, 0x0000037c, "37c", "%+0x"}, + {__LINE__, 0x0000012c, "0000300", "%#3.7d"}, + {__LINE__, 0x00c12d9b, "12660123", "%1.5ld"}, + {__LINE__, 0xe7e5e77d, "e7e5e77d", "%6x"}, + {__LINE__, 0x1fe0e820, "1FE0E820", "%-4X"}, + {__LINE__, 0xc85a793a, "C85A793A", "%X"}, + {__LINE__, 0x05f9fe2c, "100269612", "%#ld"}, + {__LINE__, 0x00000032, "0X32", "%+#4.1X"}, + {__LINE__, 0xfab4ce81, "fab4ce81", "%3.x"}, + {__LINE__, -0x0000009, "-9", "%2.d"}, + {__LINE__, 0xffff8d2e, "ffff8d2e", "% 6x"}, + {__LINE__, 0xfffffffe, "0xfffffffe", "%#x"}, + {__LINE__, 0x02960f60, "2960f60", "%1.x"}, + {__LINE__, 0x34cf3cbc, " 885996732", "% 5ld"}, + {__LINE__, -0x000006e, "-110", "% d"}, + {__LINE__, -0x0000001, "-1", "%-.0d"}, + {__LINE__, 0x000000b1, " B1", "%+7X"}, + {__LINE__, 0xfffff5b4, "FFFFF5B4", "%01.7X"}, + {__LINE__, 0x00000086, "86", "%0X"}, + {__LINE__, 0x00074367, " 74367", "% 6x"}, + {__LINE__, 0x001000d7, "+1048791", "%+ld"}, + {__LINE__, 0x00000f35, " 3893", "% d"}, + {__LINE__, -0x00000e1, "-225", "%d"}, + {__LINE__, 0xffff6694, "FFFF6694", "%6.X"}, + {__LINE__, 0x00019cf7, "19cf7", "%0.x"}, + {__LINE__, 0x00000046, "0046", "%+.4X"}, + {__LINE__, -0x000001f, "-31", "%ld"}, + {__LINE__, 0xfff25859, "fff25859", "%6x"}, + {__LINE__, 0x21884061, "562577505", "%#ld"}, + {__LINE__, 0x01448b7a, "1448B7A", "%0.1X"}, + {__LINE__, 0xffffffc0, "ffffffc0", "%x"}, + {__LINE__, 0xfffffed5, "fffffed5", "% 1.0x"}, + {__LINE__, 0x0e349767, "E349767", "%.5X"}, + {__LINE__, 0x00000330, "816", "%0d"}, + {__LINE__, -0x0000016, "-22", "%d"}, + {__LINE__, 0xffff9bab, "FFFF9BAB", "%X"}, + {__LINE__, 0xffffee4e, "ffffee4e", "%x"}, + {__LINE__, 0x0026beeb, "2539243", "%6.d"}, + {__LINE__, 0x00002c6c, "11372", "%.2d"}, + {__LINE__, -0x000002c, "-44", "%ld"}, + {__LINE__, -0x001dcfa, "-122106", "% d"}, + {__LINE__, 0x0001683c, "92220", "%#4.ld"}, + {__LINE__, 0x09b51fc9, "9b51fc9", "%+.7x"}, + {__LINE__, 0x0000001d, "29", "%0ld"}, + {__LINE__, -0x83f17e5, "-138352613", "%ld"}, + {__LINE__, 0xfa4e2c1b, "fa4e2c1b", "%x"}, + {__LINE__, 0x000001f3, "499", "%0ld"}, + {__LINE__, 0xffff03e4, "ffff03e4", "%x"}, + {__LINE__, 0x000000ac, "+0172", "%+.4ld"}, + {__LINE__, 0x03c3903b, "63148091", "%00d"}, + {__LINE__, 0x0000000d, "13", "%#d"}, + {__LINE__, 0x0000002e, "0X2E", "%#X"}, + {__LINE__, 0x00006b2d, "6B2D", "%X"}, + {__LINE__, 0x0000010b, " 0010b", "%7.5x"}, + {__LINE__, 0x0000017a, " 17a", "%4x"}, + {__LINE__, 0xfffffffb, "fffffffb", "%+x"}, + {__LINE__, 0xffffac6a, "ffffac6a", "%-.3x"}, + {__LINE__, -0x0005870, "-22640", "%0d"}, + {__LINE__, 0x189c17bc, "189c17bc", "%x"}, + {__LINE__, -0x01bbc38, "-1817656", "%#6.ld"}, + {__LINE__, -0x3382b55, "-54012757", "%d"}, + {__LINE__, -0x0000007, "-7", "%-ld"}, + {__LINE__, -0x000c74b, "-51019", "%ld"}, + {__LINE__, 0x0001a6f2, "+108274", "%+#1.ld"}, + {__LINE__, 0x00077448, "77448", "%x"}, + {__LINE__, 0x00000000, "0", "%x"}, + {__LINE__, 0xfffff056, "FFFFF056", "%.3X"}, + {__LINE__, -0x6f3f9451, "-1866437713", "%-#3.0ld"}, + {__LINE__, 0x000000ac, "AC", "%X"}, + {__LINE__, 0xffc8752f, "ffc8752f", "%-x"}, + {__LINE__, 0xfffffe6d, "FFFFFE6D", "%2.X"}, + {__LINE__, -0x377f1a5, "-58192293", "% .2d"}, + {__LINE__, -0x0000294, "-660", "%d"}, + {__LINE__, 0xfffffffe, "fffffffe", "%-x"}, + {__LINE__, 0xfffcbbe8, "0xfffcbbe8", "%-#4.x"}, + {__LINE__, 0x0022e510, "+2286864", "%+ld"}, + {__LINE__, 0xfffffe2a, "FFFFFE2A", "%0.3X"}, + {__LINE__, 0xfe29f7c0, "fe29f7c0", "%x"}, + {__LINE__, 0xfffe957e, "FFFE957E", "%X"}, + {__LINE__, 0x000080f8, "33016", "%ld"}, + {__LINE__, 0x0003ee2c, " 257580", "%7d"}, + {__LINE__, 0x000003a1, "929", "%d"}, + {__LINE__, 0x0000021f, "21f", "%+x"}, + {__LINE__, 0xffffffff, "ffffffff", "%.5x"}, + {__LINE__, -0x040a988, "-4237704", "%-d"}, + {__LINE__, 0x027c8b69, "41716585", "%ld"}, + {__LINE__, 0x00000003, "3", "%-X"}, + {__LINE__, -0x0000368, " -872", "%7.d"}, + {__LINE__, 0x00000d3c, "3388", "%0.2d"}, + {__LINE__, -0x33734cc, "-53949644", "%2ld"}, + {__LINE__, 0x000003db, "3DB", "%X"}, + {__LINE__, -0x00f154d, "-988493", "%5d"}, + {__LINE__, 0x0000000b, " 11", "%4.ld"}, + {__LINE__, 0x00000067, "103", "%-ld"}, + {__LINE__, -0x0199fce, "-1679310", "%4d"}, + {__LINE__, 0x02b6266b, "2b6266b", "% x"}, + {__LINE__, -0x006b39d, "-439197", "%+d"}, + {__LINE__, 0x00000007, "7", "%ld"}, + {__LINE__, 0x0141fc98, "21101720", "%0ld"}, + {__LINE__, -0x0008420, "-33824", "%d"}, + {__LINE__, 0x0011622b, "1139243", "%6ld"}, + {__LINE__, 0x0000001b, "27", "%-d"}, + {__LINE__, -0x0030935, "-198965", "%3d"}, + {__LINE__, 0x0000001f, " 1f", "%4.x"}, + {__LINE__, -0x10782a19, "-276310553", "%#ld"}, + {__LINE__, -0x007eac4, "-518852", "%06.ld"}, + {__LINE__, 0x0bc4c681, "197445249", "%6ld"}, + {__LINE__, 0x000000f5, "245", "%.3ld"}, + {__LINE__, 0x00000197, "197", "%X"}, + {__LINE__, 0xfffffeab, "FFFFFEAB", "% X"}, + {__LINE__, 0x00000f05, "F05", "%+X"}, + {__LINE__, 0xffe1b785, "0xffe1b785", "%#x"}, + {__LINE__, -0x02d3581, "-2962817", "%05d"}, + {__LINE__, 0xffffb994, "FFFFB994", "%X"}, + {__LINE__, 0x03d139a3, "64043427", "%ld"}, + {__LINE__, -0x0000002, " -2", "%+4.d"}, + {__LINE__, -0x043da83, "-4446851", "%#ld"}, + {__LINE__, -0x6aad891, "-111859857", "%7.ld"}, + {__LINE__, 0x00003e68, "15976", "%-4.5ld"}, + {__LINE__, 0xffe4d3ee, "FFE4D3EE", "%X"}, + {__LINE__, 0x00000002, "000002", "%4.6ld"}, + {__LINE__, 0xffffee32, "ffffee32", "%4x"}, + {__LINE__, 0x0cb7dd25, "cb7dd25", "%3x"}, + {__LINE__, 0xf773d422, "F773D422", "%X"}, + {__LINE__, -0x0b590f7, "-11899127", "%#d"}, + {__LINE__, -0x0002c45, "-11333", "%-#5ld"}, + {__LINE__, -0x1efc9e4, "-32492004", "%ld"}, + {__LINE__, -0x0003b9c, "-15260", "%d"}, + {__LINE__, 0x000001b6, "0X1B6", "%#4X"}, + {__LINE__, 0x3ce93ec3, "1021918915", "%.6d"}, + {__LINE__, 0xffffffff, "ffffffff", "%-x"}, + {__LINE__, 0xfffaf0e4, "fffaf0e4", "%2.x"}, + {__LINE__, 0x00000002, "0x2", "%#x"}, + {__LINE__, 0x0000e806, "e806", "%4x"}, + {__LINE__, 0xfffffff0, "fffffff0", "% 2.x"}, + {__LINE__, 0xfffffc0e, "fffffc0e", "%+.4x"}, + {__LINE__, 0xfd45716e, "FD45716E", "%.4X"}, + {__LINE__, 0xfff96fda, "FFF96FDA", "%-X"}, + {__LINE__, 0xff99d08a, "FF99D08A", "%.5X"}, + {__LINE__, 0x00000002, "2", "%-00.d"}, + {__LINE__, -0x000000f, " -15", "%6.ld"}, + {__LINE__, -0x00d321c, "-864796", "%#1ld"}, + {__LINE__, 0xff19ff8d, "ff19ff8d", "%1.5x"}, + {__LINE__, 0x00000000, "0000000", "%-.7x"}, + {__LINE__, 0x0000f50d, " F50D", "%5X"}, + {__LINE__, 0x00001688, " 5768", "%7.ld"}, + {__LINE__, 0x00000157, "343", "%2ld"}, + {__LINE__, 0xfffffffd, "0xfffffffd", "%+#3x"}, + {__LINE__, 0x00000d52, "3410", "%ld"}, + {__LINE__, 0x00000003, "3", "%d"}, + {__LINE__, 0x0001c6d2, "01c6d2", "%.6x"}, + {__LINE__, 0x242d65d2, "606954962", "%#7.ld"}, + {__LINE__, 0x00000e9f, "0000E9F", "%5.7X"}, + {__LINE__, 0x0002d785, "2D785", "%0X"}, + {__LINE__, 0x00000167, "167", "%0X"}, + {__LINE__, 0xfffff5e5, "fffff5e5", "% x"}, + {__LINE__, 0xffb69a04, "0xffb69a04", "%#0.x"}, + {__LINE__, 0xfffa012e, "FFFA012E", "%X"}, + {__LINE__, 0x0000001a, "0x1a", "% #x"}, + {__LINE__, 0xfffb26d3, "fffb26d3", "%+x"}, + {__LINE__, -0x00003e6, " -998", "%7ld"}, + {__LINE__, 0x00000004, "4", "%-d"}, + {__LINE__, 0xfffffd76, "0XFFFFFD76", "%#7X"}, + {__LINE__, 0x00000035, "53", "%ld"}, + {__LINE__, 0xffc6c190, "0XFFC6C190", "%#X"}, + {__LINE__, 0xffffffe2, "ffffffe2", "%7.0x"}, + {__LINE__, 0x03ff1b87, "67050375", "%2.d"}, + {__LINE__, 0x00020c47, "0X20C47", "%#X"}, + {__LINE__, 0x00000000, "0", "%d"}, + {__LINE__, 0x0000000e, "0X000E", "% #.4X"}, + {__LINE__, -0x00035cd, "-13773", "%+2.d"}, + {__LINE__, 0x00005eec, "5eec", "%1x"}, + {__LINE__, 0x001da0ff, "1941759", "%0d"}, + {__LINE__, 0xf8a9e96a, "f8a9e96a", "%+x"}, + {__LINE__, -0x0000120, "-288 ", "%-#6.d"}, + {__LINE__, 0x00000000, "0", "%-X"}, + {__LINE__, 0x0000152e, "152E", "%+X"}, + {__LINE__, -0x0001077, "-4215", "% 0d"}, + {__LINE__, 0xffffffd7, "FFFFFFD7", "%0X"}, + {__LINE__, 0xfffe097d, "FFFE097D", "%2X"}, + {__LINE__, 0xcb982712, "cb982712", "%x"}, + {__LINE__, 0xfff39f2e, "FFF39F2E", "%.5X"}, + {__LINE__, -0x0058cae, "-363694", "%+.1d"}, + {__LINE__, -0x000002b, "-043", "%#1.3d"}, + {__LINE__, -0x001e989, "-125321", "%1d"}, + {__LINE__, 0x00959ecd, "9805517", "%d"}, + {__LINE__, 0xf49df846, "F49DF846", "%+3X"}, + {__LINE__, 0xfffffffd, "fffffffd", "%+.5x"}, + {__LINE__, -0x000ac76, "-44150", "%3.ld"}, + {__LINE__, 0x00000028, " 0028", "%06.4x"}, + {__LINE__, 0x000003e8, "3E8", "%-02X"}, + {__LINE__, 0x00000012, "012", "%.3X"}, + {__LINE__, 0x00000006, "0X6", "%#X"}, + {__LINE__, 0x00ef8479, "+15697017", "%+0.6d"}, + {__LINE__, 0xffffffe8, "FFFFFFE8", "%-X"}, + {__LINE__, 0x773a90f7, "773a90f7", "%3.5x"}, + {__LINE__, 0x00096d44, "96D44", "%-X"}, + {__LINE__, -0x08a3d96, "-9059734", "%ld"}, + {__LINE__, -0x000001a, "-26", "%00.ld"}, + {__LINE__, 0x32f57585, "32f57585", "% x"}, + {__LINE__, 0x2825f175, "2825F175", "%X"}, + {__LINE__, 0x000054ff, "21759", "%-2d"}, + {__LINE__, -0x0266cdc, "-2518236", "%ld"}, + {__LINE__, 0x0000031d, "0X31D", "%+#4X"}, + {__LINE__, 0x0003fc99, "3fc99", "%x"}, + {__LINE__, -0x0064624, "-411172", "%-#d"}, + {__LINE__, 0x0001b2d9, "111321", "%-ld"}, + {__LINE__, -0x000007c, "-124", "%#d"}, + {__LINE__, 0xfffffffa, "FFFFFFFA", "%+X"}, + {__LINE__, -0x007a5b8, "-501176", "%+ld"}, + {__LINE__, 0x0213b583, "213B583", "%2.X"}, + {__LINE__, 0xfff12e51, "FFF12E51", "%+X"}, + {__LINE__, 0x00052403, "0336899", "%-0.7d"}, + {__LINE__, 0xffffffff, "ffffffff", "%-04.4x"}, + {__LINE__, 0x00000010, "0010", "%0.4X"}, + {__LINE__, 0xffffffb5, "FFFFFFB5", "%-1.3X"}, + {__LINE__, -0x0000001, "-1", "%d"}, + {__LINE__, 0x0003a2d1, "3a2d1", "% x"}, + {__LINE__, 0x00000424, "1060", "%0ld"}, + {__LINE__, -0x0000078, "-120", "%1d"}, + {__LINE__, 0x00000000, "0", "%ld"}, + {__LINE__, 0x00000414, "1044", "%ld"}, + {__LINE__, 0x00000072, "0x072", "%#5.3x"}, + {__LINE__, 0x0000007a, "7A", "% X"}, + {__LINE__, 0x081542a3, "135611043", "%0d"}, + {__LINE__, 0xfffb4ce6, "fffb4ce6", "%4.6x"}, + {__LINE__, 0x00002ab2, "2ab2", "%-1x"}, + {__LINE__, 0x00000000, " 0", "% 2x"}, + {__LINE__, 0xfffffa59, "FFFFFA59", "%2.X"}, + {__LINE__, 0xffffe22b, "ffffe22b", "%-x"}, + {__LINE__, 0xfffffd52, "FFFFFD52", "%+.2X"}, + {__LINE__, 0x0000039f, "927", "%-d"}, + {__LINE__, 0x0002dea6, "2dea6", "%0x"}, + {__LINE__, 0x000216db, "136923", "%ld"}, + {__LINE__, 0x00000013, "19", "%0d"}, + {__LINE__, 0x000047cc, "18380", "%2.2ld"}, + {__LINE__, -0x0007d10, "-32016", "%d"}, + {__LINE__, 0xff9af906, "FF9AF906", "%0X"}, + {__LINE__, 0x02cfa224, "+47161892", "%+0.7d"}, + {__LINE__, -0x0000022, "-34", "%1.d"}, + {__LINE__, 0xfffffff0, "FFFFFFF0", "%-4X"}, + {__LINE__, 0x00000029, " 41", "%6.ld"}, + {__LINE__, 0xffffff76, "ffffff76", "%x"}, + {__LINE__, 0x00000000, "0", "%+X"}, + {__LINE__, 0x00000001, "1", "%d"}, + {__LINE__, 0xfff6de5a, "FFF6DE5A", "%X"}, + {__LINE__, 0x00000002, "2", "%ld"}, + {__LINE__, 0x00000025, "25", "%+x"}, + {__LINE__, 0xfffffffb, "FFFFFFFB", "%5.0X"}, + {__LINE__, 0x0011bbb5, "1162165", "%0.0ld"}, + {__LINE__, 0xfffcdc96, "0XFFFCDC96", "%#X"}, + {__LINE__, 0x00008f5f, "8f5f", "%3.1x"}, + {__LINE__, 0xffa0fa5d, "0XFFA0FA5D", "%#X"}, + {__LINE__, 0x00004534, "4534", "% 0X"}, + {__LINE__, 0xfffffff9, "fffffff9", "%.2x"}, + {__LINE__, 0xffeeae50, "ffeeae50", "%-x"}, + {__LINE__, 0x00002964, " 0010596", "% 0.7d"}, + {__LINE__, 0x000021c9, " 21c9", "%6x"}, + {__LINE__, 0x00000001, " 1", "% d"}, + {__LINE__, 0x0002abd8, "+175064", "%+d"}, + {__LINE__, 0xffffffad, "FFFFFFAD", "%+0X"}, + {__LINE__, 0x00000003, "3", "%ld"}, + {__LINE__, 0x0c036da3, " 201551267", "% .3d"}, + {__LINE__, -0x004343c, "-275516", "%+ld"}, + {__LINE__, 0x00000003, "003", "% .3x"}, + {__LINE__, 0xffffe34e, "ffffe34e", "%x"}, + {__LINE__, 0x0000e118, "e118", "%x"}, + {__LINE__, -0x007d945, "-514373", "%+#0ld"}, + {__LINE__, 0x277f1cc5, "277f1cc5", "% x"}, + {__LINE__, 0x00003bef, "03bef", "% 0.5x"}, + {__LINE__, 0xfffffcb9, "fffffcb9", "%x"}, + {__LINE__, 0x0003311a, "209178", "%ld"}, + {__LINE__, 0x00000000, " ", "%3.ld"}, + {__LINE__, 0x05942225, "5942225", "%x"}, + {__LINE__, 0xfffceb4c, "FFFCEB4C", "%-X"}, + {__LINE__, 0xffd08633, "ffd08633", "%2.x"}, + {__LINE__, -0x0000001, " -1", "%6d"}, + {__LINE__, 0x000fdb12, "1039122", "%d"}, + {__LINE__, 0x00000003, "3", "% 0X"}, + {__LINE__, -0x2fd5bf1, "-50158577", "% 5.ld"}, + {__LINE__, -0x0089a03, "-563715", "%-d"}, + {__LINE__, 0xfffffffe, "FFFFFFFE", "% X"}, + {__LINE__, 0x29fdb2ba, "29fdb2ba", "% 0x"}, + {__LINE__, 0x0000008f, "8F", "% X"}, + {__LINE__, 0x00000003, "3", "%ld"}, + {__LINE__, 0xffc58445, "FFC58445", "%.2X"}, + {__LINE__, -0x00023f6, "-9206", "%+d"}, + {__LINE__, 0x00000011, "11", "%X"}, + {__LINE__, -0x0000003, "-0000003", "%-.7d"}, + {__LINE__, -0x0000003, "-3", "%#ld"}, + {__LINE__, 0x001242d9, "1242D9", "%X"}, + {__LINE__, -0x48d0c81, "-76352641", "%7.d"}, + {__LINE__, -0x001b675, "-112245", "%#ld"}, + {__LINE__, 0x00000003, "3", "%-d"}, + {__LINE__, 0xfff93fdf, "0XFFF93FDF", "% #X"}, + {__LINE__, 0x001a9414, "1741844", "%#ld"}, + {__LINE__, 0x0001fd86, "130438", "%ld"}, + {__LINE__, 0x010f37a8, "17774504", "%4.7d"}, + {__LINE__, 0x00382838, "0382838", "%3.7X"}, + {__LINE__, -0x47fd56c2, "-1207785154", "%ld"}, + {__LINE__, 0x001981dd, "1981dd", "%x"}, + {__LINE__, 0xffffefba, "ffffefba", "% 06.x"}, + {__LINE__, -0x3f402b29, "-1061169961", "%+#ld"}, + {__LINE__, -0x395aae44, "-962244164", "%-1d"}, + {__LINE__, 0x1fa39f42, "530816834", "%#d"}, + {__LINE__, -0x000358d, "-13709", "%d"}, + {__LINE__, -0xdc17b8f, "-230783887", "%ld"}, + {__LINE__, -0x23c41583, "-600053123", "%+3.d"}, + {__LINE__, 0xfffffc16, "fffffc16", "%x"}, + {__LINE__, 0x003f1364, "4133732", "%7.ld"}, + {__LINE__, 0xffffe691, "FFFFE691", "%07X"}, + {__LINE__, 0x07b31d71, "129178993", "%.7d"}, + {__LINE__, -0x0019732, "-104242", "% ld"}, + {__LINE__, 0x02428167, "0x2428167", "%#x"}, + {__LINE__, -0x06c1ecd, "-7085773", "%.7ld"}, + {__LINE__, 0xfb01cb4e, "fb01cb4e", "%x"}, + {__LINE__, 0x00005a41, "+23105", "%+ld"}, + {__LINE__, 0xfffffff4, "FFFFFFF4", "%-5.X"}, + {__LINE__, 0x00000005, " 5", "%4.ld"}, + {__LINE__, 0xf4ab4b2d, "F4AB4B2D", "%0.X"}, + {__LINE__, -0x000fce3, "-64739", "%+#3.ld"}, + {__LINE__, 0x000076ea, " 30442", "%6.2ld"}, + {__LINE__, 0x00000cb9, " cb9", "%4.x"}, + {__LINE__, 0x002f43ef, "3097583", "%1.1ld"}, + {__LINE__, 0xf5bd0105, "F5BD0105", "%+X"}, + {__LINE__, 0x0037954a, "3642698", "%d"}, + {__LINE__, 0xfffffff7, "0XFFFFFFF7", "%-#X"}, + {__LINE__, 0xffffcedf, "0xffffcedf", "%#6.7x"}, + {__LINE__, 0xfffffde4, "FFFFFDE4", "%2.4X"}, + {__LINE__, 0x01a6f103, "1a6f103", "%5.x"}, + {__LINE__, 0x00000191, " 191", "%7.0X"}, + {__LINE__, 0x00000003, "03", "% .2X"}, + {__LINE__, -0xd4e3219, "-223228441", "%6.ld"}, + {__LINE__, 0x00b0efbd, "11595709", "%d"}, + {__LINE__, -0x00000ea, "-234", "%#3d"}, + {__LINE__, 0x00000be8, "BE8 ", "%-5X"}, + {__LINE__, 0xffffffff, "ffffffff", "%5.3x"}, + {__LINE__, -0x267f8c6, "-40368326", "%d"}, + {__LINE__, 0x000006ed, "6ED", "%X"}, + {__LINE__, 0xfdd6c9b6, "FDD6C9B6", "%X"}, + {__LINE__, 0x0007ac29, "7ac29", "%-x"}, + {__LINE__, 0x00000014, "14", "%2x"}, + {__LINE__, 0x123ca563, "+305964387", "%+ld"}, + {__LINE__, 0x00000004, " 4", "%5.d"}, + {__LINE__, 0xffff877a, "ffff877a", "%x"}, + {__LINE__, -0x00003e7, "-999", "%+0.3d"}, + {__LINE__, 0x0a68ba6e, "a68ba6e", "%3.1x"}, + {__LINE__, 0xfe29c810, "FE29C810", "%+X"}, +#endif + + {__LINE__, 0x00000000, "0", "%o"}, + {__LINE__, 0000000123, "123", "%o"}, + {__LINE__, 0000123456, "0123456", "%#o"}, + {__LINE__, 0000123456, "00123456", "%#.8o"}, + {__LINE__, 0000123456, " 00123456", "%#10.8o"}, + {__LINE__, 0x00000123, "0x00123", "%#07x"}, + {__LINE__, 0x00000000, "", "%#.0d"}, + {__LINE__, 0x00000000, "", "%#.0x"}, + {__LINE__, 0x00000000, "0", "%#.0o"}, + + {__LINE__, 0x00000000, "0", "%Id"}, + {__LINE__, 0x0000000a, "10", "%Id"}, + {__LINE__, 0x000000d2, "210", "%Id"}, + {__LINE__, 0x00000c8a, "3210", "%Id"}, + {__LINE__, 0x0000a8ca, "43210", "%Id"}, + {__LINE__, 0x000849ea, "543210", "%Id"}, + {__LINE__, 0x0063d76a, "6543210", "%Id"}, + {__LINE__, 0x048ff4ea, "76543210", "%Id"}, + {__LINE__, 0x343efcea, "876543210", "%Id"}, + + {0}, +}; + +int +main(int argc, char *argv[]) +{ + int errcount = 0; + int testcount = 0; +#define BSIZE 1024 + char buffer[BSIZE]; + sprint_int_type *iptr; + for (iptr = sprint_ints; iptr->line; iptr++) { + sprintf(buffer, iptr->format_string, iptr->value); + if (strcmp(buffer, iptr->result) != 0) { + errcount++; + printf( + "Error in line %d using \"%s\". Result is \"%s\"; should be: \"%s\".\n", + iptr->line, iptr->format_string, buffer, iptr->result); + } + testcount++; + } + + if (errcount == 0) { + printf ("Encountered no errors in %d tests.\n", testcount); + return 0; + } + else { + printf ("Encountered %d errors in %d tests.\n", + errcount, testcount); + return 1; + } +} diff --git a/REORG.TODO/stdio-common/tllformat.c b/REORG.TODO/stdio-common/tllformat.c new file mode 100644 index 0000000000..b53b825836 --- /dev/null +++ b/REORG.TODO/stdio-common/tllformat.c @@ -0,0 +1,59 @@ +#include <stdio.h> +#include <string.h> + +/* The original file was tiformat.c and it has been changed for long long tests\ +. */ +typedef struct +{ + int line; + long long int value; + const char *result; + const char *format_string; +} sprint_int_type; + +sprint_int_type sprint_ints[] = +{ + {__LINE__, 0x00000000ULL, "0", "%llx"}, + {__LINE__, 0xffff00000000208bULL, "ffff00000000208b", "%llx"}, + {__LINE__, 0xffff00000000208bULL, "18446462598732849291", "%llu"}, + {__LINE__, 18446462598732849291ULL, "ffff00000000208b", "%llx"}, + {__LINE__, 18446462598732849291ULL, "18446462598732849291", "%llu"}, + {__LINE__, 18359476226655002763ULL, "fec9f65b0000208b", "%llx"}, + {__LINE__, 18359476226655002763ULL, "18359476226655002763", "%llu"}, + + {0}, +}; + +int +main (void) +{ + int errcount = 0; + int testcount = 0; +#define BSIZE 1024 + char buffer[BSIZE]; + sprint_int_type *iptr; + for (iptr = sprint_ints; iptr->line; iptr++) + { + sprintf (buffer, iptr->format_string, iptr->value); + if (strcmp (buffer, iptr->result) != 0) + { + ++errcount; + printf ("\ +Error in line %d using \"%s\". Result is \"%s\"; should be: \"%s\".\n", + iptr->line, iptr->format_string, buffer, iptr->result); + } + ++testcount; + } + + if (errcount == 0) + { + printf ("Encountered no errors in %d tests.\n", testcount); + return 0; + } + else + { + printf ("Encountered %d errors in %d tests.\n", + errcount, testcount); + return 1; + } +} diff --git a/REORG.TODO/stdio-common/tmpfile.c b/REORG.TODO/stdio-common/tmpfile.c new file mode 100644 index 0000000000..e6030be0af --- /dev/null +++ b/REORG.TODO/stdio-common/tmpfile.c @@ -0,0 +1,69 @@ +/* Open a stdio stream on an anonymous temporary file. Generic/POSIX version. + Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <fcntl.h> +#include <stdio.h> +#include <unistd.h> + +#include <iolibio.h> +#define __fdopen _IO_fdopen +#ifndef tmpfile +# define tmpfile __new_tmpfile +#endif + + +/* This returns a new stream opened on a temporary file (generated + by tmpnam). The file is opened with mode "w+b" (binary read/write). + If we couldn't generate a unique filename or the file couldn't + be opened, NULL is returned. */ +FILE * +tmpfile (void) +{ + char buf[FILENAME_MAX]; + int fd; + FILE *f; + + if (__path_search (buf, FILENAME_MAX, NULL, "tmpf", 0)) + return NULL; + int flags = 0; +#ifdef FLAGS + flags = FLAGS; +#endif + fd = __gen_tempname (buf, 0, flags, __GT_FILE); + if (fd < 0) + return NULL; + + /* Note that this relies on the Unix semantics that + a file is not really removed until it is closed. */ + (void) __unlink (buf); + + if ((f = __fdopen (fd, "w+b")) == NULL) + __close (fd); + + return f; +} + +#if !defined O_LARGEFILE || O_LARGEFILE == 0 +weak_alias (__new_tmpfile, tmpfile64) +#endif + +#ifndef FLAGS /* Not for tmpfile64. */ +# undef tmpfile +# include <shlib-compat.h> +versioned_symbol (libc, __new_tmpfile, tmpfile, GLIBC_2_1); +#endif diff --git a/REORG.TODO/stdio-common/tmpfile64.c b/REORG.TODO/stdio-common/tmpfile64.c new file mode 100644 index 0000000000..19a170f3f7 --- /dev/null +++ b/REORG.TODO/stdio-common/tmpfile64.c @@ -0,0 +1,28 @@ +/* Open a stdio stream on an anonymous, large temporary file. Generic version. + Copyright (C) 2012-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <fcntl.h> + +/* If there is no O_LARGEFILE, then the plain tmpfile definition + does the job and it gets tmpfile64 as an alias. */ + +#if defined O_LARGEFILE && O_LARGEFILE != 0 +# define FLAGS O_LARGEFILE +# define tmpfile tmpfile64 +# include <tmpfile.c> +#endif diff --git a/REORG.TODO/stdio-common/tmpnam.c b/REORG.TODO/stdio-common/tmpnam.c new file mode 100644 index 0000000000..0ecc69ca04 --- /dev/null +++ b/REORG.TODO/stdio-common/tmpnam.c @@ -0,0 +1,51 @@ +/* Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <stdio.h> +#include <string.h> + +static char tmpnam_buffer[L_tmpnam]; + +/* Generate a unique filename in P_tmpdir. + + This function is *not* thread safe! */ +char * +tmpnam (char *s) +{ + /* By using two buffers we manage to be thread safe in the case + where S != NULL. */ + char tmpbufmem[L_tmpnam]; + char *tmpbuf = s ?: tmpbufmem; + + /* In the following call we use the buffer pointed to by S if + non-NULL although we don't know the size. But we limit the size + to L_tmpnam characters in any case. */ + if (__builtin_expect (__path_search (tmpbuf, L_tmpnam, NULL, NULL, 0), + 0)) + return NULL; + + if (__glibc_unlikely (__gen_tempname (tmpbuf, 0, 0, __GT_NOCREATE))) + return NULL; + + if (s == NULL) + return (char *) memcpy (tmpnam_buffer, tmpbuf, L_tmpnam); + + return s; +} + +link_warning (tmpnam, + "the use of `tmpnam' is dangerous, better use `mkstemp'") diff --git a/REORG.TODO/stdio-common/tmpnam_r.c b/REORG.TODO/stdio-common/tmpnam_r.c new file mode 100644 index 0000000000..93de0403a4 --- /dev/null +++ b/REORG.TODO/stdio-common/tmpnam_r.c @@ -0,0 +1,37 @@ +/* Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <stdio.h> + +/* Generate a unique filename in P_tmpdir. If S is NULL return NULL. + This makes this function thread safe. */ +char * +tmpnam_r (char *s) +{ + if (s == NULL) + return NULL; + + if (__path_search (s, L_tmpnam, NULL, NULL, 0)) + return NULL; + if (__gen_tempname (s, 0, 0, __GT_NOCREATE)) + return NULL; + + return s; +} + +link_warning (tmpnam_r, + "the use of `tmpnam_r' is dangerous, better use `mkstemp'") diff --git a/REORG.TODO/stdio-common/tst-cookie.c b/REORG.TODO/stdio-common/tst-cookie.c new file mode 100644 index 0000000000..030e684562 --- /dev/null +++ b/REORG.TODO/stdio-common/tst-cookie.c @@ -0,0 +1,95 @@ +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <errno.h> + +#include <stdio.h> + + +#define THE_COOKIE ((void *) 0xdeadbeeful) + +static int errors; + + +static int cookieread_called; +static ssize_t +cookieread (void *cookie, char *buf, size_t count) +{ + printf ("`%s' called with cookie %#lx\n", __FUNCTION__, + (unsigned long int) cookie); + if (cookie != THE_COOKIE) + ++errors; + cookieread_called = 1; + return 42; +} + + +static int cookiewrite_called; +static ssize_t +cookiewrite (void *cookie, const char *buf, size_t count) +{ + printf ("`%s' called with cookie %#lx\n", __FUNCTION__, + (unsigned long int) cookie); + if (cookie != THE_COOKIE) + ++errors; + cookiewrite_called = 1; + return 43; +} + + +static int cookieseek_called; +static int +cookieseek (void *cookie, off64_t *offset, int whence) +{ + printf ("`%s' called with cookie %#lx\n", __FUNCTION__, + (unsigned long int) cookie); + if (cookie != THE_COOKIE) + ++errors; + cookieseek_called = 1; + return 44; +} + + +static int cookieclose_called; +static int +cookieclose (void *cookie) +{ + printf ("`%s' called with cookie %#lx\n", __FUNCTION__, + (unsigned long int) cookie); + if (cookie != THE_COOKIE) + ++errors; + cookieclose_called = 1; + return 45; +} + + +static int +do_test (void) +{ + cookie_io_functions_t fcts; + char buf[1]; + FILE *f; + + fcts.read = cookieread; + fcts.seek = cookieseek; + fcts.close = cookieclose; + fcts.write = cookiewrite; + + f = fopencookie (THE_COOKIE, "r+", fcts); + + fread (buf, 1, 1, f); + fwrite (buf, 1, 1, f); + fseek (f, 0, SEEK_CUR); + fclose (f); + + if (cookieread_called == 0 + || cookiewrite_called == 0 + || cookieseek_called == 0 + || cookieclose_called == 0) + ++errors; + + return errors != 0; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/tst-fdopen.c b/REORG.TODO/stdio-common/tst-fdopen.c new file mode 100644 index 0000000000..e70a0cd6a5 --- /dev/null +++ b/REORG.TODO/stdio-common/tst-fdopen.c @@ -0,0 +1,50 @@ +/* Test for fdopen bugs. */ + +#include <stdio.h> +#include <unistd.h> +#include <fcntl.h> + +#undef assert +#define assert(x) \ + if (!(x)) \ + { \ + fputs ("test failed: " #x "\n", stderr); \ + retval = 1; \ + goto the_end; \ + } + +char buffer[256]; + +int +main (int argc, char *argv[]) +{ + char *name; + FILE *fp = NULL; + int retval = 0; + int fd; + + name = tmpnam (NULL); + fp = fopen (name, "w"); + assert (fp != NULL) + fputs ("foobar and baz", fp); + fclose (fp); + fp = NULL; + + fd = open (name, O_RDONLY); + assert (fd != -1); + assert (lseek (fd, 5, SEEK_SET) == 5); + /* The file position indicator associated with the new stream is set to + the position indicated by the file offset associated with the file + descriptor. */ + fp = fdopen (fd, "r"); + assert (fp != NULL); + assert (getc (fp) == 'r'); + assert (getc (fp) == ' '); + +the_end: + if (fp != NULL) + fclose (fp); + unlink (name); + + return retval; +} diff --git a/REORG.TODO/stdio-common/tst-ferror.c b/REORG.TODO/stdio-common/tst-ferror.c new file mode 100644 index 0000000000..69592df048 --- /dev/null +++ b/REORG.TODO/stdio-common/tst-ferror.c @@ -0,0 +1,44 @@ +#include <stdio.h> + +static int +do_test (void) +{ + char buf[100]; + int result = 0; + + if (ferror (stdin) != 0) + { + fputs ("error bit set for stdin at startup\n", stdout); + result = 1; + } + if (fgets (buf, sizeof buf, stdin) != buf) + { + fputs ("fgets with existing input has problem\n", stdout); + result = 1; + } + if (ferror (stdin) != 0) + { + fputs ("error bit set for stdin after setup\n", stdout); + result = 1; + } + if (fputc ('a', stdin) != EOF) + { + fputs ("fputc to stdin does not terminate with an error\n", stdout); + result = 1; + } + if (ferror (stdin) == 0) + { + fputs ("error bit not set for stdin after fputc\n", stdout); + result = 1; + } + clearerr (stdin); + if (ferror (stdin) != 0) + { + fputs ("error bit set for stdin after clearerr\n", stdout); + result = 1; + } + return result; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/tst-ferror.input b/REORG.TODO/stdio-common/tst-ferror.input new file mode 100644 index 0000000000..484ba93ef5 --- /dev/null +++ b/REORG.TODO/stdio-common/tst-ferror.input @@ -0,0 +1 @@ +This is a test. diff --git a/REORG.TODO/stdio-common/tst-fgets.c b/REORG.TODO/stdio-common/tst-fgets.c new file mode 100644 index 0000000000..0aa9030e3a --- /dev/null +++ b/REORG.TODO/stdio-common/tst-fgets.c @@ -0,0 +1,20 @@ +/* Derived from the test case in + http://sourceware.org/bugzilla/show_bug.cgi?id=713. */ +#include <stdio.h> + +static int +do_test (void) +{ + FILE *fp = fmemopen ((char *) "hello", 5, "r"); + char buf[2]; + char *bp = fgets (buf, sizeof (buf), fp); + printf ("fgets: %s\n", bp == buf ? "OK" : "ERROR"); + int res = bp != buf; + bp = fgets_unlocked (buf, sizeof (buf), fp); + printf ("fgets_unlocked: %s\n", bp == buf ? "OK" : "ERROR"); + res |= bp != buf; + return res; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/tst-fileno.c b/REORG.TODO/stdio-common/tst-fileno.c new file mode 100644 index 0000000000..9a828f389f --- /dev/null +++ b/REORG.TODO/stdio-common/tst-fileno.c @@ -0,0 +1,40 @@ +/* Copyright (C) 1994-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> + +static int +check (const char *name, FILE *stream, int fd) +{ + int sfd = fileno (stream); + printf ("(fileno (%s) = %d) %c= %d\n", name, sfd, + sfd == fd ? '=' : '!', fd); + return sfd != fd; +} + +static int +do_test (void) +{ + return (check ("stdin", stdin, STDIN_FILENO) || + check ("stdout", stdout, STDOUT_FILENO) || + check ("stderr", stderr, STDERR_FILENO)); +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/tst-fmemopen.c b/REORG.TODO/stdio-common/tst-fmemopen.c new file mode 100644 index 0000000000..0f90f40bdb --- /dev/null +++ b/REORG.TODO/stdio-common/tst-fmemopen.c @@ -0,0 +1,165 @@ +/* basic fmemopen interface testing. + Copyright (C) 2014-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <errno.h> +#include <fcntl.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <sys/mman.h> +#include <sys/stat.h> +#include <sys/types.h> + +static char *test_file; + +static void +do_prepare (int argc, char *argv[]) +{ + /* Construct the test file name based on ARGV[0], which will be + an absolute file name in the build directory. Don't touch the + source directory, which might be read-only. */ + if (asprintf (&test_file, "%s.test", argv[0]) < 0) + { + puts ("asprintf failed\n"); + exit (EXIT_FAILURE); + } +} + +static int +do_test (void) +{ + const char blah[] = "BLAH"; + FILE *fp; + char *mmap_data; + int ch, fd; + struct stat fs; + const char *cp; + + /* setup the physical file, and use it */ + if ((fp = fopen (test_file, "w+")) == NULL) + return 1; + if (fwrite (blah, 1, strlen (blah), fp) != strlen (blah)) + { + fclose (fp); + return 2; + } + + rewind (fp); + printf ("file: "); + cp = blah; + while ((ch = getc (fp)) != EOF) + { + fputc (ch, stdout); + if (ch != *cp) + { + printf ("\ncharacter %td: '%c' instead of '%c'\n", + cp - blah, ch, *cp); + fclose (fp); + return 1; + } + ++cp; + } + fputc ('\n', stdout); + if (ferror (fp)) + { + puts ("fp: error"); + fclose (fp); + return 1; + } + if (feof (fp)) + printf ("fp: EOF\n"); + else + { + puts ("not EOF"); + fclose (fp); + return 1; + } + fclose (fp); + + /* Now, mmap the file into a buffer, and do that too */ + if ((fd = open (test_file, O_RDONLY)) == -1) + { + printf ("open (%s, O_RDONLY) failed\n", test_file); + return 3; + } + if (fstat (fd, &fs) == -1) + { + printf ("stat (%i)\n", fd); + return 4; + } + + if ((mmap_data = (char *) mmap (NULL, fs.st_size, PROT_READ, + MAP_SHARED, fd, 0)) == MAP_FAILED) + { + printf ("mmap (NULL, %zu, PROT_READ, MAP_SHARED, %i, 0) failed\n", + (size_t) fs.st_size, fd); + return 5; + } + + if ((fp = fmemopen (mmap_data, fs.st_size, "r")) == NULL) + { + printf ("fmemopen (%p, %zu) failed\n", mmap_data, (size_t) fs.st_size); + return 1; + } + + printf ("mem: "); + cp = blah; + while ((ch = getc (fp)) != EOF) + { + fputc (ch, stdout); + if (ch != *cp) + { + printf ("%td character: '%c' instead of '%c'\n", + cp - blah, ch, *cp); + fclose (fp); + return 1; + } + ++cp; + } + + fputc ('\n', stdout); + + if (ferror (fp)) + { + puts ("fp: error"); + fclose (fp); + return 1; + } + if (feof (fp)) + printf ("fp: EOF\n"); + else + { + puts ("not EOF"); + fclose (fp); + return 1; + } + + fclose (fp); + + munmap (mmap_data, fs.st_size); + + unlink (test_file); + free (test_file); + + return 0; +} + +#define PREPARE(argc, argv) do_prepare (argc, argv) +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/tst-fmemopen2.c b/REORG.TODO/stdio-common/tst-fmemopen2.c new file mode 100644 index 0000000000..891b7ca111 --- /dev/null +++ b/REORG.TODO/stdio-common/tst-fmemopen2.c @@ -0,0 +1,262 @@ +/* fmemopen tests. + Copyright (C) 2015-2017 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 + <http://www.gnu.org/licenses/>. */ + + +#include <assert.h> +#include <stdio.h> +#include <string.h> +#include <sys/types.h> +#include <stdint.h> +#include <errno.h> + +/* Check fmemopen with user provided buffer open for write. */ +static int +do_test_with_buffer (void) +{ + int result = 0; + char buf[100]; + const size_t nbuf = sizeof (buf); + + FILE *fp = fmemopen (buf, nbuf, "w"); + if (fp == NULL) + { + printf ("FAIL: fmemopen failed (%s)\n", __FUNCTION__); + return 1; + } + + /* Default write operation, check if file position is correct after it. */ + static const char str[] = "hello world"; + const size_t nstr = sizeof (str) - 1; + fputs (str, fp); + off_t o = ftello (fp); + if (o != nstr) + { + printf ("FAIL: first ftello returned %jd, expected %zu\n", + (intmax_t)o, nstr); + result = 1; + } + + /* Rewind stream and seek tests, the position size should be equal to + buffer size provided in open function. */ + rewind (fp); + o = ftello (fp); + if (o != 0) + { + printf ("FAIL: second ftello returned %jd, expected 0\n", + (intmax_t)o); + result = 1; + } + if (fseeko (fp, 0, SEEK_END) != 0) + { + printf ("FAIL: fseeko failed\n"); + result = 1; + } + o = ftello (fp); + if (o != nstr) + { + printf ("FAIL: third ftello returned %jd, expected %zu\n", + (intmax_t)o, nstr); + result = 1; + } + + /* Rewind the stream and recheck by using a shorter string. */ + rewind (fp); + static const char str2[] = "just hello"; + const size_t nstr2 = sizeof (str2) - 1; + assert (nstr2 < nstr); + fputs (str2, fp); + o = ftello (fp); + if (o != nstr2) + { + printf ("FAIL: fourth ftello returned %jd, expected %zu\n", + (intmax_t)o, nstr2); + result = 1; + } + fclose (fp); + + /* Again, but now with a larger string. */ + static const char str3[] = "just hellod"; + if (strcmp (buf, str3) != 0) + { + printf ("FAIL: final string is \"%s\", expected \"%s\"\n", + buf, str3); + result = 1; + } + return result; +} + +/* Check fmemopen without user provided buffer open for write. */ +static int +do_test_without_buffer (void) +{ + int result = 0; + const size_t nbuf = 100; + + FILE *fp = fmemopen (NULL, nbuf, "w"); + if (fp == NULL) + { + printf ("FAIL: fmemopen failed (%s)\n", __FUNCTION__); + return 1; + } + + static const char str[] = "hello world"; + const size_t nstr = sizeof (str) - 1; + + /* Default write operation, check if file position is correct after it. */ + fputs (str, fp); + off_t o = ftello (fp); + if (o != nstr) + { + printf ("FAIL: first ftello returned %jd, expected %zu\n", + (intmax_t) o, nstr); + result = 1; + } + if (fseeko (fp, 0, SEEK_END) != 0) + { + printf ("FAIL: fseeko failed\n"); + result = 1; + } + o = ftello (fp); + if (o != nstr) + { + printf ("FAIL: second ftello returned %jd, expected %zu\n", + (intmax_t) o, nbuf); + result = 1; + } + + /* Rewind the stream and recheck by using a shorter string. */ + rewind (fp); + static const char str2[] = "just hello"; + const size_t nstr2 = sizeof (str2) - 1; + assert (nstr2 < nstr); + fputs (str2, fp); + o = ftello (fp); + if (o != nstr2) + { + printf ("FAIL: third ftello returned %jd, expected %zu\n", + (intmax_t) o, nstr2); + result = 1; + } + fclose (fp); + + return result; +} + +/* Check fmemopen with a buffer lenght of zero. */ +static int +do_test_length_zero (void) +{ + int result = 0; + FILE *fp; +#define BUFCONTENTS "testing buffer" + char buf[100] = BUFCONTENTS; + const size_t nbuf = 0; + int r; + + fp = fmemopen (buf, nbuf, "r"); + if (fp == NULL) + { + printf ("FAIL: fmemopen failed (%s)\n", __FUNCTION__); + return 1; + } + + /* Reading any data on a zero-length buffer should return EOF. */ + if ((r = fgetc (fp)) != EOF) + { + printf ("FAIL: fgetc on a zero-length returned: %d\n", r); + result = 1; + } + off_t o = ftello (fp); + if (o != 0) + { + printf ("FAIL: first ftello returned %jd, expected 0\n", + (intmax_t) o); + result = 1; + } + fclose (fp); + + /* Writing any data shall start at current position and shall not pass + current buffer size beyond the size in fmemopen call. */ + fp = fmemopen (buf, nbuf, "w"); + if (fp == NULL) + { + printf ("FAIL: second fmemopen failed (%s)\n", __FUNCTION__); + return 1; + } + + static const char str[] = "hello world"; + /* Because of buffering, the fputs call itself will not fail. However the + final buffer should be not changed because length 0 was passed to the + fmemopen call. */ + fputs (str, fp); + r = 0; + errno = 0; + if (fflush (fp) != EOF) + { + printf ("FAIL: fflush did not return EOF\n"); + fclose (fp); + return 1; + } + if (errno != ENOSPC) + { + printf ("FAIL: errno is %i (expected ENOSPC)\n", errno); + fclose (fp); + return 1; + } + + fclose (fp); + + if (strcmp (buf, BUFCONTENTS) != 0) + { + printf ("FAIL: strcmp (%s, %s) failed\n", buf, BUFCONTENTS); + return 1; + } + + /* Different than 'w' mode, 'w+' truncates the buffer. */ + fp = fmemopen (buf, nbuf, "w+"); + if (fp == NULL) + { + printf ("FAIL: third fmemopen failed (%s)\n", __FUNCTION__); + return 1; + } + + fclose (fp); + + if (strcmp (buf, "") != 0) + { + printf ("FAIL: strcmp (%s, \"\") failed\n", buf); + return 1; + } + + return result; +} + +static int +do_test (void) +{ + int ret = 0; + + ret += do_test_with_buffer (); + ret += do_test_without_buffer (); + ret += do_test_length_zero (); + + return ret; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/tst-fmemopen3.c b/REORG.TODO/stdio-common/tst-fmemopen3.c new file mode 100644 index 0000000000..f38b288137 --- /dev/null +++ b/REORG.TODO/stdio-common/tst-fmemopen3.c @@ -0,0 +1,322 @@ +/* fmemopen tests for append and read mode. + Copyright (C) 2015-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <assert.h> +#include <stdio.h> +#include <string.h> +#include <sys/types.h> + +static void +print_buffer (const char *s, size_t n) +{ + size_t i; + printf ("{"); + for (i=0; i<n; ++i) + { + printf ("0x%02X (%c)", s[i], s[i]); + if (i != n) + printf (", "); + } +} + +/* This test check append mode initial position (a/a+) based on POSIX defition + (BZ#6544 and BZ#13151). */ +static int +do_test_write_append (const char *mode) +{ + char buf[32] = "testing buffer"; + char exp[32] = "testing bufferXX"; + + FILE *fp = fmemopen (buf, sizeof (buf), mode); + + fflush (fp); + fprintf (fp, "X"); + fseek (fp, 0, SEEK_SET); + fprintf (fp, "X"); + fclose (fp); + + if (strcmp (buf, exp) != 0) + { + printf ("%s: check failed: %s != %s\n", __FUNCTION__, buf, exp); + return 1; + } + + return 0; +} + +/* This test check append mode initial position (a/a+) based on POSIX defition + (BZ#6544 and BZ#13151) for buffer without null byte end. */ +static int +do_test_write_append_without_null (const char *mode) +{ + char buf[] = { 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55 }; + char exp[] = { 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55 }; + + /* If '\0' is not found in buffer, POSIX states that SEEK_SET should be + the size argument. */ + FILE *fp = fmemopen (buf, sizeof (buf) - 2, "a"); + + fflush (fp); + fputc (0x70, fp); + fseek (fp, 0, SEEK_SET); + fputc (0x70, fp); + fputc (0x70, fp); + fclose (fp); + + /* POSIX also states that a write operation on the stream shall not advance + the current buffer size beyond the size given in fmemopen, so the string + should be same. */ + if (memcmp (buf, exp, sizeof (buf)) != 0) + { + printf ("%s: check failed: ", __FUNCTION__); + print_buffer (buf, sizeof (buf)); + printf ("!= "); + print_buffer (exp, sizeof (exp)); + printf ("\n"); + return 1; + } + + return 0; +} + +/* This test check for initial position and feek value for fmemopen objects + opened with append mode. */ +static int +do_test_read_append (void) +{ + char buf[32] = "testing buffer"; + size_t buflen = strlen (buf); + long fpos; + + /* POSIX defines for 'a+' the initial position is the first null byte. */ + FILE *fp = fmemopen (buf, sizeof (buf), "a+"); + + fpos = ftell (fp); + if (fpos != buflen) + { + printf ("%s: ftell|SEEK_SET (fp) %li != strlen (%s) %zu\n", + __FUNCTION__, fpos, buf, buflen); + fclose (fp); + return 1; + } + + fseek (fp, 0, SEEK_END); + + if (fpos != buflen) + { + printf ("%s: ftell|SEEK_END (fp) %li != strlen (%s) %zu\n", + __FUNCTION__, fpos, buf, buflen); + fclose (fp); + return 1; + } + fclose (fp); + + /* Check if attempting to read past the current size, defined as strlen (buf) + yield an EOF. */ + fp = fmemopen (buf, sizeof (buf), "a+"); + if (getc(fp) != EOF) + { + printf ("%s: getc(fp) != EOF\n", __FUNCTION__); + fclose (fp); + return -1; + } + + fclose (fp); + + return 0; +} + +/* This test check for fseek (SEEK_END) using negative offsets (BZ#14292). The + starting position of descriptor is different base on the opening mode. */ +static int +do_test_read_seek_neg (const char *mode, const char *expected) +{ + char buf[] = "abcdefghijklmnopqrstuvxz0123456789"; + char tmp[10]; + size_t tmps = sizeof (tmps); + long offset = -11; + + FILE *fp = fmemopen (buf, sizeof (buf), mode); + fseek (fp, offset, SEEK_END); + fread (tmp, tmps, 1, fp); + + if (memcmp (tmp, expected, tmps) != 0) + { + printf ("%s: fmemopen(%s) - fseek (fp, %li, SEEK_END):\n", + __FUNCTION__, mode, offset); + printf (" returned: "); + print_buffer (tmp, tmps); + printf ("\n"); + printf (" expected: "); + print_buffer (expected, tmps); + printf ("\n"); + return 1; + } + + fclose (fp); + + return 0; +} + +static int +do_test_read_seek_negative (void) +{ + int ret = 0; + + /* 'r' and 'w' modes defines the initial position at the buffer start and + seek with SEEK_END shall seek relative to its size give in fmemopen + call. The expected tmp result is 0 to 9 *without* the ending null */ + ret += do_test_read_seek_neg ("r", "0123456789"); + /* 'a+' mode sets the initial position at the first null byte in buffer and + SEEK_END shall seek relative to its size as well. The expected result is + z012345678, since SEEK_END plus a+ start at '\0', not size. */ + ret += do_test_read_seek_neg ("a+", "z012345678"); + + return ret; +} + +static int +do_test_write_append_2 (const char *str) +{ + char buf[10]; + size_t strn = strlen (str); + strcpy (buf, str); + + FILE *fp = fmemopen (buf, sizeof (buf), "a+"); + size_t r = ftell (fp); + size_t e = strlen (buf); + if (r != e) + { + printf ("%s: ftell returned %zu, expected %zu\n", __FUNCTION__, r, e); + return 1; + } + + if (fseek (fp, 0, SEEK_SET) == -1) + { + printf ("%s: fseek returned -1\n", __FUNCTION__); + return 1; + } + + int gr; + for (int i=0; i<strn; ++i) + { + if ((gr = getc (fp)) != str[i]) + { + printf ("%s: getc failed returned %d, expected %d\n", __FUNCTION__, + gr, str[i]); + return 1; + } + } + if ((gr = getc (fp)) != EOF) + { + printf ("%s: getc failed returned %d, expected EOF\n", __FUNCTION__, + gr); + return 1; + } + + if (fseek (fp, e+1, SEEK_SET) == -1) + { + printf ("%s: fseek returned -1\n", __FUNCTION__); + return 1; + } + + if ((r = ftell (fp)) != e+1) + { + printf ("%s: ftell returned %zu, expected %zu\n", __FUNCTION__, r, e+1); + return 1; + } + + if ((gr = getc (fp)) != EOF) + { + printf ("%s: getc failed returned %i\n", __FUNCTION__, gr); + return 1; + } + + /* Check if internal position is not changed with a getc returning EOF. */ + if ((r = ftell (fp)) != e+1) + { + printf ("%s: ftell returned %zu, expected %zu\n", __FUNCTION__, r, e+1); + return 1; + } + + if (fseek (fp, 0, SEEK_CUR) == -1) + { + printf ("%s: fseek returned -1\n", __FUNCTION__); + return 1; + } + + /* This should be overwritten by fprintf + fflush. */ + buf[e+2] = 'X'; + + if ((r = fprintf (fp, "%d", 101)) != 3) + { + printf ("%s: fprintf returned %zu, expected %d\n", __FUNCTION__, r, 3); + return 1; + } + + fflush (fp); + + /* Check if internal position is changed by 3 (strlen of '101'). */ + if ((r = ftell (fp)) != e+3) + { + printf ("%s: ftell returned %zu, expected %zu\n", __FUNCTION__, r, e+3); + return 1; + } + + char exp[20]; + sprintf (exp, "%s%d", str, 101); + if (memcmp (buf, exp, strlen (exp)) != 0) + { + printf ("%s: check failed:", __FUNCTION__); + printf ("\nexpected: "); + print_buffer (buf, sizeof (buf)); + printf ("\nbuffer: "); + print_buffer (exp, sizeof (exp)); + printf ("\n"); + return 1; + } + + fclose(fp); + + return 0; +} + +static int +do_test (void) +{ + int ret = 0; + + ret += do_test_write_append ("a"); + ret += do_test_write_append_without_null ("a"); + ret += do_test_write_append ("a+"); + ret += do_test_write_append_without_null ("a+"); + + ret += do_test_read_append (); + + ret += do_test_read_seek_negative (); + + /* First test plus addend will fit in the define buffer of size 10. */ + ret += do_test_write_append_2 ("test"); + /* The second test will also fit, but not the final '\0'. */ + ret += do_test_write_append_2 ("testing"); + + return ret; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/tst-fmemopen4.c b/REORG.TODO/stdio-common/tst-fmemopen4.c new file mode 100644 index 0000000000..a25c8c0c17 --- /dev/null +++ b/REORG.TODO/stdio-common/tst-fmemopen4.c @@ -0,0 +1,71 @@ +/* fmemopen tests for BZ#1930 and BZ#20005. + Copyright (C) 2016-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <assert.h> +#include <stdio.h> +#include <string.h> +#include <sys/types.h> + + +/* Check if fflush does not reset the file position. */ +static int +do_test (void) +{ + char buffer[500] = "x"; + + FILE *stream = fmemopen (buffer, sizeof (buffer), "r+"); + if (stream == NULL) + { + printf ("error: fmemopen could not open stream\n"); + return 1; + } + + const char test[] = "test"; + + size_t r = fwrite (test, sizeof (char), sizeof (test), stream); + if (r != sizeof (test)) + { + printf ("error: fwrite returned %zu, expected %zu\n", r, sizeof(test)); + return 1; + } + + r = ftell (stream); + if (r != sizeof (test)) + { + printf ("error: ftell return %zu, expected %zu\n", r, sizeof(test)); + return 1; + } + + if (fflush (stream) != 0) + { + printf ("error: fflush failed\n"); + return 1; + } + + r = ftell (stream); + if (r != sizeof (test)) + { + printf ("error: ftell return %zu, expected %zu\n", r, sizeof(test)); + return 1; + } + + return 0; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/tst-fphex-wide.c b/REORG.TODO/stdio-common/tst-fphex-wide.c new file mode 100644 index 0000000000..ff63c1dac7 --- /dev/null +++ b/REORG.TODO/stdio-common/tst-fphex-wide.c @@ -0,0 +1,24 @@ +/* Test program for %a wprintf formats. + This file is part of the GNU C Library. + Copyright (C) 2012-2017 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 WIDE 1 + +#include "tst-fphex.c" diff --git a/REORG.TODO/stdio-common/tst-fphex.c b/REORG.TODO/stdio-common/tst-fphex.c new file mode 100644 index 0000000000..c2e8961d62 --- /dev/null +++ b/REORG.TODO/stdio-common/tst-fphex.c @@ -0,0 +1,72 @@ +/* Test program for %a printf formats. */ + +#include <stdio.h> +#include <string.h> + +#ifndef WIDE +# define STR_LEN strlen +# define STR_CMP strcmp +# define SPRINT snprintf +# define CHAR_T char +# define PRINT printf +# define L_(Str) Str +# define S "%s" +#else +# 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 S "%ls" +#endif + +struct testcase +{ + double value; + const CHAR_T *fmt; + const CHAR_T *expect; +}; + +static const struct testcase testcases[] = + { + { 0x0.0030p+0, L_("%a"), L_("0x1.8p-11") }, + { 0x0.0040p+0, L_("%a"), L_("0x1p-10") }, + { 0x0.0030p+0, L_("%040a"), L_("0x00000000000000000000000000000001.8p-11") }, + { 0x0.0040p+0, L_("%040a"), L_("0x0000000000000000000000000000000001p-10") }, + { 0x0.0040p+0, L_("%40a"), L_(" 0x1p-10") }, + { 0x0.0040p+0, L_("%#40a"), L_(" 0x1.p-10") }, + { 0x0.0040p+0, L_("%-40a"), L_("0x1p-10 ") }, + { 0x0.0040p+0, L_("%#-40a"), L_("0x1.p-10 ") }, + { 0x0.0030p+0, L_("%040e"), L_("00000000000000000000000000007.324219e-04") }, + { 0x0.0040p+0, L_("%040e"), L_("00000000000000000000000000009.765625e-04") }, + }; + + +static int +do_test (void) +{ + const struct testcase *t; + int result = 0; + + for (t = testcases; + t < &testcases[sizeof testcases / sizeof testcases[0]]; + ++t) + { + CHAR_T buf[1024]; + int n = SPRINT (buf, sizeof buf / sizeof (buf[0]), t->fmt, t->value); + if (n != STR_LEN (t->expect) || STR_CMP (buf, t->expect) != 0) + { + PRINT (L_("" S "\tExpected \"" S "\" (%Zu)\n\tGot \"" + S "\" (%d, %Zu)\n"), + t->fmt, t->expect, STR_LEN (t->expect), + buf, n, STR_LEN (buf)); + result = 1; + } + } + + return result; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/tst-fseek.c b/REORG.TODO/stdio-common/tst-fseek.c new file mode 100644 index 0000000000..92fe06f6d4 --- /dev/null +++ b/REORG.TODO/stdio-common/tst-fseek.c @@ -0,0 +1,482 @@ +/* Tests of fseek and fseeko. + Copyright (C) 2000-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@redhat.com>, 2000. + + 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 <error.h> +#include <errno.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <time.h> +#include <sys/stat.h> + + +static int +do_test (void) +{ + const char *tmpdir; + char *fname; + int fd; + FILE *fp; + const char outstr[] = "hello world!\n"; + char strbuf[sizeof outstr]; + char buf[200]; + struct stat64 st1; + struct stat64 st2; + int result = 0; + + tmpdir = getenv ("TMPDIR"); + if (tmpdir == NULL || tmpdir[0] == '\0') + tmpdir = "/tmp"; + + asprintf (&fname, "%s/tst-fseek.XXXXXX", tmpdir); + if (fname == NULL) + error (EXIT_FAILURE, errno, "cannot generate name for temporary file"); + + /* Create a temporary file. */ + fd = mkstemp (fname); + if (fd == -1) + error (EXIT_FAILURE, errno, "cannot open temporary file"); + + fp = fdopen (fd, "w+"); + if (fp == NULL) + error (EXIT_FAILURE, errno, "cannot get FILE for temporary file"); + + setbuffer (fp, strbuf, sizeof (outstr) -1); + + if (fwrite (outstr, sizeof (outstr) - 1, 1, fp) != 1) + { + printf ("%d: write error\n", __LINE__); + result = 1; + goto out; + } + + /* The EOF flag must be reset. */ + if (fgetc (fp) != EOF) + { + printf ("%d: managed to read at end of file\n", __LINE__); + result = 1; + } + else if (! feof (fp)) + { + printf ("%d: EOF flag not set\n", __LINE__); + result = 1; + } + if (fseek (fp, 0, SEEK_CUR) != 0) + { + printf ("%d: fseek(fp, 0, SEEK_CUR) failed\n", __LINE__); + result = 1; + } + else if (feof (fp)) + { + printf ("%d: fseek() didn't reset EOF flag\n", __LINE__); + result = 1; + } + + /* Do the same for fseeko(). */ + if (fgetc (fp) != EOF) + { + printf ("%d: managed to read at end of file\n", __LINE__); + result = 1; + } + else if (! feof (fp)) + { + printf ("%d: EOF flag not set\n", __LINE__); + result = 1; + } + if (fseeko (fp, 0, SEEK_CUR) != 0) + { + printf ("%d: fseek(fp, 0, SEEK_CUR) failed\n", __LINE__); + result = 1; + } + else if (feof (fp)) + { + printf ("%d: fseek() didn't reset EOF flag\n", __LINE__); + result = 1; + } + + /* Go back to the beginning of the file: absolute. */ + if (fseek (fp, 0, SEEK_SET) != 0) + { + printf ("%d: fseek(fp, 0, SEEK_SET) failed\n", __LINE__); + result = 1; + } + else if (fflush (fp) != 0) + { + printf ("%d: fflush() failed\n", __LINE__); + result = 1; + } + else if (lseek (fd, 0, SEEK_CUR) != 0) + { + printf ("%d: lseek() returned different position\n", __LINE__); + result = 1; + } + else if (fread (buf, sizeof (outstr) - 1, 1, fp) != 1) + { + printf ("%d: fread() failed\n", __LINE__); + result = 1; + } + else if (memcmp (buf, outstr, sizeof (outstr) - 1) != 0) + { + printf ("%d: content after fseek(,,SEEK_SET) wrong\n", __LINE__); + result = 1; + } + + /* Now with fseeko. */ + if (fseeko (fp, 0, SEEK_SET) != 0) + { + printf ("%d: fseeko(fp, 0, SEEK_SET) failed\n", __LINE__); + result = 1; + } + else if (fflush (fp) != 0) + { + printf ("%d: fflush() failed\n", __LINE__); + result = 1; + } + else if (lseek (fd, 0, SEEK_CUR) != 0) + { + printf ("%d: lseek() returned different position\n", __LINE__); + result = 1; + } + else if (fread (buf, sizeof (outstr) - 1, 1, fp) != 1) + { + printf ("%d: fread() failed\n", __LINE__); + result = 1; + } + else if (memcmp (buf, outstr, sizeof (outstr) - 1) != 0) + { + printf ("%d: content after fseeko(,,SEEK_SET) wrong\n", __LINE__); + result = 1; + } + + /* Go back to the beginning of the file: relative. */ + if (fseek (fp, -((int) sizeof (outstr) - 1), SEEK_CUR) != 0) + { + printf ("%d: fseek(fp, 0, SEEK_SET) failed\n", __LINE__); + result = 1; + } + else if (fflush (fp) != 0) + { + printf ("%d: fflush() failed\n", __LINE__); + result = 1; + } + else if (lseek (fd, 0, SEEK_CUR) != 0) + { + printf ("%d: lseek() returned different position\n", __LINE__); + result = 1; + } + else if (fread (buf, sizeof (outstr) - 1, 1, fp) != 1) + { + printf ("%d: fread() failed\n", __LINE__); + result = 1; + } + else if (memcmp (buf, outstr, sizeof (outstr) - 1) != 0) + { + printf ("%d: content after fseek(,,SEEK_SET) wrong\n", __LINE__); + result = 1; + } + + /* Now with fseeko. */ + if (fseeko (fp, -((int) sizeof (outstr) - 1), SEEK_CUR) != 0) + { + printf ("%d: fseeko(fp, 0, SEEK_SET) failed\n", __LINE__); + result = 1; + } + else if (fflush (fp) != 0) + { + printf ("%d: fflush() failed\n", __LINE__); + result = 1; + } + else if (lseek (fd, 0, SEEK_CUR) != 0) + { + printf ("%d: lseek() returned different position\n", __LINE__); + result = 1; + } + else if (fread (buf, sizeof (outstr) - 1, 1, fp) != 1) + { + printf ("%d: fread() failed\n", __LINE__); + result = 1; + } + else if (memcmp (buf, outstr, sizeof (outstr) - 1) != 0) + { + printf ("%d: content after fseeko(,,SEEK_SET) wrong\n", __LINE__); + result = 1; + } + + /* Go back to the beginning of the file: from the end. */ + if (fseek (fp, -((int) sizeof (outstr) - 1), SEEK_END) != 0) + { + printf ("%d: fseek(fp, 0, SEEK_SET) failed\n", __LINE__); + result = 1; + } + else if (fflush (fp) != 0) + { + printf ("%d: fflush() failed\n", __LINE__); + result = 1; + } + else if (lseek (fd, 0, SEEK_CUR) != 0) + { + printf ("%d: lseek() returned different position\n", __LINE__); + result = 1; + } + else if (fread (buf, sizeof (outstr) - 1, 1, fp) != 1) + { + printf ("%d: fread() failed\n", __LINE__); + result = 1; + } + else if (memcmp (buf, outstr, sizeof (outstr) - 1) != 0) + { + printf ("%d: content after fseek(,,SEEK_SET) wrong\n", __LINE__); + result = 1; + } + + /* Now with fseeko. */ + if (fseeko (fp, -((int) sizeof (outstr) - 1), SEEK_END) != 0) + { + printf ("%d: fseeko(fp, 0, SEEK_SET) failed\n", __LINE__); + result = 1; + } + else if (fflush (fp) != 0) + { + printf ("%d: fflush() failed\n", __LINE__); + result = 1; + } + else if (lseek (fd, 0, SEEK_CUR) != 0) + { + printf ("%d: lseek() returned different position\n", __LINE__); + result = 1; + } + else if (fread (buf, sizeof (outstr) - 1, 1, fp) != 1) + { + printf ("%d: fread() failed\n", __LINE__); + result = 1; + } + else if (memcmp (buf, outstr, sizeof (outstr) - 1) != 0) + { + printf ("%d: content after fseeko(,,SEEK_SET) wrong\n", __LINE__); + result = 1; + } + + if (fwrite (outstr, sizeof (outstr) - 1, 1, fp) != 1) + { + printf ("%d: write error 2\n", __LINE__); + result = 1; + goto out; + } + + if (fwrite (outstr, sizeof (outstr) - 1, 1, fp) != 1) + { + printf ("%d: write error 3\n", __LINE__); + result = 1; + goto out; + } + + if (fwrite (outstr, sizeof (outstr) - 1, 1, fp) != 1) + { + printf ("%d: write error 4\n", __LINE__); + result = 1; + goto out; + } + + if (fwrite (outstr, sizeof (outstr) - 1, 1, fp) != 1) + { + printf ("%d: write error 5\n", __LINE__); + result = 1; + goto out; + } + + if (fputc ('1', fp) == EOF || fputc ('2', fp) == EOF) + { + printf ("%d: cannot add characters at the end\n", __LINE__); + result = 1; + goto out; + } + + /* Check the access time. */ + if (fstat64 (fd, &st1) < 0) + { + printf ("%d: fstat64() before fseeko() failed\n\n", __LINE__); + result = 1; + } + else + { + sleep (1); + + if (fseek (fp, -(2 + 2 * (sizeof (outstr) - 1)), SEEK_CUR) != 0) + { + printf ("%d: fseek() after write characters failed\n", __LINE__); + result = 1; + goto out; + } + else + { + + time_t t; + /* Make sure the timestamp actually can be different. */ + sleep (1); + t = time (NULL); + + if (fstat64 (fd, &st2) < 0) + { + printf ("%d: fstat64() after fseeko() failed\n\n", __LINE__); + result = 1; + } + if (st1.st_ctime >= t) + { + printf ("%d: st_ctime not updated\n", __LINE__); + result = 1; + } + if (st1.st_mtime >= t) + { + printf ("%d: st_mtime not updated\n", __LINE__); + result = 1; + } + if (st1.st_ctime >= st2.st_ctime) + { + printf ("%d: st_ctime not changed\n", __LINE__); + result = 1; + } + if (st1.st_mtime >= st2.st_mtime) + { + printf ("%d: st_mtime not changed\n", __LINE__); + result = 1; + } + } + } + + if (fread (buf, 1, 2 + 2 * (sizeof (outstr) - 1), fp) + != 2 + 2 * (sizeof (outstr) - 1)) + { + printf ("%d: reading 2 records plus bits failed\n", __LINE__); + result = 1; + } + else if (memcmp (buf, outstr, sizeof (outstr) - 1) != 0 + || memcmp (&buf[sizeof (outstr) - 1], outstr, + sizeof (outstr) - 1) != 0 + || buf[2 * (sizeof (outstr) - 1)] != '1' + || buf[2 * (sizeof (outstr) - 1) + 1] != '2') + { + printf ("%d: reading records failed\n", __LINE__); + result = 1; + } + else if (ungetc ('9', fp) == EOF) + { + printf ("%d: ungetc() failed\n", __LINE__); + result = 1; + } + else if (fseek (fp, -(2 + 2 * (sizeof (outstr) - 1)), SEEK_END) != 0) + { + printf ("%d: fseek after ungetc failed\n", __LINE__); + result = 1; + } + else if (fread (buf, 1, 2 + 2 * (sizeof (outstr) - 1), fp) + != 2 + 2 * (sizeof (outstr) - 1)) + { + printf ("%d: reading 2 records plus bits failed\n", __LINE__); + result = 1; + } + else if (memcmp (buf, outstr, sizeof (outstr) - 1) != 0 + || memcmp (&buf[sizeof (outstr) - 1], outstr, + sizeof (outstr) - 1) != 0 + || buf[2 * (sizeof (outstr) - 1)] != '1') + { + printf ("%d: reading records for the second time failed\n", __LINE__); + result = 1; + } + else if (buf[2 * (sizeof (outstr) - 1) + 1] == '9') + { + printf ("%d: unget character not ignored\n", __LINE__); + result = 1; + } + else if (buf[2 * (sizeof (outstr) - 1) + 1] != '2') + { + printf ("%d: unget somehow changed character\n", __LINE__); + result = 1; + } + + fclose (fp); + + fp = fopen (fname, "r"); + if (fp == NULL) + { + printf ("%d: fopen() failed\n\n", __LINE__); + result = 1; + } + else if (fstat64 (fileno (fp), &st1) < 0) + { + printf ("%d: fstat64() before fseeko() failed\n\n", __LINE__); + result = 1; + } + else if (fseeko (fp, 0, SEEK_END) != 0) + { + printf ("%d: fseeko(fp, 0, SEEK_END) failed\n", __LINE__); + result = 1; + } + else if (ftello (fp) != st1.st_size) + { + printf ("%d: fstat64 st_size %zd ftello %zd\n", __LINE__, + (size_t) st1.st_size, (size_t) ftello (fp)); + result = 1; + } + else + printf ("%d: SEEK_END works\n", __LINE__); + if (fp != NULL) + fclose (fp); + + fp = fopen (fname, "r"); + if (fp == NULL) + { + printf ("%d: fopen() failed\n\n", __LINE__); + result = 1; + } + else if (fstat64 (fileno (fp), &st1) < 0) + { + printf ("%d: fstat64() before fgetc() failed\n\n", __LINE__); + result = 1; + } + else if (fgetc (fp) == EOF) + { + printf ("%d: fgetc() before fseeko() failed\n\n", __LINE__); + result = 1; + } + else if (fseeko (fp, 0, SEEK_END) != 0) + { + printf ("%d: fseeko(fp, 0, SEEK_END) failed\n", __LINE__); + result = 1; + } + else if (ftello (fp) != st1.st_size) + { + printf ("%d: fstat64 st_size %zd ftello %zd\n", __LINE__, + (size_t) st1.st_size, (size_t) ftello (fp)); + result = 1; + } + else + printf ("%d: SEEK_END works\n", __LINE__); + if (fp != NULL) + fclose (fp); + + out: + unlink (fname); + + return result; +} + +#define TIMEOUT 3 +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/tst-fwrite.c b/REORG.TODO/stdio-common/tst-fwrite.c new file mode 100644 index 0000000000..2986c8932a --- /dev/null +++ b/REORG.TODO/stdio-common/tst-fwrite.c @@ -0,0 +1,70 @@ +/* Derived from the test case in + http://sourceware.org/bugzilla/show_bug.cgi?id=1078. */ +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> + +#define OUT_SIZE 10000 + + +static int fd; + +static void prepare (void); +#define PREPARE(argc, argv) prepare () + +static int do_test (void); +#define TEST_FUNCTION do_test () + +#include "../test-skeleton.c" + + +static void +prepare (void) +{ + fd = create_temp_file ("tst-fwrite.", NULL); + if (fd == -1) + { + puts ("cannot create temporary file"); + exit (1); + } +} + + +static int +do_test (void) +{ + FILE* f = fdopen (fd, "w+"); + if (f == NULL) { + puts ("cannot create stream"); + return 1; + } + puts ("Opened temp file"); + + if (fwrite ("a", 1, 1, f) != 1) + { + puts ("1st fwrite failed"); + return 1; + } + puts ("Wrote a byte"); + fflush (f); + + char buffer[10000]; + size_t i = fread (buffer, 1, sizeof (buffer), f); + printf ("Read %zu bytes\n", i); + + for (i = 0; i < OUT_SIZE; i++) + { + if (fwrite ("n", 1, 1, f) != 1) + { + printf ("fwrite in loop round %zu failed\n", i); + return 1; + } + + if ((i + 1) % 1000 == 0) + printf ("wrote %zu bytes ...\n", i + 1); + } + + printf ("Wrote %i bytes [done]\n", OUT_SIZE); + + return 0; +} diff --git a/REORG.TODO/stdio-common/tst-gets.c b/REORG.TODO/stdio-common/tst-gets.c new file mode 100644 index 0000000000..9340c76f8a --- /dev/null +++ b/REORG.TODO/stdio-common/tst-gets.c @@ -0,0 +1,71 @@ +/* Tests for gets. + Copyright (C) 2001-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@redhat.com>, 2001. + + 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/>. */ + +/* This file tests gets. Force it to be declared. */ +#include <features.h> +#undef __GLIBC_USE_DEPRECATED_GETS +#define __GLIBC_USE_DEPRECATED_GETS 1 + +#include <stdio.h> +#include <string.h> + + +static int +do_test (void) +{ + char buf[100]; + int result = 0; + + if (gets (buf) != buf) + { + printf ("gets: read error: %m\n"); + result = 1; + } + else if (strchr (buf, '\n') != NULL) + { + printf ("newline not stripped: \"%s\"\n", buf); + result = 1; + } + else if (strcmp (buf, "foo") != 0) + { + printf ("read mismatch: expected \"%s\", got \"%s\"\n", "foo", buf); + result = 1; + } + + if (gets (buf) != buf) + { + printf ("gets: read error: %m\n"); + result = 1; + } + else if (strchr (buf, '\n') != NULL) + { + printf ("newline not stripped: \"%s\"\n", buf); + result = 1; + } + else if (strcmp (buf, "bar") != 0) + { + printf ("read mismatch: expected \"%s\", got \"%s\"\n", "bar", buf); + result = 1; + } + + return result; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/tst-gets.input b/REORG.TODO/stdio-common/tst-gets.input new file mode 100644 index 0000000000..3bd1f0e297 --- /dev/null +++ b/REORG.TODO/stdio-common/tst-gets.input @@ -0,0 +1,2 @@ +foo +bar diff --git a/REORG.TODO/stdio-common/tst-grouping.c b/REORG.TODO/stdio-common/tst-grouping.c new file mode 100644 index 0000000000..e8f4b8c4db --- /dev/null +++ b/REORG.TODO/stdio-common/tst-grouping.c @@ -0,0 +1,83 @@ +/* BZ 12394, test by Bruno Haible. */ +#include <locale.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + + +static int +do_test (void) +{ + char buf1[1000]; + char buf2[1000]; + int result = 0; + + if (setlocale (LC_NUMERIC, "de_DE.UTF-8") == NULL) + return 1; + + sprintf (buf1, "%'.2f", 999.996); + sprintf (buf2, "%'.2f", 1000.004); + printf ("%d: \"%s\" vs \"%s\"\n", __LINE__, buf1, buf2); + if (strcmp (buf1, buf2) != 0) + result |= 2; + + sprintf (buf1, "%'.2f", 999999.996); + sprintf (buf2, "%'.2f", 1000000.004); + printf ("%d: \"%s\" vs \"%s\"\n", __LINE__, buf1, buf2); + if (strcmp (buf1, buf2) != 0) + result |= 2; + + sprintf (buf1, "%'.2f", 999999999.996); + sprintf (buf2, "%'.2f", 1000000000.004); + printf ("%d: \"%s\" vs \"%s\"\n", __LINE__, buf1, buf2); + if (strcmp (buf1, buf2) != 0) + result |= 2; + + sprintf (buf1, "%'.2f", 999999999999.996); + sprintf (buf2, "%'.2f", 1000000000000.004); + printf ("%d: \"%s\" vs \"%s\"\n", __LINE__, buf1, buf2); + if (strcmp (buf1, buf2) != 0) + result |= 2; + + sprintf (buf1, "%'.2f", 999999999999999.996); + sprintf (buf2, "%'.2f", 1000000000000000.004); + printf ("%d: \"%s\" vs \"%s\"\n", __LINE__, buf1, buf2); + if (strcmp (buf1, buf2) != 0) + result |= 2; + + sprintf (buf1, "%'.5g", 999.996); + sprintf (buf2, "%'.5g", 1000.004); + printf ("%d: \"%s\" vs \"%s\"\n", __LINE__, buf1, buf2); + if (strcmp (buf1, buf2) != 0) + result |= 4; + + sprintf (buf1, "%'.4g", 9999.996); + sprintf (buf2, "%'.4g", 10000.004); + printf ("%d: \"%s\" vs \"%s\"\n", __LINE__, buf1, buf2); + if (strcmp (buf1, buf2) != 0) + result |= 8; + + sprintf (buf1, "%'.5g", 99999.996); + sprintf (buf2, "%'.5g", 100000.004); + printf ("%d: \"%s\" vs \"%s\"\n", __LINE__, buf1, buf2); + if (strcmp (buf1, buf2) != 0) + result |= 8; + + sprintf (buf1, "%'.6g", 999999.996); + sprintf (buf2, "%'.6g", 1000000.004); + printf ("%d: \"%s\" vs \"%s\"\n", __LINE__, buf1, buf2); + if (strcmp (buf1, buf2) != 0) + result |= 8; + + sprintf (buf1, "%'.7g", 9999999.996); + sprintf (buf2, "%'.7g", 10000000.004); + printf ("%d: \"%s\" vs \"%s\"\n", __LINE__, buf1, buf2); + if (strcmp (buf1, buf2) != 0) + result |= 8; + + return result; +} + + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/tst-long-dbl-fphex.c b/REORG.TODO/stdio-common/tst-long-dbl-fphex.c new file mode 100644 index 0000000000..1170c74c4c --- /dev/null +++ b/REORG.TODO/stdio-common/tst-long-dbl-fphex.c @@ -0,0 +1,53 @@ +/* This file is part of the GNU C Library. + Copyright (C) 2012-2017 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> + +/* Prototype for our test function. */ +static int do_test (void); + +static int +do_test (void) +{ +#ifndef NO_LONG_DOUBLE + int result = 0; + const long double x = 24.5; + wchar_t a[16]; + swprintf (a, sizeof a / sizeof a[0], L"%La\n", x); + wchar_t A[16]; + swprintf (A, sizeof A / sizeof A[0], L"%LA\n", x); + + /* Here wprintf can return four valid variants. We must accept all + of them. */ + result |= (wmemcmp (a, L"0xc.4p+1", 8) == 0 + && wmemcmp (A, L"0XC.4P+1", 8) == 0); + result |= (wmemcmp (a, L"0x3.1p+3", 8) == 0 + && wmemcmp (A, L"0X3.1P+3", 8) == 0); + result |= (wmemcmp (a, L"0x6.2p+2", 8) == 0 + && wmemcmp (A, L"0X6.2P+2", 8) == 0); + result |= (wmemcmp (a, L"0x1.88p+4", 8) == 0 + && wmemcmp (A, L"0X1.88P+4", 8) == 0); + + return result != 1; +#else + return 0; +#endif +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/tst-obprintf.c b/REORG.TODO/stdio-common/tst-obprintf.c new file mode 100644 index 0000000000..51515932ad --- /dev/null +++ b/REORG.TODO/stdio-common/tst-obprintf.c @@ -0,0 +1,45 @@ +#include <mcheck.h> +#include <obstack.h> +#include <stdio.h> +#include <stdlib.h> + + +static int +do_test (void) +{ + struct obstack ob; + int n; + + mcheck_pedantic (NULL); + +#define obstack_chunk_alloc malloc +#define obstack_chunk_free free + + obstack_init (&ob); + + for (n = 0; n < 40000; ++n) + { + mcheck_check_all (); + obstack_printf (&ob, "%.*s%05d", 1 + n % 7, "foobarbaz", n); + if (n % 777 == 0) + obstack_finish (&ob); + } + + /* Another loop where we finish all objects, each of size 1. This will + manage to call `obstack_print' with all possible positions inside + an obstack chunk. */ + for (n = 0; n < 40000; ++n) + { + mcheck_check_all (); + obstack_printf (&ob, "%c", 'a' + n % 26); + obstack_finish (&ob); + } + + /* And a final check. */ + mcheck_check_all (); + + return 0; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/tst-perror.c b/REORG.TODO/stdio-common/tst-perror.c new file mode 100644 index 0000000000..416b120b8d --- /dev/null +++ b/REORG.TODO/stdio-common/tst-perror.c @@ -0,0 +1,157 @@ +/* Test of perror. + Contributed by Ulrich Drepper <drepper@redhat.com>, 2001. + To be used only for testing glibc. */ + +#include <errno.h> +#include <error.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <wchar.h> + + +#define MB_EXP \ + "null mode test 1: Invalid or incomplete multibyte or wide character\n" \ + "multibyte string\n" \ + "<0 mode test: Invalid argument\n" +#define MB_EXP_LEN (sizeof (MB_EXP) - 1) + +#define WC_EXP \ + "null mode test 2: Invalid or incomplete multibyte or wide character\n" \ + "wide string\n" \ + ">0 mode test: Invalid argument\n" +#define WC_EXP_LEN (sizeof (WC_EXP) - 1) + + +static int +do_test (void) +{ + int fd; + char fname[] = "/tmp/tst-perror.XXXXXX"; + int result = 0; + char buf[200]; + ssize_t n; + + fd = mkstemp (fname); + if (fd == -1) + error (EXIT_FAILURE, errno, "cannot create temporary file"); + + /* Make sure the file gets removed. */ + unlink (fname); + + fclose (stderr); + + if (dup2 (fd, 2) == -1) + { + printf ("cannot create file descriptor 2: %m\n"); + exit (EXIT_FAILURE); + } + + stderr = fdopen (2, "w"); + if (stderr == NULL) + { + printf ("fdopen failed: %m\n"); + exit (EXIT_FAILURE); + } + + if (fwide (stderr, 0) != 0) + { + printf ("stderr not initially in mode 0\n"); + exit (EXIT_FAILURE); + } + + errno = EILSEQ; + perror ("null mode test 1"); + + if (fwide (stderr, 0) != 0) + { + puts ("perror changed the mode from 0"); + result = 1; + } + + fputs ("multibyte string\n", stderr); + + if (fwide (stderr, 0) >= 0) + { + puts ("fputs didn't set orientation to narrow"); + result = 1; + } + + errno = EINVAL; + perror ("<0 mode test"); + + fclose (stderr); + + lseek (fd, 0, SEEK_SET); + n = read (fd, buf, sizeof (buf)); + if (n != MB_EXP_LEN || memcmp (buf, MB_EXP, MB_EXP_LEN) != 0) + { + printf ("multibyte test failed. Expected:\n%s\nGot:\n%.*s\n", + MB_EXP, (int) n, buf); + result = 1; + } + else + puts ("multibyte test succeeded"); + + lseek (fd, 0, SEEK_SET); + ftruncate (fd, 0); + + if (dup2 (fd, 2) == -1) + { + printf ("cannot create file descriptor 2: %m\n"); + exit (EXIT_FAILURE); + } + stderr = fdopen (2, "w"); + if (stderr == NULL) + { + printf ("fdopen failed: %m\n"); + exit (EXIT_FAILURE); + } + + if (fwide (stderr, 0) != 0) + { + printf ("stderr not initially in mode 0\n"); + exit (EXIT_FAILURE); + } + + errno = EILSEQ; + perror ("null mode test 2"); + + if (fwide (stderr, 0) != 0) + { + puts ("perror changed the mode from 0"); + result = 1; + } + + fputws (L"wide string\n", stderr); + + if (fwide (stderr, 0) <= 0) + { + puts ("fputws didn't set orientation to wide"); + result = 1; + } + + errno = EINVAL; + perror (">0 mode test"); + + fclose (stderr); + + lseek (fd, 0, SEEK_SET); + n = read (fd, buf, sizeof (buf)); + if (n != WC_EXP_LEN || memcmp (buf, WC_EXP, WC_EXP_LEN) != 0) + { + printf ("wide test failed. Expected:\n%s\nGot:\n%.*s\n", + WC_EXP, (int) n, buf); + result = 1; + } + else + puts ("wide test succeeded"); + + close (fd); + + return result; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/tst-popen.c b/REORG.TODO/stdio-common/tst-popen.c new file mode 100644 index 0000000000..407bb91efd --- /dev/null +++ b/REORG.TODO/stdio-common/tst-popen.c @@ -0,0 +1,72 @@ +/* Copyright (C) 2004-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Jakub Jelinek <jakub@redhat.com>, 2004. + + 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 <stdio.h> +#include <string.h> +#include <wchar.h> + +static int +do_test (void) +{ + FILE *f = popen ("echo test", "r"); + int result = 0, ret; + char *line = NULL; + size_t len = 0; + + if (f == NULL) + { + printf ("popen failed %m"); + return 1; + } + + /* POSIX says that pipe streams are byte-oriented. */ + if (fwide (f, 0) >= 0) + { + puts ("popen did not return byte-oriented stream"); + result = 1; + } + + if (getline (&line, &len, f) != 5) + { + puts ("could not read line from popen"); + result = 1; + } + else if (strcmp (line, "test\n") != 0) + { + printf ("read \"%s\"\n", line); + result = 1; + } + + if (getline (&line, &len, f) != -1) + { + puts ("second getline did not return -1"); + result = 1; + } + + ret = pclose (f); + if (ret != 0) + { + printf ("pclose returned %d\n", ret); + result = 1; + } + + return result; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/tst-popen2.c b/REORG.TODO/stdio-common/tst-popen2.c new file mode 100644 index 0000000000..0ab151c598 --- /dev/null +++ b/REORG.TODO/stdio-common/tst-popen2.c @@ -0,0 +1,92 @@ +#include <stdio.h> +#include <string.h> +#include <unistd.h> + +static int +do_test (void) +{ + int fd = dup (fileno (stdout)); + if (fd <= 1) + { + puts ("dup failed"); + return 1; + } + + FILE *f1 = fdopen (fd, "w"); + if (f1 == NULL) + { + printf ("fdopen failed: %m\n"); + return 1; + } + + fclose (stdout); + + FILE *f2 = popen ("echo test1", "r"); + if (f2 == NULL) + { + fprintf (f1, "1st popen failed: %m\n"); + return 1; + } + FILE *f3 = popen ("echo test2", "r"); + if (f2 == NULL || f3 == NULL) + { + fprintf (f1, "2nd popen failed: %m\n"); + return 1; + } + + char *line = NULL; + size_t len = 0; + int result = 0; + if (getline (&line, &len, f2) != 6) + { + fputs ("could not read line from 1st popen\n", f1); + result = 1; + } + else if (strcmp (line, "test1\n") != 0) + { + fprintf (f1, "read \"%s\"\n", line); + result = 1; + } + + if (getline (&line, &len, f2) != -1) + { + fputs ("second getline did not return -1\n", f1); + result = 1; + } + + if (getline (&line, &len, f3) != 6) + { + fputs ("could not read line from 2nd popen\n", f1); + result = 1; + } + else if (strcmp (line, "test2\n") != 0) + { + fprintf (f1, "read \"%s\"\n", line); + result = 1; + } + + if (getline (&line, &len, f3) != -1) + { + fputs ("second getline did not return -1\n", f1); + result = 1; + } + + int ret = pclose (f2); + if (ret != 0) + { + fprintf (f1, "1st pclose returned %d\n", ret); + result = 1; + } + + ret = pclose (f3); + if (ret != 0) + { + fprintf (f1, "2nd pclose returned %d\n", ret); + result = 1; + } + + return result; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/tst-printf-bz18872.sh b/REORG.TODO/stdio-common/tst-printf-bz18872.sh new file mode 100644 index 0000000000..4e9622c9d0 --- /dev/null +++ b/REORG.TODO/stdio-common/tst-printf-bz18872.sh @@ -0,0 +1,68 @@ +#!/bin/bash +# Copyright (C) 2015-2017 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 +# <http://www.gnu.org/licenses/>. + +# To test BZ #18872, we need a printf() with 10K arguments. +# Such a printf could be generated with non-trivial macro +# application, but it's simpler to generate the test source +# via this script. + +n_args=10000 + +cat <<'EOF' +#include <stdio.h> +#include <mcheck.h> + +/* + Compile do_test without optimization: GCC 4.9/5.0/6.0 takes a long time + to build this source. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67396 */ + +__attribute__ ((optimize ("-O0"))) +int do_test (void) +{ + mtrace (); + printf ( +EOF + +for ((j = 0; j < $n_args / 10; j++)); do + for ((k = 0; k < 10; k++)); do + printf '"%%%d$s" ' $((10 * $j + $k + 1)) + done + printf "\n" +done + +printf '"%%%d$s",\n' $(($n_args + 1)) + +for ((j = 0; j < $n_args / 10; j++)); do + for ((k = 0; k < 10; k++)); do + printf '"a", ' + done + printf " /* %4d */\n" $((10 * $j + $k)) +done + +printf '"\\n");' + + +cat <<'EOF' + + return 0; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" + +EOF diff --git a/REORG.TODO/stdio-common/tst-printf-round.c b/REORG.TODO/stdio-common/tst-printf-round.c new file mode 100644 index 0000000000..e0073f2856 --- /dev/null +++ b/REORG.TODO/stdio-common/tst-printf-round.c @@ -0,0 +1,234 @@ +/* Test for correct rounding of printf floating-point output. + Copyright (C) 2012-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <fenv.h> +#include <stdio.h> +#include <string.h> + +struct dec_test { + double d; + const char *fmt; + const char *rd, *rn, *rz, *ru; +}; + +static const struct dec_test dec_tests[] = { + { 1.5, "%.0f", "1", "2", "1", "2" }, + { -1.5, "%.0f", "-2", "-2", "-1", "-1" }, + { 2.5, "%.0f", "2", "2", "2", "3" }, + { -2.5, "%.0f", "-3", "-2", "-2", "-2" }, + { 1.4999, "%.0f", "1", "1", "1", "2" }, + { -1.4999, "%.0f", "-2", "-1", "-1", "-1" }, + { 1.5001, "%.0f", "1", "2", "1", "2" }, + { -1.5001, "%.0f", "-2", "-2", "-1", "-1" }, + { 2.4999, "%.0f", "2", "2", "2", "3" }, + { -2.4999, "%.0f", "-3", "-2", "-2", "-2" }, + { 2.5001, "%.0f", "2", "3", "2", "3" }, + { -2.5001, "%.0f", "-3", "-3", "-2", "-2" }, + { 1.0 / 3.0, "%f", "0.333333", "0.333333", "0.333333", "0.333334" }, + { -1.0 / 3.0, "%f", "-0.333334", "-0.333333", "-0.333333", "-0.333333" }, + { 0.2500001, "%.2e", "2.50e-01", "2.50e-01", "2.50e-01", "2.51e-01" }, + { -0.2500001, "%.2e", "-2.51e-01", "-2.50e-01", "-2.50e-01", "-2.50e-01" }, + { 1000001.0, "%.1e", "1.0e+06", "1.0e+06", "1.0e+06", "1.1e+06" }, + { -1000001.0, "%.1e", "-1.1e+06", "-1.0e+06", "-1.0e+06", "-1.0e+06" }, +}; + +static int +test_dec_in_one_mode (double d, const char *fmt, const char *expected, + const char *mode_name) +{ + char buf[100]; + int ret = snprintf (buf, sizeof buf, fmt, d); + if (ret <= 0 || ret >= (int) sizeof buf) + { + printf ("snprintf for %a returned %d\n", d, ret); + return 1; + } + if (strcmp (buf, expected) == 0) + return 0; + else + { + printf ("snprintf (\"%s\", %a) returned \"%s\" not \"%s\" (%s)\n", + fmt, d, buf, expected, mode_name); + return 1; + } +} + +struct hex_test +{ + double d; + const char *fmt; + const char *rd[4], *rn[4], *rz[4], *ru[4]; +}; + +static const struct hex_test hex_tests[] = + { + { + 0x1.fffffp+4, "%.1a", + { "0x1.fp+4", "0x3.fp+3", "0x7.fp+2", "0xf.fp+1" }, + { "0x2.0p+4", "0x4.0p+3", "0x8.0p+2", "0x1.0p+5" }, + { "0x1.fp+4", "0x3.fp+3", "0x7.fp+2", "0xf.fp+1" }, + { "0x2.0p+4", "0x4.0p+3", "0x8.0p+2", "0x1.0p+5" } + }, + { + -0x1.fffffp+4, "%.1a", + { "-0x2.0p+4", "-0x4.0p+3", "-0x8.0p+2", "-0x1.0p+5" }, + { "-0x2.0p+4", "-0x4.0p+3", "-0x8.0p+2", "-0x1.0p+5" }, + { "-0x1.fp+4", "-0x3.fp+3", "-0x7.fp+2", "-0xf.fp+1" }, + { "-0x1.fp+4", "-0x3.fp+3", "-0x7.fp+2", "-0xf.fp+1" } + }, + { + 0x1.88p+4, "%.1a", + { "0x1.8p+4", "0x3.1p+3", "0x6.2p+2", "0xc.4p+1" }, + { "0x1.8p+4", "0x3.1p+3", "0x6.2p+2", "0xc.4p+1" }, + { "0x1.8p+4", "0x3.1p+3", "0x6.2p+2", "0xc.4p+1" }, + { "0x1.9p+4", "0x3.1p+3", "0x6.2p+2", "0xc.4p+1" } + }, + { + -0x1.88p+4, "%.1a", + { "-0x1.9p+4", "-0x3.1p+3", "-0x6.2p+2", "-0xc.4p+1" }, + { "-0x1.8p+4", "-0x3.1p+3", "-0x6.2p+2", "-0xc.4p+1" }, + { "-0x1.8p+4", "-0x3.1p+3", "-0x6.2p+2", "-0xc.4p+1" }, + { "-0x1.8p+4", "-0x3.1p+3", "-0x6.2p+2", "-0xc.4p+1" } + }, + { + 0x1.78p+4, "%.1a", + { "0x1.7p+4", "0x2.fp+3", "0x5.ep+2", "0xb.cp+1" }, + { "0x1.8p+4", "0x2.fp+3", "0x5.ep+2", "0xb.cp+1" }, + { "0x1.7p+4", "0x2.fp+3", "0x5.ep+2", "0xb.cp+1" }, + { "0x1.8p+4", "0x2.fp+3", "0x5.ep+2", "0xb.cp+1" } + }, + { + -0x1.78p+4, "%.1a", + { "-0x1.8p+4", "-0x2.fp+3", "-0x5.ep+2", "-0xb.cp+1" }, + { "-0x1.8p+4", "-0x2.fp+3", "-0x5.ep+2", "-0xb.cp+1" }, + { "-0x1.7p+4", "-0x2.fp+3", "-0x5.ep+2", "-0xb.cp+1" }, + { "-0x1.7p+4", "-0x2.fp+3", "-0x5.ep+2", "-0xb.cp+1" } + }, + { + 64.0 / 3.0, "%.1a", + { "0x1.5p+4", "0x2.ap+3", "0x5.5p+2", "0xa.ap+1" }, + { "0x1.5p+4", "0x2.bp+3", "0x5.5p+2", "0xa.bp+1" }, + { "0x1.5p+4", "0x2.ap+3", "0x5.5p+2", "0xa.ap+1" }, + { "0x1.6p+4", "0x2.bp+3", "0x5.6p+2", "0xa.bp+1" } + }, + { + -64.0 / 3.0, "%.1a", + { "-0x1.6p+4", "-0x2.bp+3", "-0x5.6p+2", "-0xa.bp+1" }, + { "-0x1.5p+4", "-0x2.bp+3", "-0x5.5p+2", "-0xa.bp+1" }, + { "-0x1.5p+4", "-0x2.ap+3", "-0x5.5p+2", "-0xa.ap+1" }, + { "-0x1.5p+4", "-0x2.ap+3", "-0x5.5p+2", "-0xa.ap+1" } + }, + }; + +static int +test_hex_in_one_mode (double d, const char *fmt, const char *const expected[4], + const char *mode_name) +{ + char buf[100]; + int ret = snprintf (buf, sizeof buf, fmt, d); + if (ret <= 0 || ret >= (int) sizeof buf) + { + printf ("snprintf for %a returned %d\n", d, ret); + return 1; + } + if (strcmp (buf, expected[0]) == 0 + || strcmp (buf, expected[1]) == 0 + || strcmp (buf, expected[2]) == 0 + || strcmp (buf, expected[3]) == 0) + return 0; + else + { + printf ("snprintf (\"%s\", %a) returned \"%s\" not " + "\"%s\" or \"%s\" or \"%s\" or \"%s\" (%s)\n", + fmt, d, buf, expected[0], expected[1], expected[2], expected[3], + mode_name); + return 1; + } +} + +static int +do_test (void) +{ + int save_round_mode __attribute__ ((unused)) = fegetround (); + int result = 0; + + for (size_t i = 0; i < sizeof (dec_tests) / sizeof (dec_tests[0]); i++) + { + result |= test_dec_in_one_mode (dec_tests[i].d, dec_tests[i].fmt, + dec_tests[i].rn, "default rounding mode"); +#ifdef FE_DOWNWARD + if (!fesetround (FE_DOWNWARD)) + { + result |= test_dec_in_one_mode (dec_tests[i].d, dec_tests[i].fmt, + dec_tests[i].rd, "FE_DOWNWARD"); + fesetround (save_round_mode); + } +#endif +#ifdef FE_TOWARDZERO + if (!fesetround (FE_TOWARDZERO)) + { + result |= test_dec_in_one_mode (dec_tests[i].d, dec_tests[i].fmt, + dec_tests[i].rz, "FE_TOWARDZERO"); + fesetround (save_round_mode); + } +#endif +#ifdef FE_UPWARD + if (!fesetround (FE_UPWARD)) + { + result |= test_dec_in_one_mode (dec_tests[i].d, dec_tests[i].fmt, + dec_tests[i].ru, "FE_UPWARD"); + fesetround (save_round_mode); + } +#endif + } + + for (size_t i = 0; i < sizeof (hex_tests) / sizeof (hex_tests[0]); i++) + { + result |= test_hex_in_one_mode (hex_tests[i].d, hex_tests[i].fmt, + hex_tests[i].rn, "default rounding mode"); +#ifdef FE_DOWNWARD + if (!fesetround (FE_DOWNWARD)) + { + result |= test_hex_in_one_mode (hex_tests[i].d, hex_tests[i].fmt, + hex_tests[i].rd, "FE_DOWNWARD"); + fesetround (save_round_mode); + } +#endif +#ifdef FE_TOWARDZERO + if (!fesetround (FE_TOWARDZERO)) + { + result |= test_hex_in_one_mode (hex_tests[i].d, hex_tests[i].fmt, + hex_tests[i].rz, "FE_TOWARDZERO"); + fesetround (save_round_mode); + } +#endif +#ifdef FE_UPWARD + if (!fesetround (FE_UPWARD)) + { + result |= test_hex_in_one_mode (hex_tests[i].d, hex_tests[i].fmt, + hex_tests[i].ru, "FE_UPWARD"); + fesetround (save_round_mode); + } +#endif + } + + return result; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/tst-printf.c b/REORG.TODO/stdio-common/tst-printf.c new file mode 100644 index 0000000000..b6d62a5a2f --- /dev/null +++ b/REORG.TODO/stdio-common/tst-printf.c @@ -0,0 +1,404 @@ +/* Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#ifdef BSD +#include </usr/include/stdio.h> +#define EXIT_SUCCESS 0 +#else +#include <limits.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#endif + +#include <float.h> +#include <libc-diag.h> + +/* This whole file is picayune tests of corner cases of printf format strings. + The compiler warnings are not useful here. */ +DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wformat"); + +#if __GNUC_PREREQ (7, 0) +/* Compiler warnings about snprintf output truncation should also be + ignored. */ +DIAG_IGNORE_NEEDS_COMMENT (7.0, "-Wformat-truncation"); +#endif + +static void rfg1 (void); +static void rfg2 (void); +static void rfg3 (void); + + +static void +fmtchk (const char *fmt) +{ + (void) fputs(fmt, stdout); + (void) printf(":\t`"); + (void) printf(fmt, 0x12); + (void) printf("'\n"); +} + +static void +fmtst1chk (const char *fmt) +{ + (void) fputs(fmt, stdout); + (void) printf(":\t`"); + (void) printf(fmt, 4, 0x12); + (void) printf("'\n"); +} + +static void +fmtst2chk (const char *fmt) +{ + (void) fputs(fmt, stdout); + (void) printf(":\t`"); + (void) printf(fmt, 4, 4, 0x12); + (void) printf("'\n"); +} + +/* This page is covered by the following copyright: */ + +/* (C) Copyright C E Chew + * + * Feel free to copy, use and distribute this software provided: + * + * 1. you do not pretend that you wrote it + * 2. you leave this copyright notice intact. + */ + +/* + * Extracted from exercise.c for glibc-1.05 bug report by Bruce Evans. + */ + +#define DEC -123 +#define INT 255 +#define UNS (~0) + +/* Formatted Output Test + * + * This exercises the output formatting code. + */ + +static void +fp_test (void) +{ + int i, j, k, l; + char buf[7]; + char *prefix = buf; + char tp[20]; + + puts("\nFormatted output test"); + printf("prefix 6d 6o 6x 6X 6u\n"); + strcpy(prefix, "%"); + for (i = 0; i < 2; i++) { + for (j = 0; j < 2; j++) { + for (k = 0; k < 2; k++) { + for (l = 0; l < 2; l++) { + strcpy(prefix, "%"); + if (i == 0) strcat(prefix, "-"); + if (j == 0) strcat(prefix, "+"); + if (k == 0) strcat(prefix, "#"); + if (l == 0) strcat(prefix, "0"); + printf("%5s |", prefix); + strcpy(tp, prefix); + strcat(tp, "6d |"); + printf(tp, DEC); + strcpy(tp, prefix); + strcat(tp, "6o |"); + printf(tp, INT); + strcpy(tp, prefix); + strcat(tp, "6x |"); + printf(tp, INT); + strcpy(tp, prefix); + strcat(tp, "6X |"); + printf(tp, INT); + strcpy(tp, prefix); + strcat(tp, "6u |"); + printf(tp, UNS); + printf("\n"); + } + } + } + } + printf("%10s\n", (char *) NULL); + printf("%-10s\n", (char *) NULL); +} + +static int +do_test (void) +{ + static char shortstr[] = "Hi, Z."; + static char longstr[] = "Good morning, Doctor Chandra. This is Hal. \ +I am ready for my first lesson today."; + int result = 0; + + fmtchk("%.4x"); + fmtchk("%04x"); + fmtchk("%4.4x"); + fmtchk("%04.4x"); + fmtchk("%4.3x"); + fmtchk("%04.3x"); + + fmtst1chk("%.*x"); + fmtst1chk("%0*x"); + fmtst2chk("%*.*x"); + fmtst2chk("%0*.*x"); + +#ifndef BSD + printf("bad format:\t\"%b\"\n"); + printf("nil pointer (padded):\t\"%10p\"\n", (void *) NULL); +#endif + + printf("decimal negative:\t\"%d\"\n", -2345); + printf("octal negative:\t\"%o\"\n", -2345); + printf("hex negative:\t\"%x\"\n", -2345); + printf("long decimal number:\t\"%ld\"\n", -123456L); + printf("long octal negative:\t\"%lo\"\n", -2345L); + printf("long unsigned decimal number:\t\"%lu\"\n", -123456L); + printf("zero-padded LDN:\t\"%010ld\"\n", -123456L); + printf("left-adjusted ZLDN:\t\"%-010ld\"\n", -123456L); + printf("space-padded LDN:\t\"%10ld\"\n", -123456L); + printf("left-adjusted SLDN:\t\"%-10ld\"\n", -123456L); + + printf("zero-padded string:\t\"%010s\"\n", shortstr); + printf("left-adjusted Z string:\t\"%-010s\"\n", shortstr); + printf("space-padded string:\t\"%10s\"\n", shortstr); + printf("left-adjusted S string:\t\"%-10s\"\n", shortstr); + printf("null string:\t\"%s\"\n", (char *)NULL); + printf("limited string:\t\"%.22s\"\n", longstr); + + printf("e-style >= 1:\t\"%e\"\n", 12.34); + printf("e-style >= .1:\t\"%e\"\n", 0.1234); + printf("e-style < .1:\t\"%e\"\n", 0.001234); + printf("e-style big:\t\"%.60e\"\n", 1e20); + printf ("e-style == .1:\t\"%e\"\n", 0.1); + printf("f-style >= 1:\t\"%f\"\n", 12.34); + printf("f-style >= .1:\t\"%f\"\n", 0.1234); + printf("f-style < .1:\t\"%f\"\n", 0.001234); + printf("g-style >= 1:\t\"%g\"\n", 12.34); + printf("g-style >= .1:\t\"%g\"\n", 0.1234); + printf("g-style < .1:\t\"%g\"\n", 0.001234); + printf("g-style big:\t\"%.60g\"\n", 1e20); + + printf (" %6.5f\n", .099999999860301614); + printf (" %6.5f\n", .1); + printf ("x%5.4fx\n", .5); + + printf ("%#03x\n", 1); + + printf ("something really insane: %.10000f\n", 1.0); + + { + double d = FLT_MIN; + int niter = 17; + + while (niter-- != 0) + printf ("%.17e\n", d / 2); + fflush (stdout); + } + + printf ("%15.5e\n", 4.9406564584124654e-324); + +#define FORMAT "|%12.4f|%12.4e|%12.4g|\n" + printf (FORMAT, 0.0, 0.0, 0.0); + printf (FORMAT, 1.0, 1.0, 1.0); + printf (FORMAT, -1.0, -1.0, -1.0); + printf (FORMAT, 100.0, 100.0, 100.0); + printf (FORMAT, 1000.0, 1000.0, 1000.0); + printf (FORMAT, 10000.0, 10000.0, 10000.0); + printf (FORMAT, 12345.0, 12345.0, 12345.0); + printf (FORMAT, 100000.0, 100000.0, 100000.0); + printf (FORMAT, 123456.0, 123456.0, 123456.0); +#undef FORMAT + + { + char buf[20]; + char buf2[512]; + printf ("snprintf (\"%%30s\", \"foo\") == %d, \"%.*s\"\n", + snprintf (buf, sizeof (buf), "%30s", "foo"), (int) sizeof (buf), + buf); + printf ("snprintf (\"%%.999999u\", 10) == %d\n", + snprintf(buf2, sizeof(buf2), "%.999999u", 10)); + } + + fp_test (); + + printf ("%e should be 1.234568e+06\n", 1234567.8); + printf ("%f should be 1234567.800000\n", 1234567.8); + printf ("%g should be 1.23457e+06\n", 1234567.8); + printf ("%g should be 123.456\n", 123.456); + printf ("%g should be 1e+06\n", 1000000.0); + printf ("%g should be 10\n", 10.0); + printf ("%g should be 0.02\n", 0.02); + +#if 0 + /* This test rather checks the way the compiler handles constant + folding. gcc behavior wrt to this changed in 3.2 so it is not a + portable test. */ + { + double x=1.0; + printf("%.17f\n",(1.0/x/10.0+1.0)*x-x); + } +#endif + + { + char buf[200]; + + sprintf(buf,"%*s%*s%*s",-1,"one",-20,"two",-30,"three"); + + result |= strcmp (buf, + "onetwo three "); + + puts (result != 0 ? "Test failed!" : "Test ok."); + } + + { + char buf[200]; + + sprintf (buf, "%07Lo", 040000000000ll); + printf ("sprintf (buf, \"%%07Lo\", 040000000000ll) = %s", buf); + + if (strcmp (buf, "40000000000") != 0) + { + result = 1; + fputs ("\tFAILED", stdout); + } + puts (""); + } + + printf ("printf (\"%%hhu\", %u) = %hhu\n", UCHAR_MAX + 2, UCHAR_MAX + 2); + printf ("printf (\"%%hu\", %u) = %hu\n", USHRT_MAX + 2, USHRT_MAX + 2); + printf ("printf (\"%%hhi\", %i) = %hhi\n", UCHAR_MAX + 2, UCHAR_MAX + 2); + printf ("printf (\"%%hi\", %i) = %hi\n", USHRT_MAX + 2, USHRT_MAX + 2); + + printf ("printf (\"%%1$hhu\", %2$u) = %1$hhu\n", + UCHAR_MAX + 2, UCHAR_MAX + 2); + printf ("printf (\"%%1$hu\", %2$u) = %1$hu\n", USHRT_MAX + 2, USHRT_MAX + 2); + printf ("printf (\"%%1$hhi\", %2$i) = %1$hhi\n", + UCHAR_MAX + 2, UCHAR_MAX + 2); + printf ("printf (\"%%1$hi\", %2$i) = %1$hi\n", USHRT_MAX + 2, USHRT_MAX + 2); + + puts ("--- Should be no further output. ---"); + rfg1 (); + rfg2 (); + rfg3 (); + + { + char bytes[7]; + char buf[20]; + + memset (bytes, '\xff', sizeof bytes); + sprintf (buf, "foo%hhn\n", &bytes[3]); + if (bytes[0] != '\xff' || bytes[1] != '\xff' || bytes[2] != '\xff' + || bytes[4] != '\xff' || bytes[5] != '\xff' || bytes[6] != '\xff') + { + puts ("%hhn overwrite more bytes"); + result = 1; + } + if (bytes[3] != 3) + { + puts ("%hhn wrote incorrect value"); + result = 1; + } + } + + return result != 0; +} + +static void +rfg1 (void) +{ + char buf[100]; + + sprintf (buf, "%5.s", "xyz"); + if (strcmp (buf, " ") != 0) + printf ("got: '%s', expected: '%s'\n", buf, " "); + sprintf (buf, "%5.f", 33.3); + if (strcmp (buf, " 33") != 0) + printf ("got: '%s', expected: '%s'\n", buf, " 33"); + sprintf (buf, "%8.e", 33.3e7); + if (strcmp (buf, " 3e+08") != 0) + printf ("got: '%s', expected: '%s'\n", buf, " 3e+08"); + sprintf (buf, "%8.E", 33.3e7); + if (strcmp (buf, " 3E+08") != 0) + printf ("got: '%s', expected: '%s'\n", buf, " 3E+08"); + sprintf (buf, "%.g", 33.3); + if (strcmp (buf, "3e+01") != 0) + printf ("got: '%s', expected: '%s'\n", buf, "3e+01"); + sprintf (buf, "%.G", 33.3); + if (strcmp (buf, "3E+01") != 0) + printf ("got: '%s', expected: '%s'\n", buf, "3E+01"); +} + +static void +rfg2 (void) +{ + int prec; + char buf[100]; + + prec = 0; + sprintf (buf, "%.*g", prec, 3.3); + if (strcmp (buf, "3") != 0) + printf ("got: '%s', expected: '%s'\n", buf, "3"); + prec = 0; + sprintf (buf, "%.*G", prec, 3.3); + if (strcmp (buf, "3") != 0) + printf ("got: '%s', expected: '%s'\n", buf, "3"); + prec = 0; + sprintf (buf, "%7.*G", prec, 3.33); + if (strcmp (buf, " 3") != 0) + printf ("got: '%s', expected: '%s'\n", buf, " 3"); + prec = 3; + sprintf (buf, "%04.*o", prec, 33); + if (strcmp (buf, " 041") != 0) + printf ("got: '%s', expected: '%s'\n", buf, " 041"); + prec = 7; + sprintf (buf, "%09.*u", prec, 33); + if (strcmp (buf, " 0000033") != 0) + printf ("got: '%s', expected: '%s'\n", buf, " 0000033"); + prec = 3; + sprintf (buf, "%04.*x", prec, 33); + if (strcmp (buf, " 021") != 0) + printf ("got: '%s', expected: '%s'\n", buf, " 021"); + prec = 3; + sprintf (buf, "%04.*X", prec, 33); + if (strcmp (buf, " 021") != 0) + printf ("got: '%s', expected: '%s'\n", buf, " 021"); +} + +static void +rfg3 (void) +{ + char buf[100]; + double g = 5.0000001; + unsigned long l = 1234567890; + double d = 321.7654321; + const char s[] = "test-string"; + int i = 12345; + int h = 1234; + + sprintf (buf, + "%1$*5$d %2$*6$hi %3$*7$lo %4$*8$f %9$*12$e %10$*13$g %11$*14$s", + i, h, l, d, 8, 5, 14, 14, d, g, s, 14, 3, 14); + if (strcmp (buf, + " 12345 1234 11145401322 321.765432 3.217654e+02 5 test-string") != 0) + printf ("got: '%s', expected: '%s'\n", buf, + " 12345 1234 11145401322 321.765432 3.217654e+02 5 test-string"); +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/tst-printf.sh b/REORG.TODO/stdio-common/tst-printf.sh new file mode 100644 index 0000000000..c413980dd3 --- /dev/null +++ b/REORG.TODO/stdio-common/tst-printf.sh @@ -0,0 +1,268 @@ +#!/bin/sh +# Testing of printf. +# Copyright (C) 2000-2017 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 +# <http://www.gnu.org/licenses/>. + +set -e + +common_objpfx=$1; shift +test_program_prefix=$1; shift + +status=0 + +${test_program_prefix} \ + ${common_objpfx}stdio-common/tst-printf \ + > ${common_objpfx}stdio-common/tst-printf.out || status=1 + +cat <<'EOF' | +%.4x: `0012' +%04x: `0012' +%4.4x: `0012' +%04.4x: `0012' +%4.3x: ` 012' +%04.3x: ` 012' +%.*x: `0012' +%0*x: `0012' +%*.*x: `0012' +%0*.*x: `0012' +bad format: "%b" +nil pointer (padded): " (nil)" +decimal negative: "-2345" +octal negative: "37777773327" +hex negative: "fffff6d7" +long decimal number: "-123456" +long octal negative: "37777773327" +long unsigned decimal number: "4294843840" +zero-padded LDN: "-000123456" +left-adjusted ZLDN: "-123456 " +space-padded LDN: " -123456" +left-adjusted SLDN: "-123456 " +zero-padded string: " Hi, Z." +left-adjusted Z string: "Hi, Z. " +space-padded string: " Hi, Z." +left-adjusted S string: "Hi, Z. " +null string: "(null)" +limited string: "Good morning, Doctor C" +e-style >= 1: "1.234000e+01" +e-style >= .1: "1.234000e-01" +e-style < .1: "1.234000e-03" +e-style big: "1.000000000000000000000000000000000000000000000000000000000000e+20" +e-style == .1: "1.000000e-01" +f-style >= 1: "12.340000" +f-style >= .1: "0.123400" +f-style < .1: "0.001234" +g-style >= 1: "12.34" +g-style >= .1: "0.1234" +g-style < .1: "0.001234" +g-style big: "100000000000000000000" + 0.10000 + 0.10000 +x0.5000x +0x1 +something really insane: 1.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +5.87747175411143754e-39 +5.87747175411143754e-39 +5.87747175411143754e-39 +5.87747175411143754e-39 +5.87747175411143754e-39 +5.87747175411143754e-39 +5.87747175411143754e-39 +5.87747175411143754e-39 +5.87747175411143754e-39 +5.87747175411143754e-39 +5.87747175411143754e-39 +5.87747175411143754e-39 +5.87747175411143754e-39 +5.87747175411143754e-39 +5.87747175411143754e-39 +5.87747175411143754e-39 +5.87747175411143754e-39 + 4.94066e-324 +| 0.0000| 0.0000e+00| 0| +| 1.0000| 1.0000e+00| 1| +| -1.0000| -1.0000e+00| -1| +| 100.0000| 1.0000e+02| 100| +| 1000.0000| 1.0000e+03| 1000| +| 10000.0000| 1.0000e+04| 1e+04| +| 12345.0000| 1.2345e+04| 1.234e+04| +| 100000.0000| 1.0000e+05| 1e+05| +| 123456.0000| 1.2346e+05| 1.235e+05| +snprintf ("%30s", "foo") == 30, " " +snprintf ("%.999999u", 10) == 999999 + +Formatted output test +prefix 6d 6o 6x 6X 6u +%-+#0 |-123 |0377 |0xff |0XFF |4294967295 | + %-+# |-123 |0377 |0xff |0XFF |4294967295 | + %-+0 |-123 |377 |ff |FF |4294967295 | + %-+ |-123 |377 |ff |FF |4294967295 | + %-#0 |-123 |0377 |0xff |0XFF |4294967295 | + %-# |-123 |0377 |0xff |0XFF |4294967295 | + %-0 |-123 |377 |ff |FF |4294967295 | + %- |-123 |377 |ff |FF |4294967295 | + %+#0 |-00123 |000377 |0x00ff |0X00FF |4294967295 | + %+# | -123 | 0377 | 0xff | 0XFF |4294967295 | + %+0 |-00123 |000377 |0000ff |0000FF |4294967295 | + %+ | -123 | 377 | ff | FF |4294967295 | + %#0 |-00123 |000377 |0x00ff |0X00FF |4294967295 | + %# | -123 | 0377 | 0xff | 0XFF |4294967295 | + %0 |-00123 |000377 |0000ff |0000FF |4294967295 | + % | -123 | 377 | ff | FF |4294967295 | + (null) +(null) +1.234568e+06 should be 1.234568e+06 +1234567.800000 should be 1234567.800000 +1.23457e+06 should be 1.23457e+06 +123.456 should be 123.456 +1e+06 should be 1e+06 +10 should be 10 +0.02 should be 0.02 +Test ok. +sprintf (buf, "%07Lo", 040000000000ll) = 40000000000 +printf ("%hhu", 257) = 1 +printf ("%hu", 65537) = 1 +printf ("%hhi", 257) = 1 +printf ("%hi", 65537) = 1 +printf ("%1$hhu", 257) = 1 +printf ("%1$hu", 65537) = 1 +printf ("%1$hhi", 257) = 1 +printf ("%1$hi", 65537) = 1 +--- Should be no further output. --- +EOF +cmp - ${common_objpfx}stdio-common/tst-printf.out > /dev/null 2>&1 || +cat <<'EOF' | +%.4x: `0012' +%04x: `0012' +%4.4x: `0012' +%04.4x: `0012' +%4.3x: ` 012' +%04.3x: ` 012' +%.*x: `0012' +%0*x: `0012' +%*.*x: `0012' +%0*.*x: `0012' +bad format: "%b" +nil pointer (padded): " (nil)" +decimal negative: "-2345" +octal negative: "37777773327" +hex negative: "fffff6d7" +long decimal number: "-123456" +long octal negative: "1777777777777777773327" +long unsigned decimal number: "18446744073709428160" +zero-padded LDN: "-000123456" +left-adjusted ZLDN: "-123456 " +space-padded LDN: " -123456" +left-adjusted SLDN: "-123456 " +zero-padded string: " Hi, Z." +left-adjusted Z string: "Hi, Z. " +space-padded string: " Hi, Z." +left-adjusted S string: "Hi, Z. " +null string: "(null)" +limited string: "Good morning, Doctor C" +e-style >= 1: "1.234000e+01" +e-style >= .1: "1.234000e-01" +e-style < .1: "1.234000e-03" +e-style big: "1.000000000000000000000000000000000000000000000000000000000000e+20" +e-style == .1: "1.000000e-01" +f-style >= 1: "12.340000" +f-style >= .1: "0.123400" +f-style < .1: "0.001234" +g-style >= 1: "12.34" +g-style >= .1: "0.1234" +g-style < .1: "0.001234" +g-style big: "100000000000000000000" + 0.10000 + 0.10000 +x0.5000x +0x1 +something really insane: 1.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +5.87747175411143754e-39 +5.87747175411143754e-39 +5.87747175411143754e-39 +5.87747175411143754e-39 +5.87747175411143754e-39 +5.87747175411143754e-39 +5.87747175411143754e-39 +5.87747175411143754e-39 +5.87747175411143754e-39 +5.87747175411143754e-39 +5.87747175411143754e-39 +5.87747175411143754e-39 +5.87747175411143754e-39 +5.87747175411143754e-39 +5.87747175411143754e-39 +5.87747175411143754e-39 +5.87747175411143754e-39 + 4.94066e-324 +| 0.0000| 0.0000e+00| 0| +| 1.0000| 1.0000e+00| 1| +| -1.0000| -1.0000e+00| -1| +| 100.0000| 1.0000e+02| 100| +| 1000.0000| 1.0000e+03| 1000| +| 10000.0000| 1.0000e+04| 1e+04| +| 12345.0000| 1.2345e+04| 1.234e+04| +| 100000.0000| 1.0000e+05| 1e+05| +| 123456.0000| 1.2346e+05| 1.235e+05| +snprintf ("%30s", "foo") == 30, " " +snprintf ("%.999999u", 10) == 999999 + +Formatted output test +prefix 6d 6o 6x 6X 6u +%-+#0 |-123 |0377 |0xff |0XFF |4294967295 | + %-+# |-123 |0377 |0xff |0XFF |4294967295 | + %-+0 |-123 |377 |ff |FF |4294967295 | + %-+ |-123 |377 |ff |FF |4294967295 | + %-#0 |-123 |0377 |0xff |0XFF |4294967295 | + %-# |-123 |0377 |0xff |0XFF |4294967295 | + %-0 |-123 |377 |ff |FF |4294967295 | + %- |-123 |377 |ff |FF |4294967295 | + %+#0 |-00123 |000377 |0x00ff |0X00FF |4294967295 | + %+# | -123 | 0377 | 0xff | 0XFF |4294967295 | + %+0 |-00123 |000377 |0000ff |0000FF |4294967295 | + %+ | -123 | 377 | ff | FF |4294967295 | + %#0 |-00123 |000377 |0x00ff |0X00FF |4294967295 | + %# | -123 | 0377 | 0xff | 0XFF |4294967295 | + %0 |-00123 |000377 |0000ff |0000FF |4294967295 | + % | -123 | 377 | ff | FF |4294967295 | + (null) +(null) +1.234568e+06 should be 1.234568e+06 +1234567.800000 should be 1234567.800000 +1.23457e+06 should be 1.23457e+06 +123.456 should be 123.456 +1e+06 should be 1e+06 +10 should be 10 +0.02 should be 0.02 +Test ok. +sprintf (buf, "%07Lo", 040000000000ll) = 40000000000 +printf ("%hhu", 257) = 1 +printf ("%hu", 65537) = 1 +printf ("%hhi", 257) = 1 +printf ("%hi", 65537) = 1 +printf ("%1$hhu", 257) = 1 +printf ("%1$hu", 65537) = 1 +printf ("%1$hhi", 257) = 1 +printf ("%1$hi", 65537) = 1 +--- Should be no further output. --- +EOF +cmp - ${common_objpfx}stdio-common/tst-printf.out > /dev/null 2>&1 || +{ + status=1 + echo "*** output comparison failed" +} + +exit $status diff --git a/REORG.TODO/stdio-common/tst-printfsz.c b/REORG.TODO/stdio-common/tst-printfsz.c new file mode 100644 index 0000000000..47aa8536b3 --- /dev/null +++ b/REORG.TODO/stdio-common/tst-printfsz.c @@ -0,0 +1,81 @@ +/* Based on code by Larry McVoy <lm@neteng.engr.sgi.com>. */ +#include <printf.h> +#include <stdio.h> +#include <string.h> +#include <libc-diag.h> + +#define V 12345678.12345678 + + +static int +do_test (void) +{ + char buf[1024]; + int result = 0; + + /* Testing printf_size_info requires using the deprecated + register_printf_function, resulting in warnings + "'register_printf_function' is deprecated". */ + DIAG_PUSH_NEEDS_COMMENT; + DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wdeprecated-declarations"); + /* Register the printf handlers. */ + register_printf_function ('b', printf_size, printf_size_info); + register_printf_function ('B', printf_size, printf_size_info); + DIAG_POP_NEEDS_COMMENT; + + /* All of the formats here use the nonstandard extension specifier + just registered, so compiler checking will never grok them. */ + DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wformat"); + DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wformat-extra-args"); + + sprintf (buf, "%g %b %B %.0b %.0B %.1b %.1B %8.0b %08.0B", + V, 1025., V, V, V, V, V, V, V, V); + fputs (buf, stdout); + if (strcmp (buf, "\ +1.23457e+07 1.001k 12.346M 12m 12M 11.8m 12.3M 12m 0000012M")) + { + result = 1; + fputs (" -> WRONG\n", stdout); + } + else + fputs (" -> OK\n", stdout); + + sprintf (buf, "%b|%B|%-20.2b|%-10.0b|%-10.8b|%-10.2B|", + V, V, V, V, V, V, V, V, V, V, V); + fputs (buf, stdout); + if (strcmp (buf, "\ +11.774m|12.346M|11.77m |12m |11.77375614m|12.35M |")) + { + result = 1; + fputs (" -> WRONG\n", stdout); + } + else + fputs (" -> OK\n", stdout); + + sprintf (buf, "%#.0B %*.0b %10.*b %*.*B %10.2B", + V, 2, V, 2, V, 10, 2, V, V); + fputs (buf, stdout); + if (strcmp (buf, "12.M 12m 11.77m 12.35M 12.35M")) + { + result = 1; + fputs (" -> WRONG\n", stdout); + } + else + fputs (" -> OK\n", stdout); + + sprintf (buf, "%6B %6.1B %b %B %b %B", + V, V, 1000.0, 1000.0, 1024.0, 1024.0); + fputs (buf, stdout); + if (strcmp (buf, "12.346M 12.3M 1000.000 1.000K 1.000k 1.024K")) + { + result = 1; + fputs (" -> WRONG\n", stdout); + } + else + fputs (" -> OK\n", stdout); + + return result; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/tst-put-error.c b/REORG.TODO/stdio-common/tst-put-error.c new file mode 100644 index 0000000000..4f91fb7471 --- /dev/null +++ b/REORG.TODO/stdio-common/tst-put-error.c @@ -0,0 +1,69 @@ +/* Verify that print functions return error when there is an I/O error. + + Copyright (C) 2005-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <errno.h> +#include <error.h> +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> + + +static int +do_test (void) +{ + char tmpl[] = "/tmp/tst-put-error.XXXXXX"; + int fd = mkstemp (tmpl); + if (fd == -1) + error (EXIT_FAILURE, errno, "cannot create temporary file"); + FILE *fp = fdopen (fd, "w"); + if (fp == NULL) + error (EXIT_FAILURE, errno, "fdopen"); + + /* All of the tests below verify that flushing buffers result in failure of + the fprintf calls. We ensure that the buffer is flushed at the end of + each fprintf call by doing two things - setting the file pointer to + line-buffered so that it is flushed whenever it encounters a newline and + then ensuring that there is a newline in each of the format strings we + pass to fprintf. */ + + setlinebuf (fp); + close (fd); + unlink (tmpl); + + int n = fprintf (fp, "hello world\n"); + printf ("fprintf = %d\n", n); + if (n >= 0) + error (EXIT_FAILURE, 0, "first fprintf succeeded"); + + n = fprintf (fp, "hello world\n"); + printf ("fprintf = %d\n", n); + if (n >= 0) + error (EXIT_FAILURE, 0, "second fprintf succeeded"); + + /* Padded printing takes a different code path. */ + n = fprintf (fp, "%100s\n", "foo"); + printf ("fprintf = %d\n", n); + if (n >= 0) + error (EXIT_FAILURE, 0, "padded fprintf succeeded"); + + return 0; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/tst-rndseek.c b/REORG.TODO/stdio-common/tst-rndseek.c new file mode 100644 index 0000000000..cf53aa48e0 --- /dev/null +++ b/REORG.TODO/stdio-common/tst-rndseek.c @@ -0,0 +1,144 @@ +#include <errno.h> +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> + + +static char fname[] = "/tmp/rndseek.XXXXXX"; +static char tempdata[65 * 1024]; + + +static int do_test (void); +#define TEST_FUNCTION do_test () +#define TIMEOUT 10 + +#include "../test-skeleton.c" + + +static int +fp_test (const char *name, FILE *fp) +{ + int result = 0; + int rounds = 10000; + + do + { + int idx = random () % (sizeof (tempdata) - 2); + char ch1; + char ch2; + + if (fseek (fp, idx, SEEK_SET) != 0) + { + printf ("%s: %d: fseek failed: %m\n", name, rounds); + result = 1; + break; + } + + ch1 = fgetc_unlocked (fp); + ch2 = tempdata[idx]; + if (ch1 != ch2) + { + printf ("%s: %d: character at index %d not what is expected ('%c' vs '%c')\n", + name, rounds, idx, ch1, ch2); + result = 1; + break; + } + + ch1 = fgetc (fp); + ch2 = tempdata[idx + 1]; + if (ch1 != ch2) + { + printf ("%s: %d: character at index %d not what is expected ('%c' vs '%c')\n", + name, rounds, idx + 1, ch1, ch2); + result = 1; + break; + } + } + while (--rounds > 0); + + fclose (fp); + + return result; +} + + +static int +do_test (void) +{ + int fd; + FILE *fp; + size_t i; + int result; + + fd = mkstemp (fname); + if (fd == -1) + { + printf ("cannot open temporary file: %m\n"); + return 1; + } + /* Make sure the file gets removed. */ + add_temp_file (fname); + + /* Repeatability demands this. */ + srandom (42); + + /* First create some temporary data. */ + for (i = 0; i < sizeof (tempdata); ++i) + tempdata[i] = 'a' + random () % 26; + + /* Write this data to a file. */ + if (TEMP_FAILURE_RETRY (write (fd, tempdata, sizeof (tempdata))) + != sizeof (tempdata)) + { + printf ("cannot wrote data to temporary file: %m\n"); + return 1; + } + + /* Now try reading the data. */ + fp = fdopen (dup (fd), "r"); + if (fp == NULL) + { + printf ("cannot duplicate temporary file descriptor: %m\n"); + return 1; + } + + rewind (fp); + for (i = 0; i < sizeof (tempdata); ++i) + { + int ch0 = fgetc (fp); + char ch1 = ch0; + char ch2 = tempdata[i]; + + if (ch0 == EOF) + { + puts ("premature end of file while reading data"); + return 1; + } + + if (ch1 != ch2) + { + printf ("%zd: '%c' vs '%c'\n", i, ch1, ch2); + return 1; + } + } + + result = fp_test ("fdopen(\"r\")", fp); + + fp = fopen (fname, "r"); + result |= fp_test ("fopen(\"r\")", fp); + + fp = fopen64 (fname, "r"); + result |= fp_test ("fopen64(\"r\")", fp); + + /* The "rw" mode will prevent the mmap-using code from being used. */ + fp = fdopen (fd, "rw"); + result = fp_test ("fdopen(\"rw\")", fp); + + fp = fopen (fname, "rw"); + result |= fp_test ("fopen(\"rw\")", fp); + + fp = fopen64 (fname, "rw"); + result |= fp_test ("fopen64(\"rw\")", fp); + + return result; +} diff --git a/REORG.TODO/stdio-common/tst-setvbuf1.c b/REORG.TODO/stdio-common/tst-setvbuf1.c new file mode 100644 index 0000000000..22410939c9 --- /dev/null +++ b/REORG.TODO/stdio-common/tst-setvbuf1.c @@ -0,0 +1,19 @@ +#include <stdio.h> + +static int +do_test (void) +{ + if (setvbuf (stderr, NULL, _IOFBF, BUFSIZ) != 0) + { + puts ("Set full buffer error."); + return 1; + } + + fprintf (stderr, "Output #1 <stderr>.\n"); + printf ("Output #2 <stdout>.\n"); + + return 0; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/tst-setvbuf1.expect b/REORG.TODO/stdio-common/tst-setvbuf1.expect new file mode 100644 index 0000000000..281c18ca1e --- /dev/null +++ b/REORG.TODO/stdio-common/tst-setvbuf1.expect @@ -0,0 +1,2 @@ +Output #2 <stdout>. +Output #1 <stderr>. diff --git a/REORG.TODO/stdio-common/tst-sprintf.c b/REORG.TODO/stdio-common/tst-sprintf.c new file mode 100644 index 0000000000..cbd35447a9 --- /dev/null +++ b/REORG.TODO/stdio-common/tst-sprintf.c @@ -0,0 +1,90 @@ +#include <stdio.h> +#include <stdlib.h> +#include <locale.h> +#include <string.h> +#include <libc-diag.h> + + +static int +do_test (void) +{ + char buf[100]; + int result = 0; + + if (sprintf (buf, "%.0ls", L"foo") != 0 + || strlen (buf) != 0) + { + puts ("sprintf (buf, \"%.0ls\", L\"foo\") produced some output"); + result = 1; + } + +#define SIZE (1024*70000) +#define STR(x) #x + + char *dst = malloc (SIZE + 1); + + if (dst == NULL) + { + puts ("memory allocation failure"); + result = 1; + } + else + { + sprintf (dst, "%*s", SIZE, ""); + if (strnlen (dst, SIZE + 1) != SIZE) + { + puts ("sprintf (dst, \"%*s\", " STR(SIZE) ", \"\") did not produce enough output"); + result = 1; + } + free (dst); + } + + if (sprintf (buf, "%1$d%3$.*2$s%4$d", 7, 67108863, "x", 8) != 3 + || strcmp (buf, "7x8") != 0) + { + printf ("sprintf (buf, \"%%1$d%%3$.*2$s%%4$d\", 7, 67108863, \"x\", 8) produced `%s' output", buf); + result = 1; + } + + /* We are testing a corner case of the sprintf format string here. */ + DIAG_PUSH_NEEDS_COMMENT; + DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wformat"); + int n = sprintf (buf, "%67108863.16\"%d", 7); + DIAG_POP_NEEDS_COMMENT; + + if (n != 14 || strcmp (buf, "%67108863.16\"7") != 0) + { + printf ("sprintf (buf, \"%%67108863.16\\\"%%d\", 7) produced `%s' output", + buf); + result = 1; + } + + /* We are testing a corner case of the sprintf format string here. */ + DIAG_PUSH_NEEDS_COMMENT; + DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wformat"); + n = sprintf (buf, "%*\"%d", 0x3ffffff, 7); + DIAG_POP_NEEDS_COMMENT; + + if (n != 11 || strcmp (buf, "%67108863\"7") != 0) + { + printf ("sprintf (buf, \"%%*\\\"%%d\", 0x3ffffff, 7) produced `%s' output", buf); + result = 1; + } + + if (setlocale (LC_ALL, "de_DE.UTF-8") == NULL) + { + puts ("cannot set locale"); + result = 1; + } + else if (sprintf (buf, "%.8s\n", "Foo: \277") != 7 + || strcmp (buf, "Foo: \277\n") != 0) + { + printf ("sprintf (buf, \"%%.8s\\n\", \"Foo: \\277\") produced '%s' output\n", buf); + result = 1; + } + + return result; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/tst-sprintf2.c b/REORG.TODO/stdio-common/tst-sprintf2.c new file mode 100644 index 0000000000..0ddf15ba33 --- /dev/null +++ b/REORG.TODO/stdio-common/tst-sprintf2.c @@ -0,0 +1,87 @@ +#include <float.h> +#include <math.h> +#include <stdio.h> +#include <string.h> + +static int +do_test (void) +{ +#if LDBL_MANT_DIG >= 106 + volatile union { long double l; long long x[2]; } u, v; + char buf[64]; +#endif + int result = 0; + +#if LDBL_MANT_DIG == 106 || LDBL_MANT_DIG == 113 +# define COMPARE_LDBL(u, v) \ + ((u).l == (v).l && (u).x[0] == (v).x[0] && (u).x[1] == (v).x[1]) +#else +# define COMPARE_LDBL(u, v) ((u).l == (v).l) +#endif + +#define TEST(val) \ + do \ + { \ + u.l = (val); \ + snprintf (buf, sizeof buf, "%LaL", u.l); \ + if (strcmp (buf, #val) != 0) \ + { \ + printf ("Error on line %d: %s != %s\n", __LINE__, buf, #val); \ + result = 1; \ + } \ + if (sscanf (#val, "%La", &v.l) != 1 || !COMPARE_LDBL (u, v)) \ + { \ + printf ("Error sscanf on line %d: %La != %La\n", __LINE__, \ + u.l, v.l); \ + result = 1; \ + } \ + /* printf ("%s %La %016Lx %016Lx\n", #val, u.l, u.x[0], u.x[1]); */ \ + } \ + while (0) + +#if LDBL_MANT_DIG >= 106 +# if LDBL_MANT_DIG == 106 + TEST (0x0.ffffffffffffp-1022L); + TEST (0x0.ffffffffffff1p-1022L); + TEST (0x0.fffffffffffffp-1022L); +# endif + TEST (0x1p-1022L); + TEST (0x1.0000000000001p-1022L); + TEST (0x1.00000000001e7p-1022L); + TEST (0x1.fffffffffffffp-1022L); + TEST (0x1p-1021L); + TEST (0x1.00000000000008p-1021L); + TEST (0x1.0000000000001p-1021L); + TEST (0x1.00000000000018p-1021L); + TEST (0x1.0000000000000f8p-1017L); + TEST (0x1.0000000000001p-1017L); + TEST (0x1.000000000000108p-1017L); + TEST (0x1.000000000000dcf8p-1013L); + TEST (0x1.000000000000ddp-1013L); + TEST (0x1.000000000000dd08p-1013L); + TEST (0x1.ffffffffffffffffffffffffffp-1L); + TEST (0x1.ffffffffffffffffffffffffff8p-1L); + TEST (0x1p+0L); + TEST (0x1.000000000000000000000000008p+0L); + TEST (0x1.00000000000000000000000001p+0L); + TEST (0x1.000000000000000000000000018p+0L); + TEST (0x1.23456789abcdef123456789abc8p+0L); + TEST (0x1.23456789abcde7123456789abc8p+0L); + TEST (0x1.23456789abcdef123456789abc8p+64L); + TEST (0x1.23456789abcde7123456789abc8p+64L); + TEST (0x1.123456789abcdef123456789p-969L); +# if LDBL_MANT_DIG == 106 + TEST (-0x1.2d71957cc1263bbbeb1d365f1e8p-969L); + TEST (0x1.23456789abcdef0123456789abp-970L); + TEST (0x1.579bde02468acp-1001L); + TEST (0x0.abcdef0123456p-1022L); + TEST (0x1.abcdef0123456p-1022L); + TEST (0x1.abcdef012345678p-1014L); + TEST (0x1.abcdef0123456f8p-1014L); +# endif +#endif + return result; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/tst-sprintf3.c b/REORG.TODO/stdio-common/tst-sprintf3.c new file mode 100644 index 0000000000..bcdd6d25db --- /dev/null +++ b/REORG.TODO/stdio-common/tst-sprintf3.c @@ -0,0 +1,99 @@ +/* Copyright (C) 2012-2017 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 + <http://www.gnu.org/licenses/>. */ + +/* Test bug #13941. */ + +#include <float.h> +#include <math.h> +#include <stdio.h> +#include <string.h> + +static int +do_test (void) +{ +#if LDBL_MANT_DIG >= 106 + volatile union { long double l; long long x[2]; } u, v; + char buf[64]; +#endif + int result = 0; + +#if LDBL_MANT_DIG == 106 || LDBL_MANT_DIG == 113 +# define COMPARE_LDBL(u, v) \ + ((u).l == (v).l && (u).x[0] == (v).x[0] && (u).x[1] == (v).x[1]) +#else +# define COMPARE_LDBL(u, v) ((u).l == (v).l) +#endif + +#define TEST_N(val, n) \ + do \ + { \ + u.l = (val); \ + snprintf (buf, sizeof buf, "%." #n "LgL", u.l); \ + if (strcmp (buf, #val) != 0) \ + { \ + printf ("Error on line %d: %s != %s\n", __LINE__, buf, #val); \ + result = 1; \ + } \ + if (sscanf (#val, "%Lg", &v.l) != 1 || !COMPARE_LDBL (u, v)) \ + { \ + printf ("Error sscanf on line %d: %." #n "Lg != %." #n "Lg\n", \ + __LINE__, u.l, v.l); \ + result = 1; \ + } \ + /* printf ("%s %Lg %016Lx %016Lx\n", #val, u.l, u.x[0], u.x[1]); */ \ + } \ + while (0) + +#define TEST(val) TEST_N (val,30) + +#if LDBL_MANT_DIG >= 106 +# if LDBL_MANT_DIG == 106 + TEST (2.22507385850719347803989925739e-308L); + TEST (2.22507385850719397210554509863e-308L); + TEST (2.22507385850720088902458687609e-308L); + + /* Verify precision is not lost for long doubles + of the form +1.pN,-1.pM. */ + TEST_N (3.32306998946228968225951765070082e+35L, 34); +# endif + TEST (2.22507385850720138309023271733e-308L); + TEST (2.22507385850720187715587855858e-308L); + TEST (2.2250738585074419930597574044e-308L); + TEST (4.45014771701440227211481959342e-308L); + TEST (4.45014771701440276618046543466e-308L); + TEST (4.45014771701440375431175711716e-308L); + TEST (4.45014771701440474244304879965e-308L); + TEST (7.12023634722304600689881138745e-307L); + TEST (1.13923781555569064960474854133e-305L); + TEST (1.13777777777777776389998996996L); + TEST (1.13777777777777765287768750745L); + TEST (20988295479420645138.2044444444L); + TEST (20988295479420643090.2044444444L); + TEST (2.14668699894294423266045294316e-292L); +# if LDBL_MANT_DIG == 106 + TEST (-2.35993711055432139266626434123e-292L); + TEST (6.26323524637968345414769634658e-302L); + TEST (1.49327164802066885331814201989e-308L); + TEST (3.71834550652787023640837473722e-308L); + TEST (9.51896449671134907001349268087e-306L); +# endif +#endif + return result; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/tst-sscanf.c b/REORG.TODO/stdio-common/tst-sscanf.c new file mode 100644 index 0000000000..c070e14cd7 --- /dev/null +++ b/REORG.TODO/stdio-common/tst-sscanf.c @@ -0,0 +1,273 @@ +/* Copyright (C) 2000-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Jakub Jelinek <jakub@redhat.com>, 2000. + + 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 <stdlib.h> +#include <stdio.h> +#include <locale.h> + +#ifndef CHAR +# define CHAR char +# define L(str) str +# define SSCANF sscanf +#endif + +const CHAR *str_double[] = +{ + L("-.10000E+020.20000E+020.25000E+010.40000E+010.50000E+010.12500E+01"), + L("0.10000E+020.20000E+020.25000E+010.40000E+010.50000E+010.12500E+01"), + L("-1234567E0198765432E0912345678901987654321091234567890198765432109"), + L("-0.1000E+020.20000E+020.25000E+010.40000E+010.50000E+010.12500E+01") +}; + +const double val_double[] = +{ + -.10000E+02, 0.20000E+02, 0.25000E+01, 0.40000E+01, 0.50000E+01, 0.12500E+01, + 0.10000E+02, 0.20000E+02, 0.25000E+01, 0.40000E+01, 0.50000E+01, 0.12500E+01, + -1234567E01, 98765432E09, 12345678901.0, 98765432109.0, 12345678901.0, + 98765432109.0, + -0.1000E+02, 0.20000E+02, 0.25000E+01, 0.40000E+01, 0.50000E+01, 0.12500E+01 +}; + +const CHAR *str_long[] = +{ + L("-12345678987654321123456789987654321123456789987654321"), + L("-12345678987654321123456789987654321123456789987654321"), + L("-12,345,678987,654,321123,456,789987,654,321123,456,789987,654,321"), + L("-12,345,678987,654,321123,456,789987,654,321123,456,789987,654,321") +}; + +const CHAR *fmt_long[] = +{ + L("%9ld%9ld%9ld%9ld%9ld%9ld"), + L("%I9ld%I9ld%I9ld%I9ld%I9ld%I9ld"), + L("%'11ld%'11ld%'11ld%'11ld%'11ld%'11ld"), + L("%I'11ld%I'11ld%I'11ld%I'11ld%I'11ld%I'11ld") +}; + +const long int val_long[] = +{ + -12345678, 987654321, 123456789, 987654321, 123456789, 987654321 +}; + +struct test +{ + const CHAR *str; + const CHAR *fmt; + int retval; +} int_tests[] = +{ + { L("foo\n"), L("foo\nbar"), -1 }, + { L("foo\n"), L("foo bar"), -1 }, + { L("foo\n"), L("foo %d"), -1 }, + { L("foo\n"), L("foo\n%d"), -1 }, + { L("foon"), L("foonbar"), -1 }, + { L("foon"), L("foon%d"), -1 }, + { L("foo "), L("foo bar"), -1 }, + { L("foo "), L("foo %d"), -1 }, + { L("foo\t"), L("foo\tbar"), -1 }, + { L("foo\t"), L("foo bar"), -1 }, + { L("foo\t"), L("foo %d"), -1 }, + { L("foo\t"), L("foo\t%d"), -1 }, + { L("foo"), L("foo"), 0 }, + { L("foon"), L("foo bar"), 0 }, + { L("foon"), L("foo %d"), 0 }, + { L("foo "), L("fooxbar"), 0 }, + { L("foo "), L("foox%d"), 0 }, + { L("foo bar"), L("foon"), 0 }, + { L("foo bar"), L("foo bar"), 0 }, + { L("foo bar"), L("foo %d"), 0 }, + { L("foo bar"), L("foon%d"), 0 }, + { L("foo (nil)"), L("foo %p"), 1}, + { L("foo (nil)"), L("foo %4p"), 0}, + { L("foo "), L("foo %n"), 0 }, + { L("foo%bar1"), L("foo%%bar%d"), 1 }, + /* Some OSes skip whitespace here while others don't. */ + { L("foo \t %bar1"), L("foo%%bar%d"), 1 } +}; + +struct test double_tests[] = +{ + { L("-1"), L("%1g"), 0 }, + { L("-.1"), L("%2g"), 0 }, + { L("-inf"), L("%3g"), 0 }, + { L("+0"), L("%1g"), }, + { L("-0x1p0"), L("%2g"), 1 }, + { L("-..1"), L("%g"), 0 }, + { L("-inf"), L("%g"), 1 } +}; + +struct test2 +{ + const CHAR *str; + const CHAR *fmt; + int retval; + char residual; +} double_tests2[] = +{ + { L("0e+0"), L("%g%c"), 1, 0 }, + { L("0xe+0"), L("%g%c"), 2, '+' }, + { L("0x.e+0"), L("%g%c"), 2, '+' }, +}; + +static int +do_test (void) +{ + double d[6]; + long l[6]; + int i, j; + int tst_locale; + int result = 0; + + tst_locale = 1; + if (tst_locale) + if (setlocale (LC_ALL, "en_US.ISO-8859-1") == NULL) + { + puts ("Failed to set en_US locale, skipping locale related tests"); + tst_locale = 0; + } + + for (i = 0; i < 4; ++i) + { + if (SSCANF (str_double[i], L("%11lf%11lf%11lf%11lf%11lf%11lf"), + &d[0], &d[1], &d[2], &d[3], &d[4], &d[5]) != 6) + { + printf ("Double sscanf test %d wrong number of " + "assigned inputs\n", i); + result = 1; + } + else + for (j = 0; j < 6; ++j) + if (d[j] != val_double[6 * i + j]) + { + printf ("Double sscanf test %d failed (%g instead of %g)\n", + i, d[j], val_double[6 * i + j]); + result = 1; + break; + } + } + + for (i = 0; i < 4; ++i) + { + if (SSCANF (str_long[i], fmt_long[i], + &l[0], &l[1], &l[2], &l[3], &l[4], &l[5]) != 6) + { + printf ("Integer sscanf test %d wrong number of " + "assigned inputs\n", i); + result = 1; + } + else + for (j = 0; j < 6; ++j) + if (l[j] != val_long[j]) + { + printf ("Integer sscanf test %d failed (%ld instead %ld)\n", + i, l[j], val_long[j]); + result = 1; + break; + } + + if (! tst_locale) + break; + } + + for (i = 0; i < sizeof (int_tests) / sizeof (int_tests[0]); ++i) + { + long dummy; + int ret; + + if ((ret = SSCANF (int_tests[i].str, int_tests[i].fmt, + &dummy)) != int_tests[i].retval) + { + printf ("int_tests[%d] returned %d != %d\n", + i, ret, int_tests[i].retval); + result = 1; + } + } + + for (i = 0; i < sizeof (double_tests) / sizeof (double_tests[0]); ++i) + { + double dummy; + int ret; + + if ((ret = SSCANF (double_tests[i].str, double_tests[i].fmt, + &dummy)) != double_tests[i].retval) + { + printf ("double_tests[%d] returned %d != %d\n", + i, ret, double_tests[i].retval); + result = 1; + } + } + + for (i = 0; i < sizeof (double_tests2) / sizeof (double_tests2[0]); ++i) + { + double dummy; + int ret; + char c = 0; + + if ((ret = SSCANF (double_tests2[i].str, double_tests2[i].fmt, + &dummy, &c)) != double_tests2[i].retval) + { + printf ("double_tests2[%d] returned %d != %d\n", + i, ret, double_tests2[i].retval); + result = 1; + } + else if (ret == 2 && c != double_tests2[i].residual) + { + printf ("double_tests2[%d] stopped at '%c' != '%c'\n", + i, c, double_tests2[i].residual); + result = 1; + } + } + + /* BZ #16618 + The test will segfault during SSCANF if the buffer overflow + is not fixed. The size of `s` is such that it forces the use + of malloc internally and this triggers the incorrect computation. + Thus the value for SIZE is arbitrariy high enough that malloc + is used. */ + { +#define SIZE 131072 + CHAR *s = malloc ((SIZE + 1) * sizeof (*s)); + if (s == NULL) + abort (); + for (size_t i = 0; i < SIZE; i++) + s[i] = L('0'); + s[SIZE] = L('\0'); + int i = 42; + /* Scan multi-digit zero into `i`. */ + if (SSCANF (s, L("%d"), &i) != 1) + { + printf ("FAIL: bug16618: SSCANF did not read one input item.\n"); + result = 1; + } + if (i != 0) + { + printf ("FAIL: bug16618: Value of `i` was not zero as expected.\n"); + result = 1; + } + free (s); + if (result != 1) + printf ("PASS: bug16618: Did not crash.\n"); +#undef SIZE + } + + + return result; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/tst-swprintf.c b/REORG.TODO/stdio-common/tst-swprintf.c new file mode 100644 index 0000000000..ce62c6bf68 --- /dev/null +++ b/REORG.TODO/stdio-common/tst-swprintf.c @@ -0,0 +1,59 @@ +#include <locale.h> +#include <stdio.h> +#include <stdlib.h> +#include <wchar.h> + +/* This is the relevant piece from the charmap: +<UFF61> /x8e/xa1 HALFWIDTH IDEOGRAPHIC FULL STOP +<UFF62> /x8e/xa2 HALFWIDTH LEFT CORNER BRACKET +<UFF63> /x8e/xa3 HALFWIDTH RIGHT CORNER BRACKET +<UFF64> /x8e/xa4 HALFWIDTH IDEOGRAPHIC COMMA + */ + +const char input[] = "\x8e\xa1g\x8e\xa2h\x8e\xa3i\x8e\xa4j"; + +static int +do_test (void) +{ + wchar_t buf[1000]; +#define nbuf (sizeof (buf) / sizeof (buf[0])) + int result = 0; + ssize_t n; + + if (setlocale (LC_ALL, "ja_JP.EUC-JP") == NULL) + { + puts ("cannot set locale"); + exit (1); + } + +#define CHECK(fmt, nexp, exp) \ + n = swprintf (buf, nbuf, fmt, input); \ + if (n != nexp) \ + { \ + printf ("swprintf (.., .., L\"%ls\", \"%ls\") return %d, not %d\n", \ + fmt, (wchar_t*) input, (int) n, (int) nexp); \ + result = 1; \ + } \ + else if (wcscmp (buf, exp) != 0) \ + { \ + printf ("\ +swprintf (.., .., L\"%ls\", \"%ls\") produced \"%ls\", not \"%ls\"\n", \ + fmt, (wchar_t *) input, buf, exp ); \ + result = 1; \ + } + + CHECK (L"[%-6.0s]", 8, L"[ ]"); + CHECK (L"[%-6.1s]", 8, L"[\xff61 ]"); + CHECK (L"[%-6.2s]", 8, L"[\xff61g ]"); + CHECK (L"[%-6.3s]", 8, L"[\xff61g\xff62 ]"); + CHECK (L"[%-6.4s]", 8, L"[\xff61g\xff62h ]"); + CHECK (L"[%-6.5s]", 8, L"[\xff61g\xff62h\xff63 ]"); + CHECK (L"[%-6.6s]", 8, L"[\xff61g\xff62h\xff63i]"); + CHECK (L"[%-6.7s]", 9, L"[\xff61g\xff62h\xff63i\xff64]"); + CHECK (L"[%-6.8s]", 10, L"[\xff61g\xff62h\xff63i\xff64j]"); + + return result; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/tst-swscanf.c b/REORG.TODO/stdio-common/tst-swscanf.c new file mode 100644 index 0000000000..6ec1c8e6c7 --- /dev/null +++ b/REORG.TODO/stdio-common/tst-swscanf.c @@ -0,0 +1,5 @@ +#define CHAR wchar_t +#define L(str) L##str +#define SSCANF swscanf +#include <wchar.h> +#include "tst-sscanf.c" diff --git a/REORG.TODO/stdio-common/tst-tmpnam.c b/REORG.TODO/stdio-common/tst-tmpnam.c new file mode 100644 index 0000000000..57e620db06 --- /dev/null +++ b/REORG.TODO/stdio-common/tst-tmpnam.c @@ -0,0 +1,53 @@ +/* Copyright (C) 1998-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +static int +do_test (void) +{ + const char *name; + int retval = 0; + + /* Set TMPDIR to a value other than the traditional /tmp. */ + setenv ("TMPDIR", "/usr", 1); + + name = tmpnam (NULL); + + printf ("name = %s\n", name); + + /* Make sure the name is not based on the value in TMPDIR. */ + if (strncmp (name, "/usr", 4) == 0) + { + puts ("error: `tmpnam' used TMPDIR value"); + retval = 1; + } + + /* Test that it is in the directory denoted by P_tmpdir. */ + if (strncmp (name, P_tmpdir, sizeof (P_tmpdir) - 1) != 0) + { + puts ("error: `tmpnam' return value not in P_tmpdir directory"); + retval = 1; + } + + return retval; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/tst-unbputc.c b/REORG.TODO/stdio-common/tst-unbputc.c new file mode 100644 index 0000000000..7200a82a2a --- /dev/null +++ b/REORG.TODO/stdio-common/tst-unbputc.c @@ -0,0 +1,14 @@ +#include <stdio.h> + + +static int +do_test (void) +{ + putc ('1', stderr); + putc ('2', stderr); + + return 0; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/tst-unbputc.sh b/REORG.TODO/stdio-common/tst-unbputc.sh new file mode 100755 index 0000000000..d75a8bb1af --- /dev/null +++ b/REORG.TODO/stdio-common/tst-unbputc.sh @@ -0,0 +1,33 @@ +#!/bin/sh +# Testing the stdio implementation +# Copyright (C) 2000-2017 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 +# <http://www.gnu.org/licenses/>. + +set -e + +common_objpfx=$1; shift +test_program_prefix=$1; shift + +status=0 + +${test_program_prefix} \ + ${common_objpfx}stdio-common/tst-unbputc \ + 2> ${common_objpfx}stdio-common/tst-unbputc.out || status=1 + +(printf 12 | cmp ${common_objpfx}stdio-common/tst-unbputc.out -) || status=1 + +exit $status diff --git a/REORG.TODO/stdio-common/tst-ungetc.c b/REORG.TODO/stdio-common/tst-ungetc.c new file mode 100644 index 0000000000..44cf6a6bf6 --- /dev/null +++ b/REORG.TODO/stdio-common/tst-ungetc.c @@ -0,0 +1,63 @@ +/* Test for ungetc bugs. */ + +#include <stdio.h> +#include <unistd.h> + +#undef assert +#define assert(x) \ + if (!(x)) \ + { \ + fputs ("test failed: " #x "\n", stderr); \ + retval = 1; \ + goto the_end; \ + } + +int +main (int argc, char *argv[]) +{ + char *name; + FILE *fp = NULL; + int retval = 0; + int c; + char buffer[64]; + + name = tmpnam (NULL); + fp = fopen (name, "w"); + assert (fp != NULL) + fputs ("bla", fp); + fclose (fp); + fp = NULL; + + fp = fopen (name, "r"); + assert (fp != NULL); + assert (ungetc ('z', fp) == 'z'); + assert (getc (fp) == 'z'); + assert (getc (fp) == 'b'); + assert (getc (fp) == 'l'); + assert (ungetc ('m', fp) == 'm'); + assert (getc (fp) == 'm'); + assert ((c = getc (fp)) == 'a'); + assert (getc (fp) == EOF); + assert (ungetc (c, fp) == c); + assert (feof (fp) == 0); + assert (getc (fp) == c); + assert (getc (fp) == EOF); + fclose (fp); + fp = NULL; + + fp = fopen (name, "r"); + assert (fp != NULL); + assert (getc (fp) == 'b'); + assert (getc (fp) == 'l'); + assert (ungetc ('b', fp) == 'b'); + assert (fread (buffer, 1, 64, fp) == 2); + assert (buffer[0] == 'b'); + assert (buffer[1] == 'a'); + +the_end: + if (fp != NULL) + fclose (fp); + unlink (name); + + return retval; +} diff --git a/REORG.TODO/stdio-common/tst-unlockedio.c b/REORG.TODO/stdio-common/tst-unlockedio.c new file mode 100644 index 0000000000..35652ce772 --- /dev/null +++ b/REORG.TODO/stdio-common/tst-unlockedio.c @@ -0,0 +1,169 @@ +/* Test for some *_unlocked stdio interfaces. + Copyright (C) 2004-2017 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Jakub Jelinek <jakub@redhat.com>, 2004. + + 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 <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <libc-diag.h> + +int fd; +static void do_prepare (void); +static int do_test (void); +#define PREPARE(argc, argv) do_prepare () +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" + +static int +do_test (void) +{ + const char blah[] = "BLAH"; + char buf[strlen (blah) + 1]; + FILE *fp, *f; + const char *cp; + char *wp; + + if ((fp = fdopen (fd, "w+")) == NULL) + exit (1); + + flockfile (fp); + + f = fp; + cp = blah; + /* These tests deliberately use fwrite_unlocked with the size + argument specified as 0, which results in "division by zero" + warnings from the expansion of that macro (in code that is not + evaluated for a size of 0). This applies to the tests of + fread_unlocked below as well. */ + DIAG_PUSH_NEEDS_COMMENT; + DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wdiv-by-zero"); + if (ftello (fp) != 0 + || fwrite_unlocked (blah, blah - blah, strlen (blah), f++) != 0 + || f != fp + 1 + || fwrite_unlocked ("", 5.0, 0, --f) != 0 + || f != fp + || fwrite_unlocked (cp++, 16, 0.25, fp) != 0 + || cp != blah + 1 + || fwrite_unlocked (--cp, 0.25, 16, fp) != 0 + || cp != blah + || fwrite_unlocked (blah, 0, -0.0, fp) != 0 + || ftello (fp) != 0) + { + puts ("One of fwrite_unlocked tests failed"); + exit (1); + } + DIAG_POP_NEEDS_COMMENT; + + if (fwrite_unlocked (blah, 1, strlen (blah) - 2, fp) != strlen (blah) - 2) + { + puts ("Could not write string into file"); + exit (1); + } + + if (putc_unlocked ('A' + 0x1000000, fp) != 'A') + { + puts ("putc_unlocked failed"); + exit (1); + } + + f = fp; + cp = blah + strlen (blah) - 1; + if (putc_unlocked (*cp++, f++) != 'H' + || f != fp + 1 + || cp != strchr (blah, '\0')) + { + puts ("fputc_unlocked failed"); + exit (1); + } + + if (ftello (fp) != (off_t) strlen (blah)) + { + printf ("Failed to write %zd bytes to temporary file", strlen (blah)); + exit (1); + } + + rewind (fp); + + f = fp; + wp = buf; + memset (buf, ' ', sizeof (buf)); + /* See explanation above. */ + DIAG_PUSH_NEEDS_COMMENT; + DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wdiv-by-zero"); + if (ftello (fp) != 0 + || fread_unlocked (buf, buf - buf, strlen (blah), f++) != 0 + || f != fp + 1 + || fread_unlocked (buf, 5.0, 0, --f) != 0 + || f != fp + || fread_unlocked (wp++, 16, 0.25, fp) != 0 + || wp != buf + 1 + || fread_unlocked (--wp, 0.25, 16, fp) != 0 + || wp != buf + || fread_unlocked (buf, 0, -0.0, fp) != 0 + || ftello (fp) != 0 + || memcmp (buf, " ", sizeof (buf)) != 0) + { + puts ("One of fread_unlocked tests failed"); + exit (1); + } + DIAG_POP_NEEDS_COMMENT; + + if (fread_unlocked (buf, 1, strlen (blah) - 2, fp) != strlen (blah) - 2) + { + puts ("Could not read string from file"); + exit (1); + } + + if (getc_unlocked (fp) != 'A') + { + puts ("getc_unlocked failed"); + exit (1); + } + + f = fp; + if (fgetc_unlocked (f++) != 'H' + || f != fp + 1 + || fgetc_unlocked (--f) != EOF + || f != fp) + { + puts ("fgetc_unlocked failed"); + exit (1); + } + + if (ftello (fp) != (off_t) strlen (blah)) + { + printf ("Failed to read %zd bytes from temporary file", strlen (blah)); + exit (1); + } + + funlockfile (fp); + fclose (fp); + + return 0; +} + +static void +do_prepare (void) +{ + fd = create_temp_file ("tst-unlockedio.", NULL); + if (fd == -1) + { + printf ("cannot create temporary file: %m\n"); + exit (1); + } +} diff --git a/REORG.TODO/stdio-common/tst-vfprintf-width-prec.c b/REORG.TODO/stdio-common/tst-vfprintf-width-prec.c new file mode 100644 index 0000000000..c85190275a --- /dev/null +++ b/REORG.TODO/stdio-common/tst-vfprintf-width-prec.c @@ -0,0 +1,108 @@ +/* Test for memory leak with large width and precision. + Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <mcheck.h> +#include <stdio.h> +#include <stdlib.h> +#include <sys/resource.h> +#include <wchar.h> + +static int +do_test (void) +{ + mtrace (); + + int ret; + { + char *result; + ret = asprintf (&result, "%133000.133001x", 17); + if (ret < 0) + { + printf ("error: asprintf: %m\n"); + return 1; + } + free (result); + } + { + wchar_t *result = calloc (ret + 1, sizeof (wchar_t)); + if (result == NULL) + { + printf ("error: calloc (%d, %zu): %m", ret + 1, sizeof (wchar_t)); + return 1; + } + + ret = swprintf (result, ret + 1, L"%133000.133001x", 17); + if (ret < 0) + { + printf ("error: swprintf: %d (%m)\n", ret); + return 1; + } + free (result); + } + + /* Limit the size of the process, so that the second allocation will + fail. */ + { + struct rlimit limit; + if (getrlimit (RLIMIT_AS, &limit) != 0) + { + printf ("getrlimit (RLIMIT_AS) failed: %m\n"); + return 1; + } + long target = 200 * 1024 * 1024; + if (limit.rlim_cur == RLIM_INFINITY || limit.rlim_cur > target) + { + limit.rlim_cur = target; + if (setrlimit (RLIMIT_AS, &limit) != 0) + { + printf ("setrlimit (RLIMIT_AS) failed: %m\n"); + return 1; + } + } + } + + { + char *result; + ret = asprintf (&result, "%133000.999999999x", 17); + if (ret >= 0) + { + printf ("error: asprintf: incorrect result %d\n", ret); + return 1; + } + } + { + wchar_t result[100]; + if (result == NULL) + { + printf ("error: calloc (%d, %zu): %m", ret + 1, sizeof (wchar_t)); + return 1; + } + + ret = swprintf (result, 100, L"%133000.999999999x", 17); + if (ret >= 0) + { + printf ("error: swprintf: incorrect result %d\n", ret); + return 1; + } + } + + return 0; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/tst-wc-printf.c b/REORG.TODO/stdio-common/tst-wc-printf.c new file mode 100644 index 0000000000..2a2acb5059 --- /dev/null +++ b/REORG.TODO/stdio-common/tst-wc-printf.c @@ -0,0 +1,25 @@ +#define _GNU_SOURCE 1 +#include <wchar.h> +#include <stdio.h> +#include <string.h> +#include <wctype.h> + +static int +do_test (void) +{ + wchar_t tmp[3]; + tmp[0] = '8'; + tmp[1] = '1'; + tmp[2] = 0; + + printf ("Test for wide character output with printf\n"); + + printf ("with %%S: %S\n", tmp); + + printf ("with %%C: %C\n", (wint_t) tmp[0]); + + return 0; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" diff --git a/REORG.TODO/stdio-common/tstdiomisc.c b/REORG.TODO/stdio-common/tstdiomisc.c new file mode 100644 index 0000000000..89009e0549 --- /dev/null +++ b/REORG.TODO/stdio-common/tstdiomisc.c @@ -0,0 +1,289 @@ +#include <float.h> +#include <math.h> +#include <stdio.h> +#include <string.h> +#include <wchar.h> +#include <libc-diag.h> + +static int +t1 (void) +{ + int n = -1; + sscanf ("abc ", "abc %n", &n); + printf ("t1: count=%d\n", n); + + return n != 5; +} + +static int +t2 (void) +{ + int result = 0; + int n; + long N; + int retval; +#define SCAN(INPUT, FORMAT, VAR, EXP_RES, EXP_VAL) \ + VAR = -1; \ + retval = sscanf (INPUT, FORMAT, &VAR); \ + printf ("sscanf (\"%s\", \"%s\", &x) => %d, x = %ld\n", \ + INPUT, FORMAT, retval, (long int) VAR); \ + result |= retval != EXP_RES || VAR != EXP_VAL + + /* This function is testing corner cases of the scanf format string, + so they do not all conform to -Wformat's expectations. */ + DIAG_PUSH_NEEDS_COMMENT; + DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wformat"); + DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wformat-extra-args"); + + SCAN ("12345", "%ld", N, 1, 12345); + SCAN ("12345", "%llllld", N, 0, -1); + SCAN ("12345", "%LLLLLd", N, 0, -1); + SCAN ("test ", "%*s%n", n, 0, 4); + SCAN ("test ", "%2*s%n", n, 0, -1); + SCAN ("12 ", "%l2d", n, 0, -1); + SCAN ("12 ", "%2ld", N, 1, 12); + + n = -1; + N = -1; + retval = sscanf ("1 1", "%d %Z", &n, &N); + printf ("sscanf (\"1 1\", \"%%d %%Z\", &n, &N) => %d, n = %d, N = %ld\n", \ + retval, n, N); \ + result |= retval != 1 || n != 1 || N != -1; + + DIAG_POP_NEEDS_COMMENT; + + return result; +} + +static int +t3 (void) +{ + char buf[80]; + wchar_t wbuf[80]; + int result = 0; + int retval; + + retval = sprintf (buf, "%p", (char *) NULL); + result |= retval != 5 || strcmp (buf, "(nil)") != 0; + + retval = swprintf (wbuf, sizeof (wbuf) / sizeof (wbuf[0]), + L"%p", (char *) NULL); + result |= retval != 5 || wcscmp (wbuf, L"(nil)") != 0; + + return result; +} + +volatile double qnanval; +volatile long double lqnanval; +/* A sNaN is only guaranteed to be representable in variables with static (or + thread-local) storage duration. */ +static volatile double snanval = __builtin_nans (""); +static volatile double msnanval = -__builtin_nans (""); +static volatile long double lsnanval = __builtin_nansl (""); +static volatile long double lmsnanval = -__builtin_nansl (""); +volatile double infval; +volatile long double linfval; + + +static int +F (void) +{ + char buf[80]; + wchar_t wbuf[40]; + int result = 0; + + qnanval = NAN; + + /* The %f and %F arguments are in fact constants, but GCC is + prevented from seeing this (volatile is used) so it cannot tell + that the output is not truncated. */ + DIAG_PUSH_NEEDS_COMMENT; +#if __GNUC_PREREQ (7, 0) + DIAG_IGNORE_NEEDS_COMMENT (7.0, "-Wformat-truncation"); +#endif + + snprintf (buf, sizeof buf, "%a %A %e %E %f %F %g %G", + qnanval, qnanval, qnanval, qnanval, + qnanval, qnanval, qnanval, qnanval); + result |= strcmp (buf, "nan NAN nan NAN nan NAN nan NAN") != 0; + printf ("expected \"nan NAN nan NAN nan NAN nan NAN\", got \"%s\"\n", buf); + + snprintf (buf, sizeof buf, "%a %A %e %E %f %F %g %G", + -qnanval, -qnanval, -qnanval, -qnanval, + -qnanval, -qnanval, -qnanval, -qnanval); + result |= strcmp (buf, "-nan -NAN -nan -NAN -nan -NAN -nan -NAN") != 0; + printf ("expected \"-nan -NAN -nan -NAN -nan -NAN -nan -NAN\", got \"%s\"\n", + buf); + + snprintf (buf, sizeof buf, "%a %A %e %E %f %F %g %G", + snanval, snanval, snanval, snanval, + snanval, snanval, snanval, snanval); + result |= strcmp (buf, "nan NAN nan NAN nan NAN nan NAN") != 0; + printf ("expected \"nan NAN nan NAN nan NAN nan NAN\", got \"%s\"\n", buf); + + snprintf (buf, sizeof buf, "%a %A %e %E %f %F %g %G", + msnanval, msnanval, msnanval, msnanval, + msnanval, msnanval, msnanval, msnanval); + result |= strcmp (buf, "-nan -NAN -nan -NAN -nan -NAN -nan -NAN") != 0; + printf ("expected \"-nan -NAN -nan -NAN -nan -NAN -nan -NAN\", got \"%s\"\n", + buf); + + infval = DBL_MAX * DBL_MAX; + + snprintf (buf, sizeof buf, "%a %A %e %E %f %F %g %G", + infval, infval, infval, infval, infval, infval, infval, infval); + result |= strcmp (buf, "inf INF inf INF inf INF inf INF") != 0; + printf ("expected \"inf INF inf INF inf INF inf INF\", got \"%s\"\n", buf); + + snprintf (buf, sizeof buf, "%a %A %e %E %f %F %g %G", + -infval, -infval, -infval, -infval, + -infval, -infval, -infval, -infval); + result |= strcmp (buf, "-inf -INF -inf -INF -inf -INF -inf -INF") != 0; + printf ("expected \"-inf -INF -inf -INF -inf -INF -inf -INF\", got \"%s\"\n", + buf); + + swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]), L"%a %A %e %E %f %F %g %G", + qnanval, qnanval, qnanval, qnanval, + qnanval, qnanval, qnanval, qnanval); + result |= wcscmp (wbuf, L"nan NAN nan NAN nan NAN nan NAN") != 0; + printf ("expected L\"nan NAN nan NAN nan NAN nan NAN\", got L\"%S\"\n", wbuf); + + swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]), L"%a %A %e %E %f %F %g %G", + -qnanval, -qnanval, -qnanval, -qnanval, + -qnanval, -qnanval, -qnanval, -qnanval); + result |= wcscmp (wbuf, L"-nan -NAN -nan -NAN -nan -NAN -nan -NAN") != 0; + printf ("expected L\"-nan -NAN -nan -NAN -nan -NAN -nan -NAN\", got L\"%S\"\n", + wbuf); + + swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]), L"%a %A %e %E %f %F %g %G", + snanval, snanval, snanval, snanval, + snanval, snanval, snanval, snanval); + result |= wcscmp (wbuf, L"nan NAN nan NAN nan NAN nan NAN") != 0; + printf ("expected L\"nan NAN nan NAN nan NAN nan NAN\", got L\"%S\"\n", wbuf); + + swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]), L"%a %A %e %E %f %F %g %G", + msnanval, msnanval, msnanval, msnanval, + msnanval, msnanval, msnanval, msnanval); + result |= wcscmp (wbuf, L"-nan -NAN -nan -NAN -nan -NAN -nan -NAN") != 0; + printf ("expected L\"-nan -NAN -nan -NAN -nan -NAN -nan -NAN\", got L\"%S\"\n", + wbuf); + + swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]), L"%a %A %e %E %f %F %g %G", + infval, infval, infval, infval, infval, infval, infval, infval); + result |= wcscmp (wbuf, L"inf INF inf INF inf INF inf INF") != 0; + printf ("expected L\"inf INF inf INF inf INF inf INF\", got L\"%S\"\n", wbuf); + + swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]), L"%a %A %e %E %f %F %g %G", + -infval, -infval, -infval, -infval, + -infval, -infval, -infval, -infval); + result |= wcscmp (wbuf, L"-inf -INF -inf -INF -inf -INF -inf -INF") != 0; + printf ("expected L\"-inf -INF -inf -INF -inf -INF -inf -INF\", got L\"%S\"\n", + wbuf); + + lqnanval = NAN; + + snprintf (buf, sizeof buf, "%La %LA %Le %LE %Lf %LF %Lg %LG", + lqnanval, lqnanval, lqnanval, lqnanval, + lqnanval, lqnanval, lqnanval, lqnanval); + result |= strcmp (buf, "nan NAN nan NAN nan NAN nan NAN") != 0; + printf ("expected \"nan NAN nan NAN nan NAN nan NAN\", got \"%s\"\n", buf); + + snprintf (buf, sizeof buf, "%La %LA %Le %LE %Lf %LF %Lg %LG", + -lqnanval, -lqnanval, -lqnanval, -lqnanval, + -lqnanval, -lqnanval, -lqnanval, -lqnanval); + result |= strcmp (buf, "-nan -NAN -nan -NAN -nan -NAN -nan -NAN") != 0; + printf ("expected \"-nan -NAN -nan -NAN -nan -NAN -nan -NAN\", got \"%s\"\n", + buf); + + snprintf (buf, sizeof buf, "%La %LA %Le %LE %Lf %LF %Lg %LG", + lsnanval, lsnanval, lsnanval, lsnanval, + lsnanval, lsnanval, lsnanval, lsnanval); + result |= strcmp (buf, "nan NAN nan NAN nan NAN nan NAN") != 0; + printf ("expected \"nan NAN nan NAN nan NAN nan NAN\", got \"%s\"\n", buf); + + snprintf (buf, sizeof buf, "%La %LA %Le %LE %Lf %LF %Lg %LG", + lmsnanval, lmsnanval, lmsnanval, lmsnanval, + lmsnanval, lmsnanval, lmsnanval, lmsnanval); + result |= strcmp (buf, "-nan -NAN -nan -NAN -nan -NAN -nan -NAN") != 0; + printf ("expected \"-nan -NAN -nan -NAN -nan -NAN -nan -NAN\", got \"%s\"\n", + buf); + + linfval = LDBL_MAX * LDBL_MAX; + + snprintf (buf, sizeof buf, "%La %LA %Le %LE %Lf %LF %Lg %LG", + linfval, linfval, linfval, linfval, + linfval, linfval, linfval, linfval); + result |= strcmp (buf, "inf INF inf INF inf INF inf INF") != 0; + printf ("expected \"inf INF inf INF inf INF inf INF\", got \"%s\"\n", buf); + + snprintf (buf, sizeof buf, "%La %LA %Le %LE %Lf %LF %Lg %LG", + -linfval, -linfval, -linfval, -linfval, + -linfval, -linfval, -linfval, -linfval); + result |= strcmp (buf, "-inf -INF -inf -INF -inf -INF -inf -INF") != 0; + printf ("expected \"-inf -INF -inf -INF -inf -INF -inf -INF\", got \"%s\"\n", + buf); + + swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]), + L"%La %LA %Le %LE %Lf %LF %Lg %LG", + lqnanval, lqnanval, lqnanval, lqnanval, + lqnanval, lqnanval, lqnanval, lqnanval); + result |= wcscmp (wbuf, L"nan NAN nan NAN nan NAN nan NAN") != 0; + printf ("expected L\"nan NAN nan NAN nan NAN nan NAN\", got L\"%S\"\n", wbuf); + + swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]), + L"%La %LA %Le %LE %Lf %LF %Lg %LG", + -lqnanval, -lqnanval, -lqnanval, -lqnanval, + -lqnanval, -lqnanval, -lqnanval, -lqnanval); + result |= wcscmp (wbuf, L"-nan -NAN -nan -NAN -nan -NAN -nan -NAN") != 0; + printf ("expected L\"-nan -NAN -nan -NAN -nan -NAN -nan -NAN\", got L\"%S\"\n", + wbuf); + + swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]), + L"%La %LA %Le %LE %Lf %LF %Lg %LG", + lsnanval, lsnanval, lsnanval, lsnanval, + lsnanval, lsnanval, lsnanval, lsnanval); + result |= wcscmp (wbuf, L"nan NAN nan NAN nan NAN nan NAN") != 0; + printf ("expected L\"nan NAN nan NAN nan NAN nan NAN\", got L\"%S\"\n", wbuf); + + swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]), + L"%La %LA %Le %LE %Lf %LF %Lg %LG", + lmsnanval, lmsnanval, lmsnanval, lmsnanval, + lmsnanval, lmsnanval, lmsnanval, lmsnanval); + result |= wcscmp (wbuf, L"-nan -NAN -nan -NAN -nan -NAN -nan -NAN") != 0; + printf ("expected L\"-nan -NAN -nan -NAN -nan -NAN -nan -NAN\", got L\"%S\"\n", + wbuf); + + swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]), + L"%La %LA %Le %LE %Lf %LF %Lg %LG", + linfval, linfval, linfval, linfval, + linfval, linfval, linfval, linfval); + result |= wcscmp (wbuf, L"inf INF inf INF inf INF inf INF") != 0; + printf ("expected L\"inf INF inf INF inf INF inf INF\", got L\"%S\"\n", wbuf); + + swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]), + L"%La %LA %Le %LE %Lf %LF %Lg %LG", + -linfval, -linfval, -linfval, -linfval, + -linfval, -linfval, -linfval, -linfval); + result |= wcscmp (wbuf, L"-inf -INF -inf -INF -inf -INF -inf -INF") != 0; + printf ("expected L\"-inf -INF -inf -INF -inf -INF -inf -INF\", got L\"%S\"\n", + wbuf); + + DIAG_POP_NEEDS_COMMENT; + + return result; +} + +int +main (int argc, char *argv[]) +{ + int result = 0; + + result |= t1 (); + result |= t2 (); + result |= t3 (); + result |= F (); + + result |= fflush (stdout) == EOF; + + return result; +} diff --git a/REORG.TODO/stdio-common/tstgetln.c b/REORG.TODO/stdio-common/tstgetln.c new file mode 100644 index 0000000000..79ab90c7cc --- /dev/null +++ b/REORG.TODO/stdio-common/tstgetln.c @@ -0,0 +1,46 @@ +/* Copyright (C) 1992-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <stdio.h> +#undef ssize_t +#define ssize_t _IO_ssize_t + +int +main (int argc, char *argv[]) +{ + char *buf = NULL; + size_t size = 0; + ssize_t len; + + while ((len = getline (&buf, &size, stdin)) != -1) + { + printf ("bufsize %Zu; read %Zd: ", size, len); + if (fwrite (buf, len, 1, stdout) != 1) + { + perror ("fwrite"); + return 1; + } + } + + if (ferror (stdin)) + { + perror ("getline"); + return 1; + } + + return 0; +} diff --git a/REORG.TODO/stdio-common/tstgetln.input b/REORG.TODO/stdio-common/tstgetln.input new file mode 100644 index 0000000000..d04ed5bf78 --- /dev/null +++ b/REORG.TODO/stdio-common/tstgetln.input @@ -0,0 +1,3 @@ +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy +z diff --git a/REORG.TODO/stdio-common/tstscanf.c b/REORG.TODO/stdio-common/tstscanf.c new file mode 100644 index 0000000000..50d0f33acf --- /dev/null +++ b/REORG.TODO/stdio-common/tstscanf.c @@ -0,0 +1,355 @@ +/* Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#ifdef BSD +#include </usr/include/stdio.h> +#else +#include <stdio.h> +#endif +#include <math.h> +#include <stdlib.h> +#include <string.h> + + +int +main (int argc, char **argv) +{ + char buf[BUFSIZ]; + FILE *in = stdin, *out = stdout; + int x; + int result = 0; + + if (sscanf ("0", "%d", &x) != 1) + { + fputs ("test failed!\n", stdout); + result = 1; + } + + if (sscanf ("08905x", "%9[0-9]", buf) != 1 + || strcmp (buf, "08905") != 0) + { + fputs ("test failed!\n", stdout); + result = 1; + } + + if (sscanf ("", "%10[a-z]", buf) != EOF) + { + fputs ("test failed!\n", stdout); + result = 1; + } + + sscanf ("conversion] Zero flag Ze]ro#\n", "%*[^]] %[^#]\n", buf); + if (strcmp (buf, "] Zero flag Ze]ro") != 0) + { + fputs ("test failed!\n", stdout); + result = 1; + } + + if (argc == 2 && !strcmp (argv[1], "-opipe")) + { + out = popen ("/bin/cat", "w"); + if (out == NULL) + { + perror ("popen: /bin/cat"); + result = 1; + } + } + else if (argc == 3 && !strcmp (argv[1], "-ipipe")) + { + sprintf (buf, "/bin/cat %s", argv[2]); + in = popen (buf, "r"); + if (in == NULL) + { + perror ("popen: /bin/cat"); + result = 1; + } + } + + { + char name[50]; + fprintf (out, + "sscanf (\"thompson\", \"%%s\", name) == %d, name == \"%s\"\n", + sscanf ("thompson", "%s", name), + name); + if (strcmp (name, "thompson") != 0) + { + fputs ("test failed!\n", stdout); + result = 1; + } + } + + fputs ("Testing scanf (vfscanf)\n", out); + + fputs ("Test 1:\n", out); + { + int n, i; + float x; + char name[50]; + n = fscanf (in, "%d%f%s", &i, &x, name); + fprintf (out, "n = %d, i = %d, x = %f, name = \"%.50s\"\n", + n, i, x, name); + if (n != 3 || i != 25 || x != 5.432F || strcmp (name, "thompson")) + { + fputs ("test failed!\n", stdout); + result = 1; + } + } + fprintf (out, "Residual: \"%s\"\n", fgets (buf, sizeof (buf), in)); + if (strcmp (buf, "\n")) + { + fputs ("test failed!\n", stdout); + result = 1; + } + fputs ("Test 2:\n", out); + { + int i; + float x; + char name[50]; + (void) fscanf (in, "%2d%f%*d %[0123456789]", &i, &x, name); + fprintf (out, "i = %d, x = %f, name = \"%.50s\"\n", i, x, name); + if (i != 56 || x != 789.0F || strcmp (name, "56")) + { + fputs ("test failed!\n", stdout); + result = 1; + } + } + fprintf (out, "Residual: \"%s\"\n", fgets (buf, sizeof (buf), in)); + if (strcmp (buf, "a72\n")) + { + fputs ("test failed!\n", stdout); + result = 1; + } + fputs ("Test 3:\n", out); + { + static struct { + int count; + float quant; + const char *units; + const char *item; + } ok[] = { + { 3, 2.0F, "quarts", "oil" }, + { 2, -12.8F, "degrees", "" }, + { 0, 0.0F, "", "" }, + { 3, 10.0F, "LBS", "fertilizer" }, + { 3, 100.0F, "rgs", "energy" }, + { -1, 0.0F, "", "" }}; + size_t rounds = 0; + float quant; + char units[21], item[21]; + while (!feof (in) && !ferror (in)) + { + int count; + + if (rounds++ >= sizeof (ok) / sizeof (ok[0])) + { + fputs ("test failed!\n", stdout); + result = 1; + } + + quant = 0.0; + units[0] = item[0] = '\0'; + count = fscanf (in, "%f%20s of %20s", &quant, units, item); + (void) fscanf (in, "%*[^\n]"); + fprintf (out, "count = %d, quant = %f, item = %.21s, units = %.21s\n", + count, quant, item, units); + if (count != ok[rounds-1].count || quant != ok[rounds-1].quant + || strcmp (item, ok[rounds-1].item) + || strcmp (units, ok[rounds-1].units)) + { + fputs ("test failed!\n", stdout); + result = 1; + } + } + } + buf[0] = '\0'; + fprintf (out, "Residual: \"%s\"\n", fgets (buf, sizeof (buf), in)); + if (strcmp (buf, "")) + { + fputs ("test failed!\n", stdout); + result = 1; + } + + if (out != stdout) + pclose (out); + + fputs ("Test 4:\n", out); + { + int res, val, n; + + res = sscanf ("-242", "%3o%n", &val, &n); + printf ("res = %d, val = %d, n = %d\n", res, val, n); + if (res != 1 || val != -20 || n != 3) + { + fputs ("test failed!\n", stdout); + result = 1; + } + } + + fputs ("Test 5:\n", out); + { + double a = 0, b = 0; + int res, n; + + res = sscanf ("1234567", "%3lg%3lg%n", &a, &b, &n); + printf ("res = %d, a = %g, b = %g, n = %d\n", res, a, b, n); + + if (res != 2 || a != 123 || b != 456 || n != 6) + { + fputs ("test failed!\n", stdout); + result = 1; + } + + res = sscanf ("0", "%lg", &a); + printf ("res = %d, a = %g\n", res, a); + + if (res != 1 || a != 0) + { + fputs ("test failed!\n", stdout); + result = 1; + } + + res = sscanf ("1e3", "%lg%n", &a, &n); + printf ("res = %d, a = %g, n = %d\n", res, a, n); + + if (res != 1 || a != 1000 || n != 3) + { + fputs ("test failed!\n", stdout); + result = 1; + } + } + + fputs ("Test 6:\n", stdout); + { + char *p = (char *) -1; + int res; + + sprintf (buf, "%p", NULL); + res = sscanf (buf, "%p", &p); + printf ("sscanf (\"%s\", \"%%p\", &p) = %d, p == %p\n", buf, res, p); + + if (res != 1 || p != NULL) + { + fputs ("test failed!\n", stdout); + result = 1; + } + } + + fputs ("Test 7:\n", stdout); + { + short a[2] = { -1, -1 }; + int res; + + res = sscanf ("32767 1234", "%hd %hd", &a[0], &a[1]); + printf ("res = %d, a[0] = %d, a[1] = %d\n", res, a[0], a[1]); + + if (res != 2 || a[0] != 32767 || a[1] != 1234) + { + fputs ("test failed!\n", stdout); + result = 1; + } + } + + fputs ("Test 8:\n", stdout); + { + double d = 123456.789; + int res; + + res = sscanf ("0x1234", "%lf", &d); + printf ("res = %d, d = %f\n", res, d); + + if (res != 1 || d != 4660) + { + fputs ("test failed!\n", stdout); + result = 1; + } + } + + fputs ("Test 9:\n", stdout); + { + /* From PR libc/1313 reported by Ben Caradoc-Davies <bmcd@physics.otago.ac.nz>. */ + float value; + int res; + + res = sscanf ("0123", "%2f", &value); + if (res != 1 || value != 1.0) + { + fputs ("test failed!\n", stdout); + result = 1; + } + } + + fputs ("Test 10:\n", stdout); + { + float value; + int res; + + res = sscanf ("--", "%f", &value); + if (res != 0) + { + fputs ("test failed!\n", stdout); + result = 1; + } + } + + fputs ("Test 11:\n", stdout); + { + char uart[50]; + int res; + + res = sscanf ("uart:16550A tx:0", "uart:%31s tx:%*u", uart); + if (res != 1) + { + fputs ("test failed!\n", stdout); + result = 1; + } + } + + fputs ("Test 12:\n", stdout); + { + char uart[50]; + int res; + + res = sscanf ("uart:16550A", "uart:%31s tx:%*u", uart); + if (res != 1) + { + fputs ("test failed!\n", stdout); + result = 1; + } + } + + fputs ("Test 13:\n", stdout); + { + float value; + int res; + + res = sscanf ("-InF", "%f", &value); + if (res != 1 || isinf (value) != -1) + { + fputs ("test failed!\n", stdout); + result = 1; + } + + res = sscanf ("+InfiNiTY", "%f", &value); + if (res != 1 || isinf (value) != 1) + { + fputs ("test failed!\n", stdout); + result = 1; + } + } + + return result; +} diff --git a/REORG.TODO/stdio-common/tstscanf.input b/REORG.TODO/stdio-common/tstscanf.input new file mode 100644 index 0000000000..26158652dd --- /dev/null +++ b/REORG.TODO/stdio-common/tstscanf.input @@ -0,0 +1,7 @@ +25 54.32E-1 thompson +56789 0123 56a72 +2 quarts of oil +-12.8degrees Celsius +lots of luck +10.0LBS of fertilizer +100ergs of energy diff --git a/REORG.TODO/stdio-common/vfprintf.c b/REORG.TODO/stdio-common/vfprintf.c new file mode 100644 index 0000000000..b8c87a539f --- /dev/null +++ b/REORG.TODO/stdio-common/vfprintf.c @@ -0,0 +1,2375 @@ +/* Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <ctype.h> +#include <limits.h> +#include <printf.h> +#include <stdarg.h> +#include <stdint.h> +#include <stdlib.h> +#include <string.h> +#include <errno.h> +#include <wchar.h> +#include <libc-lock.h> +#include <sys/param.h> +#include <_itoa.h> +#include <locale/localeinfo.h> +#include <stdio.h> +#include <scratch_buffer.h> + +/* This code is shared between the standard stdio implementation found + in GNU C library and the libio implementation originally found in + GNU libg++. + + Beside this it is also shared between the normal and wide character + implementation as defined in ISO/IEC 9899:1990/Amendment 1:1995. */ + + +#include <libioP.h> +#define FILE _IO_FILE +#undef va_list +#define va_list _IO_va_list +#undef BUFSIZ +#define BUFSIZ _IO_BUFSIZ +/* In some cases we need extra space for all the output which is not + counted in the width of the string. We assume 32 characters is + enough. */ +#define EXTSIZ 32 +#define ARGCHECK(S, Format) \ + do \ + { \ + /* Check file argument for consistence. */ \ + CHECK_FILE (S, -1); \ + if (S->_flags & _IO_NO_WRITES) \ + { \ + S->_flags |= _IO_ERR_SEEN; \ + __set_errno (EBADF); \ + return -1; \ + } \ + if (Format == NULL) \ + { \ + MAYBE_SET_EINVAL; \ + return -1; \ + } \ + } while (0) +#define UNBUFFERED_P(S) ((S)->_IO_file_flags & _IO_UNBUFFERED) + +#define done_add(val) \ + do { \ + unsigned int _val = val; \ + assert ((unsigned int) done < (unsigned int) INT_MAX); \ + if (__glibc_unlikely (INT_MAX - done < _val)) \ + { \ + done = -1; \ + __set_errno (EOVERFLOW); \ + goto all_done; \ + } \ + done += _val; \ + } while (0) + +#ifndef COMPILE_WPRINTF +# define vfprintf _IO_vfprintf_internal +# define CHAR_T char +# define UCHAR_T unsigned char +# define INT_T int +typedef const char *THOUSANDS_SEP_T; +# define L_(Str) Str +# define ISDIGIT(Ch) ((unsigned int) ((Ch) - '0') < 10) +# define STR_LEN(Str) strlen (Str) + +# define PUT(F, S, N) _IO_sputn ((F), (S), (N)) +# define PAD(Padchar) \ + do { \ + if (width > 0) \ + { \ + _IO_ssize_t written = _IO_padn (s, (Padchar), width); \ + if (__glibc_unlikely (written != width)) \ + { \ + done = -1; \ + goto all_done; \ + } \ + done_add (written); \ + } \ + } while (0) +# define PUTC(C, F) _IO_putc_unlocked (C, F) +# define ORIENT if (_IO_vtable_offset (s) == 0 && _IO_fwide (s, -1) != -1)\ + return -1 +#else +# define vfprintf _IO_vfwprintf +# define CHAR_T wchar_t +/* This is a hack!!! There should be a type uwchar_t. */ +# define UCHAR_T unsigned int /* uwchar_t */ +# define INT_T wint_t +typedef wchar_t THOUSANDS_SEP_T; +# define L_(Str) L##Str +# define ISDIGIT(Ch) ((unsigned int) ((Ch) - L'0') < 10) +# define STR_LEN(Str) __wcslen (Str) + +# include <_itowa.h> + +# define PUT(F, S, N) _IO_sputn ((F), (S), (N)) +# define PAD(Padchar) \ + do { \ + if (width > 0) \ + { \ + _IO_ssize_t written = _IO_wpadn (s, (Padchar), width); \ + if (__glibc_unlikely (written != width)) \ + { \ + done = -1; \ + goto all_done; \ + } \ + done_add (written); \ + } \ + } while (0) +# define PUTC(C, F) _IO_putwc_unlocked (C, F) +# define ORIENT if (_IO_fwide (s, 1) != 1) return -1 + +# undef _itoa +# define _itoa(Val, Buf, Base, Case) _itowa (Val, Buf, Base, Case) +# define _itoa_word(Val, Buf, Base, Case) _itowa_word (Val, Buf, Base, Case) +# undef EOF +# define EOF WEOF +#endif + +#include "_i18n_number.h" + +/* Include the shared code for parsing the format string. */ +#include "printf-parse.h" + + +#define outchar(Ch) \ + do \ + { \ + const INT_T outc = (Ch); \ + if (PUTC (outc, s) == EOF || done == INT_MAX) \ + { \ + done = -1; \ + goto all_done; \ + } \ + ++done; \ + } \ + while (0) + +#define outstring(String, Len) \ + do \ + { \ + assert ((size_t) done <= (size_t) INT_MAX); \ + if ((size_t) PUT (s, (String), (Len)) != (size_t) (Len)) \ + { \ + done = -1; \ + goto all_done; \ + } \ + if (__glibc_unlikely (INT_MAX - done < (Len))) \ + { \ + done = -1; \ + __set_errno (EOVERFLOW); \ + goto all_done; \ + } \ + done += (Len); \ + } \ + while (0) + +/* For handling long_double and longlong we use the same flag. If + `long' and `long long' are effectively the same type define it to + zero. */ +#if LONG_MAX == LONG_LONG_MAX +# define is_longlong 0 +#else +# define is_longlong is_long_double +#endif + +/* If `long' and `int' is effectively the same type we don't have to + handle `long separately. */ +#if INT_MAX == LONG_MAX +# define is_long_num 0 +#else +# define is_long_num is_long +#endif + + +/* Global constants. */ +static const CHAR_T null[] = L_("(null)"); + +/* Size of the work_buffer variable (in characters, not bytes. */ +enum { WORK_BUFFER_SIZE = 1000 }; + +/* This table maps a character into a number representing a class. In + each step there is a destination label for each class. */ +static const uint8_t jump_table[] = + { + /* ' ' */ 1, 0, 0, /* '#' */ 4, + 0, /* '%' */ 14, 0, /* '\''*/ 6, + 0, 0, /* '*' */ 7, /* '+' */ 2, + 0, /* '-' */ 3, /* '.' */ 9, 0, + /* '0' */ 5, /* '1' */ 8, /* '2' */ 8, /* '3' */ 8, + /* '4' */ 8, /* '5' */ 8, /* '6' */ 8, /* '7' */ 8, + /* '8' */ 8, /* '9' */ 8, 0, 0, + 0, 0, 0, 0, + 0, /* 'A' */ 26, 0, /* 'C' */ 25, + 0, /* 'E' */ 19, /* F */ 19, /* 'G' */ 19, + 0, /* 'I' */ 29, 0, 0, + /* 'L' */ 12, 0, 0, 0, + 0, 0, 0, /* 'S' */ 21, + 0, 0, 0, 0, + /* 'X' */ 18, 0, /* 'Z' */ 13, 0, + 0, 0, 0, 0, + 0, /* 'a' */ 26, 0, /* 'c' */ 20, + /* 'd' */ 15, /* 'e' */ 19, /* 'f' */ 19, /* 'g' */ 19, + /* 'h' */ 10, /* 'i' */ 15, /* 'j' */ 28, 0, + /* 'l' */ 11, /* 'm' */ 24, /* 'n' */ 23, /* 'o' */ 17, + /* 'p' */ 22, /* 'q' */ 12, 0, /* 's' */ 21, + /* 't' */ 27, /* 'u' */ 16, 0, 0, + /* 'x' */ 18, 0, /* 'z' */ 13 + }; + +#define NOT_IN_JUMP_RANGE(Ch) ((Ch) < L_(' ') || (Ch) > L_('z')) +#define CHAR_CLASS(Ch) (jump_table[(INT_T) (Ch) - L_(' ')]) +#define LABEL(Name) do_##Name +#ifdef SHARED + /* 'int' is enough and it saves some space on 64 bit systems. */ +# define JUMP_TABLE_TYPE const int +# define JUMP_TABLE_BASE_LABEL do_form_unknown +# define REF(Name) &&do_##Name - &&JUMP_TABLE_BASE_LABEL +# define JUMP(ChExpr, table) \ + do \ + { \ + int offset; \ + void *ptr; \ + spec = (ChExpr); \ + offset = NOT_IN_JUMP_RANGE (spec) ? REF (form_unknown) \ + : table[CHAR_CLASS (spec)]; \ + ptr = &&JUMP_TABLE_BASE_LABEL + offset; \ + goto *ptr; \ + } \ + while (0) +#else +# define JUMP_TABLE_TYPE const void *const +# define REF(Name) &&do_##Name +# define JUMP(ChExpr, table) \ + do \ + { \ + const void *ptr; \ + spec = (ChExpr); \ + ptr = NOT_IN_JUMP_RANGE (spec) ? REF (form_unknown) \ + : table[CHAR_CLASS (spec)]; \ + goto *ptr; \ + } \ + while (0) +#endif + +#define STEP0_3_TABLE \ + /* Step 0: at the beginning. */ \ + static JUMP_TABLE_TYPE step0_jumps[30] = \ + { \ + REF (form_unknown), \ + REF (flag_space), /* for ' ' */ \ + REF (flag_plus), /* for '+' */ \ + REF (flag_minus), /* for '-' */ \ + REF (flag_hash), /* for '<hash>' */ \ + REF (flag_zero), /* for '0' */ \ + REF (flag_quote), /* for '\'' */ \ + REF (width_asterics), /* for '*' */ \ + REF (width), /* for '1'...'9' */ \ + REF (precision), /* for '.' */ \ + REF (mod_half), /* for 'h' */ \ + REF (mod_long), /* for 'l' */ \ + REF (mod_longlong), /* for 'L', 'q' */ \ + REF (mod_size_t), /* for 'z', 'Z' */ \ + REF (form_percent), /* for '%' */ \ + REF (form_integer), /* for 'd', 'i' */ \ + REF (form_unsigned), /* for 'u' */ \ + REF (form_octal), /* for 'o' */ \ + REF (form_hexa), /* for 'X', 'x' */ \ + REF (form_float), /* for 'E', 'e', 'F', 'f', 'G', 'g' */ \ + REF (form_character), /* for 'c' */ \ + REF (form_string), /* for 's', 'S' */ \ + REF (form_pointer), /* for 'p' */ \ + REF (form_number), /* for 'n' */ \ + REF (form_strerror), /* for 'm' */ \ + REF (form_wcharacter), /* for 'C' */ \ + REF (form_floathex), /* for 'A', 'a' */ \ + REF (mod_ptrdiff_t), /* for 't' */ \ + REF (mod_intmax_t), /* for 'j' */ \ + REF (flag_i18n), /* for 'I' */ \ + }; \ + /* Step 1: after processing width. */ \ + static JUMP_TABLE_TYPE step1_jumps[30] = \ + { \ + REF (form_unknown), \ + REF (form_unknown), /* for ' ' */ \ + REF (form_unknown), /* for '+' */ \ + REF (form_unknown), /* for '-' */ \ + REF (form_unknown), /* for '<hash>' */ \ + REF (form_unknown), /* for '0' */ \ + REF (form_unknown), /* for '\'' */ \ + REF (form_unknown), /* for '*' */ \ + REF (form_unknown), /* for '1'...'9' */ \ + REF (precision), /* for '.' */ \ + REF (mod_half), /* for 'h' */ \ + REF (mod_long), /* for 'l' */ \ + REF (mod_longlong), /* for 'L', 'q' */ \ + REF (mod_size_t), /* for 'z', 'Z' */ \ + REF (form_percent), /* for '%' */ \ + REF (form_integer), /* for 'd', 'i' */ \ + REF (form_unsigned), /* for 'u' */ \ + REF (form_octal), /* for 'o' */ \ + REF (form_hexa), /* for 'X', 'x' */ \ + REF (form_float), /* for 'E', 'e', 'F', 'f', 'G', 'g' */ \ + REF (form_character), /* for 'c' */ \ + REF (form_string), /* for 's', 'S' */ \ + REF (form_pointer), /* for 'p' */ \ + REF (form_number), /* for 'n' */ \ + REF (form_strerror), /* for 'm' */ \ + REF (form_wcharacter), /* for 'C' */ \ + REF (form_floathex), /* for 'A', 'a' */ \ + REF (mod_ptrdiff_t), /* for 't' */ \ + REF (mod_intmax_t), /* for 'j' */ \ + REF (form_unknown) /* for 'I' */ \ + }; \ + /* Step 2: after processing precision. */ \ + static JUMP_TABLE_TYPE step2_jumps[30] = \ + { \ + REF (form_unknown), \ + REF (form_unknown), /* for ' ' */ \ + REF (form_unknown), /* for '+' */ \ + REF (form_unknown), /* for '-' */ \ + REF (form_unknown), /* for '<hash>' */ \ + REF (form_unknown), /* for '0' */ \ + REF (form_unknown), /* for '\'' */ \ + REF (form_unknown), /* for '*' */ \ + REF (form_unknown), /* for '1'...'9' */ \ + REF (form_unknown), /* for '.' */ \ + REF (mod_half), /* for 'h' */ \ + REF (mod_long), /* for 'l' */ \ + REF (mod_longlong), /* for 'L', 'q' */ \ + REF (mod_size_t), /* for 'z', 'Z' */ \ + REF (form_percent), /* for '%' */ \ + REF (form_integer), /* for 'd', 'i' */ \ + REF (form_unsigned), /* for 'u' */ \ + REF (form_octal), /* for 'o' */ \ + REF (form_hexa), /* for 'X', 'x' */ \ + REF (form_float), /* for 'E', 'e', 'F', 'f', 'G', 'g' */ \ + REF (form_character), /* for 'c' */ \ + REF (form_string), /* for 's', 'S' */ \ + REF (form_pointer), /* for 'p' */ \ + REF (form_number), /* for 'n' */ \ + REF (form_strerror), /* for 'm' */ \ + REF (form_wcharacter), /* for 'C' */ \ + REF (form_floathex), /* for 'A', 'a' */ \ + REF (mod_ptrdiff_t), /* for 't' */ \ + REF (mod_intmax_t), /* for 'j' */ \ + REF (form_unknown) /* for 'I' */ \ + }; \ + /* Step 3a: after processing first 'h' modifier. */ \ + static JUMP_TABLE_TYPE step3a_jumps[30] = \ + { \ + REF (form_unknown), \ + REF (form_unknown), /* for ' ' */ \ + REF (form_unknown), /* for '+' */ \ + REF (form_unknown), /* for '-' */ \ + REF (form_unknown), /* for '<hash>' */ \ + REF (form_unknown), /* for '0' */ \ + REF (form_unknown), /* for '\'' */ \ + REF (form_unknown), /* for '*' */ \ + REF (form_unknown), /* for '1'...'9' */ \ + REF (form_unknown), /* for '.' */ \ + REF (mod_halfhalf), /* for 'h' */ \ + REF (form_unknown), /* for 'l' */ \ + REF (form_unknown), /* for 'L', 'q' */ \ + REF (form_unknown), /* for 'z', 'Z' */ \ + REF (form_percent), /* for '%' */ \ + REF (form_integer), /* for 'd', 'i' */ \ + REF (form_unsigned), /* for 'u' */ \ + REF (form_octal), /* for 'o' */ \ + REF (form_hexa), /* for 'X', 'x' */ \ + REF (form_unknown), /* for 'E', 'e', 'F', 'f', 'G', 'g' */ \ + REF (form_unknown), /* for 'c' */ \ + REF (form_unknown), /* for 's', 'S' */ \ + REF (form_unknown), /* for 'p' */ \ + REF (form_number), /* for 'n' */ \ + REF (form_unknown), /* for 'm' */ \ + REF (form_unknown), /* for 'C' */ \ + REF (form_unknown), /* for 'A', 'a' */ \ + REF (form_unknown), /* for 't' */ \ + REF (form_unknown), /* for 'j' */ \ + REF (form_unknown) /* for 'I' */ \ + }; \ + /* Step 3b: after processing first 'l' modifier. */ \ + static JUMP_TABLE_TYPE step3b_jumps[30] = \ + { \ + REF (form_unknown), \ + REF (form_unknown), /* for ' ' */ \ + REF (form_unknown), /* for '+' */ \ + REF (form_unknown), /* for '-' */ \ + REF (form_unknown), /* for '<hash>' */ \ + REF (form_unknown), /* for '0' */ \ + REF (form_unknown), /* for '\'' */ \ + REF (form_unknown), /* for '*' */ \ + REF (form_unknown), /* for '1'...'9' */ \ + REF (form_unknown), /* for '.' */ \ + REF (form_unknown), /* for 'h' */ \ + REF (mod_longlong), /* for 'l' */ \ + REF (form_unknown), /* for 'L', 'q' */ \ + REF (form_unknown), /* for 'z', 'Z' */ \ + REF (form_percent), /* for '%' */ \ + REF (form_integer), /* for 'd', 'i' */ \ + REF (form_unsigned), /* for 'u' */ \ + REF (form_octal), /* for 'o' */ \ + REF (form_hexa), /* for 'X', 'x' */ \ + REF (form_float), /* for 'E', 'e', 'F', 'f', 'G', 'g' */ \ + REF (form_character), /* for 'c' */ \ + REF (form_string), /* for 's', 'S' */ \ + REF (form_pointer), /* for 'p' */ \ + REF (form_number), /* for 'n' */ \ + REF (form_strerror), /* for 'm' */ \ + REF (form_wcharacter), /* for 'C' */ \ + REF (form_floathex), /* for 'A', 'a' */ \ + REF (form_unknown), /* for 't' */ \ + REF (form_unknown), /* for 'j' */ \ + REF (form_unknown) /* for 'I' */ \ + } + +#define STEP4_TABLE \ + /* Step 4: processing format specifier. */ \ + static JUMP_TABLE_TYPE step4_jumps[30] = \ + { \ + REF (form_unknown), \ + REF (form_unknown), /* for ' ' */ \ + REF (form_unknown), /* for '+' */ \ + REF (form_unknown), /* for '-' */ \ + REF (form_unknown), /* for '<hash>' */ \ + REF (form_unknown), /* for '0' */ \ + REF (form_unknown), /* for '\'' */ \ + REF (form_unknown), /* for '*' */ \ + REF (form_unknown), /* for '1'...'9' */ \ + REF (form_unknown), /* for '.' */ \ + REF (form_unknown), /* for 'h' */ \ + REF (form_unknown), /* for 'l' */ \ + REF (form_unknown), /* for 'L', 'q' */ \ + REF (form_unknown), /* for 'z', 'Z' */ \ + REF (form_percent), /* for '%' */ \ + REF (form_integer), /* for 'd', 'i' */ \ + REF (form_unsigned), /* for 'u' */ \ + REF (form_octal), /* for 'o' */ \ + REF (form_hexa), /* for 'X', 'x' */ \ + REF (form_float), /* for 'E', 'e', 'F', 'f', 'G', 'g' */ \ + REF (form_character), /* for 'c' */ \ + REF (form_string), /* for 's', 'S' */ \ + REF (form_pointer), /* for 'p' */ \ + REF (form_number), /* for 'n' */ \ + REF (form_strerror), /* for 'm' */ \ + REF (form_wcharacter), /* for 'C' */ \ + REF (form_floathex), /* for 'A', 'a' */ \ + REF (form_unknown), /* for 't' */ \ + REF (form_unknown), /* for 'j' */ \ + REF (form_unknown) /* for 'I' */ \ + } + + +#define process_arg(fspec) \ + /* Start real work. We know about all flags and modifiers and \ + now process the wanted format specifier. */ \ + LABEL (form_percent): \ + /* Write a literal "%". */ \ + outchar (L_('%')); \ + break; \ + \ + LABEL (form_integer): \ + /* Signed decimal integer. */ \ + base = 10; \ + \ + if (is_longlong) \ + { \ + long long int signed_number; \ + \ + if (fspec == NULL) \ + signed_number = va_arg (ap, long long int); \ + else \ + signed_number = args_value[fspec->data_arg].pa_long_long_int; \ + \ + is_negative = signed_number < 0; \ + number.longlong = is_negative ? (- signed_number) : signed_number; \ + \ + goto LABEL (longlong_number); \ + } \ + else \ + { \ + long int signed_number; \ + \ + if (fspec == NULL) \ + { \ + if (is_long_num) \ + signed_number = va_arg (ap, long int); \ + else if (is_char) \ + signed_number = (signed char) va_arg (ap, unsigned int); \ + else if (!is_short) \ + signed_number = va_arg (ap, int); \ + else \ + signed_number = (short int) va_arg (ap, unsigned int); \ + } \ + else \ + if (is_long_num) \ + signed_number = args_value[fspec->data_arg].pa_long_int; \ + else if (is_char) \ + signed_number = (signed char) \ + args_value[fspec->data_arg].pa_u_int; \ + else if (!is_short) \ + signed_number = args_value[fspec->data_arg].pa_int; \ + else \ + signed_number = (short int) \ + args_value[fspec->data_arg].pa_u_int; \ + \ + is_negative = signed_number < 0; \ + number.word = is_negative ? (- signed_number) : signed_number; \ + \ + goto LABEL (number); \ + } \ + /* NOTREACHED */ \ + \ + LABEL (form_unsigned): \ + /* Unsigned decimal integer. */ \ + base = 10; \ + goto LABEL (unsigned_number); \ + /* NOTREACHED */ \ + \ + LABEL (form_octal): \ + /* Unsigned octal integer. */ \ + base = 8; \ + goto LABEL (unsigned_number); \ + /* NOTREACHED */ \ + \ + LABEL (form_hexa): \ + /* Unsigned hexadecimal integer. */ \ + base = 16; \ + \ + LABEL (unsigned_number): /* Unsigned number of base BASE. */ \ + \ + /* ISO specifies the `+' and ` ' flags only for signed \ + conversions. */ \ + is_negative = 0; \ + showsign = 0; \ + space = 0; \ + \ + if (is_longlong) \ + { \ + if (fspec == NULL) \ + number.longlong = va_arg (ap, unsigned long long int); \ + else \ + number.longlong = args_value[fspec->data_arg].pa_u_long_long_int; \ + \ + LABEL (longlong_number): \ + if (prec < 0) \ + /* Supply a default precision if none was given. */ \ + prec = 1; \ + else \ + /* We have to take care for the '0' flag. If a precision \ + is given it must be ignored. */ \ + pad = L_(' '); \ + \ + /* If the precision is 0 and the number is 0 nothing has to \ + be written for the number, except for the 'o' format in \ + alternate form. */ \ + if (prec == 0 && number.longlong == 0) \ + { \ + string = workend; \ + if (base == 8 && alt) \ + *--string = L_('0'); \ + } \ + else \ + { \ + /* Put the number in WORK. */ \ + string = _itoa (number.longlong, workend, base, \ + spec == L_('X')); \ + if (group && grouping) \ + string = group_number (string, workend, grouping, \ + thousands_sep); \ + \ + if (use_outdigits && base == 10) \ + string = _i18n_number_rewrite (string, workend, workend); \ + } \ + /* Simplify further test for num != 0. */ \ + number.word = number.longlong != 0; \ + } \ + else \ + { \ + if (fspec == NULL) \ + { \ + if (is_long_num) \ + number.word = va_arg (ap, unsigned long int); \ + else if (is_char) \ + number.word = (unsigned char) va_arg (ap, unsigned int); \ + else if (!is_short) \ + number.word = va_arg (ap, unsigned int); \ + else \ + number.word = (unsigned short int) va_arg (ap, unsigned int); \ + } \ + else \ + if (is_long_num) \ + number.word = args_value[fspec->data_arg].pa_u_long_int; \ + else if (is_char) \ + number.word = (unsigned char) \ + args_value[fspec->data_arg].pa_u_int; \ + else if (!is_short) \ + number.word = args_value[fspec->data_arg].pa_u_int; \ + else \ + number.word = (unsigned short int) \ + args_value[fspec->data_arg].pa_u_int; \ + \ + LABEL (number): \ + if (prec < 0) \ + /* Supply a default precision if none was given. */ \ + prec = 1; \ + else \ + /* We have to take care for the '0' flag. If a precision \ + is given it must be ignored. */ \ + pad = L_(' '); \ + \ + /* If the precision is 0 and the number is 0 nothing has to \ + be written for the number, except for the 'o' format in \ + alternate form. */ \ + if (prec == 0 && number.word == 0) \ + { \ + string = workend; \ + if (base == 8 && alt) \ + *--string = L_('0'); \ + } \ + else \ + { \ + /* Put the number in WORK. */ \ + string = _itoa_word (number.word, workend, base, \ + spec == L_('X')); \ + if (group && grouping) \ + string = group_number (string, workend, grouping, \ + thousands_sep); \ + \ + if (use_outdigits && base == 10) \ + string = _i18n_number_rewrite (string, workend, workend); \ + } \ + } \ + \ + if (prec <= workend - string && number.word != 0 && alt && base == 8) \ + /* Add octal marker. */ \ + *--string = L_('0'); \ + \ + prec = MAX (0, prec - (workend - string)); \ + \ + if (!left) \ + { \ + width -= workend - string + prec; \ + \ + if (number.word != 0 && alt && base == 16) \ + /* Account for 0X hex marker. */ \ + width -= 2; \ + \ + if (is_negative || showsign || space) \ + --width; \ + \ + if (pad == L_(' ')) \ + { \ + PAD (L_(' ')); \ + width = 0; \ + } \ + \ + if (is_negative) \ + outchar (L_('-')); \ + else if (showsign) \ + outchar (L_('+')); \ + else if (space) \ + outchar (L_(' ')); \ + \ + if (number.word != 0 && alt && base == 16) \ + { \ + outchar (L_('0')); \ + outchar (spec); \ + } \ + \ + width += prec; \ + PAD (L_('0')); \ + \ + outstring (string, workend - string); \ + \ + break; \ + } \ + else \ + { \ + if (is_negative) \ + { \ + outchar (L_('-')); \ + --width; \ + } \ + else if (showsign) \ + { \ + outchar (L_('+')); \ + --width; \ + } \ + else if (space) \ + { \ + outchar (L_(' ')); \ + --width; \ + } \ + \ + if (number.word != 0 && alt && base == 16) \ + { \ + outchar (L_('0')); \ + outchar (spec); \ + width -= 2; \ + } \ + \ + width -= workend - string + prec; \ + \ + if (prec > 0) \ + { \ + int temp = width; \ + width = prec; \ + PAD (L_('0')); \ + width = temp; \ + } \ + \ + outstring (string, workend - string); \ + \ + PAD (L_(' ')); \ + break; \ + } \ + \ + LABEL (form_float): \ + { \ + /* Floating-point number. This is handled by printf_fp.c. */ \ + const void *ptr; \ + int function_done; \ + \ + if (fspec == NULL) \ + { \ + if (__ldbl_is_dbl) \ + is_long_double = 0; \ + \ + struct printf_info info = { .prec = prec, \ + .width = width, \ + .spec = spec, \ + .is_long_double = is_long_double, \ + .is_short = is_short, \ + .is_long = is_long, \ + .alt = alt, \ + .space = space, \ + .left = left, \ + .showsign = showsign, \ + .group = group, \ + .pad = pad, \ + .extra = 0, \ + .i18n = use_outdigits, \ + .wide = sizeof (CHAR_T) != 1, \ + .is_binary128 = 0}; \ + \ + if (is_long_double) \ + the_arg.pa_long_double = va_arg (ap, long double); \ + else \ + the_arg.pa_double = va_arg (ap, double); \ + ptr = (const void *) &the_arg; \ + \ + function_done = __printf_fp (s, &info, &ptr); \ + } \ + else \ + { \ + ptr = (const void *) &args_value[fspec->data_arg]; \ + if (__ldbl_is_dbl) \ + { \ + fspec->data_arg_type = PA_DOUBLE; \ + fspec->info.is_long_double = 0; \ + } \ + /* Not supported by *printf functions. */ \ + fspec->info.is_binary128 = 0; \ + \ + function_done = __printf_fp (s, &fspec->info, &ptr); \ + } \ + \ + if (function_done < 0) \ + { \ + /* Error in print handler; up to handler to set errno. */ \ + done = -1; \ + goto all_done; \ + } \ + \ + done_add (function_done); \ + } \ + break; \ + \ + LABEL (form_floathex): \ + { \ + /* Floating point number printed as hexadecimal number. */ \ + const void *ptr; \ + int function_done; \ + \ + if (fspec == NULL) \ + { \ + if (__ldbl_is_dbl) \ + is_long_double = 0; \ + \ + struct printf_info info = { .prec = prec, \ + .width = width, \ + .spec = spec, \ + .is_long_double = is_long_double, \ + .is_short = is_short, \ + .is_long = is_long, \ + .alt = alt, \ + .space = space, \ + .left = left, \ + .showsign = showsign, \ + .group = group, \ + .pad = pad, \ + .extra = 0, \ + .wide = sizeof (CHAR_T) != 1, \ + .is_binary128 = 0}; \ + \ + if (is_long_double) \ + the_arg.pa_long_double = va_arg (ap, long double); \ + else \ + the_arg.pa_double = va_arg (ap, double); \ + ptr = (const void *) &the_arg; \ + \ + function_done = __printf_fphex (s, &info, &ptr); \ + } \ + else \ + { \ + ptr = (const void *) &args_value[fspec->data_arg]; \ + if (__ldbl_is_dbl) \ + fspec->info.is_long_double = 0; \ + /* Not supported by *printf functions. */ \ + fspec->info.is_binary128 = 0; \ + \ + function_done = __printf_fphex (s, &fspec->info, &ptr); \ + } \ + \ + if (function_done < 0) \ + { \ + /* Error in print handler; up to handler to set errno. */ \ + done = -1; \ + goto all_done; \ + } \ + \ + done_add (function_done); \ + } \ + break; \ + \ + LABEL (form_pointer): \ + /* Generic pointer. */ \ + { \ + const void *ptr; \ + if (fspec == NULL) \ + ptr = va_arg (ap, void *); \ + else \ + ptr = args_value[fspec->data_arg].pa_pointer; \ + if (ptr != NULL) \ + { \ + /* If the pointer is not NULL, write it as a %#x spec. */ \ + base = 16; \ + number.word = (unsigned long int) ptr; \ + is_negative = 0; \ + alt = 1; \ + group = 0; \ + spec = L_('x'); \ + goto LABEL (number); \ + } \ + else \ + { \ + /* Write "(nil)" for a nil pointer. */ \ + string = (CHAR_T *) L_("(nil)"); \ + /* Make sure the full string "(nil)" is printed. */ \ + if (prec < 5) \ + prec = 5; \ + /* This is a wide string iff compiling wprintf. */ \ + is_long = sizeof (CHAR_T) > 1; \ + goto LABEL (print_string); \ + } \ + } \ + /* NOTREACHED */ \ + \ + LABEL (form_number): \ + if (s->_flags2 & _IO_FLAGS2_FORTIFY) \ + { \ + if (! readonly_format) \ + { \ + extern int __readonly_area (const void *, size_t) \ + attribute_hidden; \ + readonly_format \ + = __readonly_area (format, ((STR_LEN (format) + 1) \ + * sizeof (CHAR_T))); \ + } \ + if (readonly_format < 0) \ + __libc_fatal ("*** %n in writable segment detected ***\n"); \ + } \ + /* Answer the count of characters written. */ \ + if (fspec == NULL) \ + { \ + if (is_longlong) \ + *(long long int *) va_arg (ap, void *) = done; \ + else if (is_long_num) \ + *(long int *) va_arg (ap, void *) = done; \ + else if (is_char) \ + *(char *) va_arg (ap, void *) = done; \ + else if (!is_short) \ + *(int *) va_arg (ap, void *) = done; \ + else \ + *(short int *) va_arg (ap, void *) = done; \ + } \ + else \ + if (is_longlong) \ + *(long long int *) args_value[fspec->data_arg].pa_pointer = done; \ + else if (is_long_num) \ + *(long int *) args_value[fspec->data_arg].pa_pointer = done; \ + else if (is_char) \ + *(char *) args_value[fspec->data_arg].pa_pointer = done; \ + else if (!is_short) \ + *(int *) args_value[fspec->data_arg].pa_pointer = done; \ + else \ + *(short int *) args_value[fspec->data_arg].pa_pointer = done; \ + break; \ + \ + LABEL (form_strerror): \ + /* Print description of error ERRNO. */ \ + string = \ + (CHAR_T *) __strerror_r (save_errno, (char *) work_buffer, \ + WORK_BUFFER_SIZE * sizeof (CHAR_T)); \ + is_long = 0; /* This is no wide-char string. */ \ + goto LABEL (print_string) + +#ifdef COMPILE_WPRINTF +# define process_string_arg(fspec) \ + LABEL (form_character): \ + /* Character. */ \ + if (is_long) \ + goto LABEL (form_wcharacter); \ + --width; /* Account for the character itself. */ \ + if (!left) \ + PAD (L' '); \ + if (fspec == NULL) \ + outchar (__btowc ((unsigned char) va_arg (ap, int))); /* Promoted. */ \ + else \ + outchar (__btowc ((unsigned char) \ + args_value[fspec->data_arg].pa_int)); \ + if (left) \ + PAD (L' '); \ + break; \ + \ + LABEL (form_wcharacter): \ + { \ + /* Wide character. */ \ + --width; \ + if (!left) \ + PAD (L' '); \ + if (fspec == NULL) \ + outchar (va_arg (ap, wchar_t)); \ + else \ + outchar (args_value[fspec->data_arg].pa_wchar); \ + if (left) \ + PAD (L' '); \ + } \ + break; \ + \ + LABEL (form_string): \ + { \ + size_t len; \ + int string_malloced; \ + \ + /* The string argument could in fact be `char *' or `wchar_t *'. \ + But this should not make a difference here. */ \ + if (fspec == NULL) \ + string = (CHAR_T *) va_arg (ap, const wchar_t *); \ + else \ + string = (CHAR_T *) args_value[fspec->data_arg].pa_wstring; \ + \ + /* Entry point for printing other strings. */ \ + LABEL (print_string): \ + \ + string_malloced = 0; \ + if (string == NULL) \ + { \ + /* Write "(null)" if there's space. */ \ + if (prec == -1 \ + || prec >= (int) (sizeof (null) / sizeof (null[0])) - 1) \ + { \ + string = (CHAR_T *) null; \ + len = (sizeof (null) / sizeof (null[0])) - 1; \ + } \ + else \ + { \ + string = (CHAR_T *) L""; \ + len = 0; \ + } \ + } \ + else if (!is_long && spec != L_('S')) \ + { \ + /* This is complicated. We have to transform the multibyte \ + string into a wide character string. */ \ + const char *mbs = (const char *) string; \ + mbstate_t mbstate; \ + \ + len = prec != -1 ? __strnlen (mbs, (size_t) prec) : strlen (mbs); \ + \ + /* Allocate dynamically an array which definitely is long \ + enough for the wide character version. Each byte in the \ + multi-byte string can produce at most one wide character. */ \ + if (__glibc_unlikely (len > SIZE_MAX / sizeof (wchar_t))) \ + { \ + __set_errno (EOVERFLOW); \ + done = -1; \ + goto all_done; \ + } \ + else if (__libc_use_alloca (len * sizeof (wchar_t))) \ + string = (CHAR_T *) alloca (len * sizeof (wchar_t)); \ + else if ((string = (CHAR_T *) malloc (len * sizeof (wchar_t))) \ + == NULL) \ + { \ + done = -1; \ + goto all_done; \ + } \ + else \ + string_malloced = 1; \ + \ + memset (&mbstate, '\0', sizeof (mbstate_t)); \ + len = __mbsrtowcs (string, &mbs, len, &mbstate); \ + if (len == (size_t) -1) \ + { \ + /* Illegal multibyte character. */ \ + done = -1; \ + goto all_done; \ + } \ + } \ + else \ + { \ + if (prec != -1) \ + /* Search for the end of the string, but don't search past \ + the length specified by the precision. */ \ + len = __wcsnlen (string, prec); \ + else \ + len = __wcslen (string); \ + } \ + \ + if ((width -= len) < 0) \ + { \ + outstring (string, len); \ + break; \ + } \ + \ + if (!left) \ + PAD (L' '); \ + outstring (string, len); \ + if (left) \ + PAD (L' '); \ + if (__glibc_unlikely (string_malloced)) \ + free (string); \ + } \ + break; +#else +# define process_string_arg(fspec) \ + LABEL (form_character): \ + /* Character. */ \ + if (is_long) \ + goto LABEL (form_wcharacter); \ + --width; /* Account for the character itself. */ \ + if (!left) \ + PAD (' '); \ + if (fspec == NULL) \ + outchar ((unsigned char) va_arg (ap, int)); /* Promoted. */ \ + else \ + outchar ((unsigned char) args_value[fspec->data_arg].pa_int); \ + if (left) \ + PAD (' '); \ + break; \ + \ + LABEL (form_wcharacter): \ + { \ + /* Wide character. */ \ + char buf[MB_LEN_MAX]; \ + mbstate_t mbstate; \ + size_t len; \ + \ + memset (&mbstate, '\0', sizeof (mbstate_t)); \ + len = __wcrtomb (buf, (fspec == NULL ? va_arg (ap, wchar_t) \ + : args_value[fspec->data_arg].pa_wchar), \ + &mbstate); \ + if (len == (size_t) -1) \ + { \ + /* Something went wrong during the conversion. Bail out. */ \ + done = -1; \ + goto all_done; \ + } \ + width -= len; \ + if (!left) \ + PAD (' '); \ + outstring (buf, len); \ + if (left) \ + PAD (' '); \ + } \ + break; \ + \ + LABEL (form_string): \ + { \ + size_t len; \ + int string_malloced; \ + \ + /* The string argument could in fact be `char *' or `wchar_t *'. \ + But this should not make a difference here. */ \ + if (fspec == NULL) \ + string = (char *) va_arg (ap, const char *); \ + else \ + string = (char *) args_value[fspec->data_arg].pa_string; \ + \ + /* Entry point for printing other strings. */ \ + LABEL (print_string): \ + \ + string_malloced = 0; \ + if (string == NULL) \ + { \ + /* Write "(null)" if there's space. */ \ + if (prec == -1 || prec >= (int) sizeof (null) - 1) \ + { \ + string = (char *) null; \ + len = sizeof (null) - 1; \ + } \ + else \ + { \ + string = (char *) ""; \ + len = 0; \ + } \ + } \ + else if (!is_long && spec != L_('S')) \ + { \ + if (prec != -1) \ + /* Search for the end of the string, but don't search past \ + the length (in bytes) specified by the precision. */ \ + len = __strnlen (string, prec); \ + else \ + len = strlen (string); \ + } \ + else \ + { \ + const wchar_t *s2 = (const wchar_t *) string; \ + mbstate_t mbstate; \ + \ + memset (&mbstate, '\0', sizeof (mbstate_t)); \ + \ + if (prec >= 0) \ + { \ + /* The string `s2' might not be NUL terminated. */ \ + if (__libc_use_alloca (prec)) \ + string = (char *) alloca (prec); \ + else if ((string = (char *) malloc (prec)) == NULL) \ + { \ + done = -1; \ + goto all_done; \ + } \ + else \ + string_malloced = 1; \ + len = __wcsrtombs (string, &s2, prec, &mbstate); \ + } \ + else \ + { \ + len = __wcsrtombs (NULL, &s2, 0, &mbstate); \ + if (len != (size_t) -1) \ + { \ + assert (__mbsinit (&mbstate)); \ + s2 = (const wchar_t *) string; \ + if (__libc_use_alloca (len + 1)) \ + string = (char *) alloca (len + 1); \ + else if ((string = (char *) malloc (len + 1)) == NULL) \ + { \ + done = -1; \ + goto all_done; \ + } \ + else \ + string_malloced = 1; \ + (void) __wcsrtombs (string, &s2, len + 1, &mbstate); \ + } \ + } \ + \ + if (len == (size_t) -1) \ + { \ + /* Illegal wide-character string. */ \ + done = -1; \ + goto all_done; \ + } \ + } \ + \ + if ((width -= len) < 0) \ + { \ + outstring (string, len); \ + break; \ + } \ + \ + if (!left) \ + PAD (' '); \ + outstring (string, len); \ + if (left) \ + PAD (' '); \ + if (__glibc_unlikely (string_malloced)) \ + free (string); \ + } \ + break; +#endif + +/* Helper function to provide temporary buffering for unbuffered streams. */ +static int buffered_vfprintf (FILE *stream, const CHAR_T *fmt, va_list) + __THROW __attribute__ ((noinline)) internal_function; + +/* Handle positional format specifiers. */ +static int printf_positional (_IO_FILE *s, + const CHAR_T *format, int readonly_format, + va_list ap, va_list *ap_savep, int done, + int nspecs_done, const UCHAR_T *lead_str_end, + CHAR_T *work_buffer, int save_errno, + const char *grouping, THOUSANDS_SEP_T); + +/* Handle unknown format specifier. */ +static int printf_unknown (FILE *, const struct printf_info *, + const void *const *) __THROW; + +/* Group digits of number string. */ +static CHAR_T *group_number (CHAR_T *, CHAR_T *, const char *, THOUSANDS_SEP_T) + __THROW internal_function; + +/* The function itself. */ +int +vfprintf (FILE *s, const CHAR_T *format, va_list ap) +{ + /* The character used as thousands separator. */ + THOUSANDS_SEP_T thousands_sep = 0; + + /* The string describing the size of groups of digits. */ + const char *grouping; + + /* Place to accumulate the result. */ + int done; + + /* Current character in format string. */ + const UCHAR_T *f; + + /* End of leading constant string. */ + const UCHAR_T *lead_str_end; + + /* Points to next format specifier. */ + const UCHAR_T *end_of_spec; + + /* Buffer intermediate results. */ + CHAR_T work_buffer[WORK_BUFFER_SIZE]; + CHAR_T *workstart = NULL; + CHAR_T *workend; + + /* We have to save the original argument pointer. */ + va_list ap_save; + + /* Count number of specifiers we already processed. */ + int nspecs_done; + + /* For the %m format we may need the current `errno' value. */ + int save_errno = errno; + + /* 1 if format is in read-only memory, -1 if it is in writable memory, + 0 if unknown. */ + int readonly_format = 0; + + /* Orient the stream. */ +#ifdef ORIENT + ORIENT; +#endif + + /* Sanity check of arguments. */ + ARGCHECK (s, format); + +#ifdef ORIENT + /* Check for correct orientation. */ + if (_IO_vtable_offset (s) == 0 && + _IO_fwide (s, sizeof (CHAR_T) == 1 ? -1 : 1) + != (sizeof (CHAR_T) == 1 ? -1 : 1)) + /* The stream is already oriented otherwise. */ + return EOF; +#endif + + if (UNBUFFERED_P (s)) + /* Use a helper function which will allocate a local temporary buffer + for the stream and then call us again. */ + return buffered_vfprintf (s, format, ap); + + /* Initialize local variables. */ + done = 0; + grouping = (const char *) -1; +#ifdef __va_copy + /* This macro will be available soon in gcc's <stdarg.h>. We need it + since on some systems `va_list' is not an integral type. */ + __va_copy (ap_save, ap); +#else + ap_save = ap; +#endif + nspecs_done = 0; + +#ifdef COMPILE_WPRINTF + /* Find the first format specifier. */ + f = lead_str_end = __find_specwc ((const UCHAR_T *) format); +#else + /* Find the first format specifier. */ + f = lead_str_end = __find_specmb ((const UCHAR_T *) format); +#endif + + /* Lock stream. */ + _IO_cleanup_region_start ((void (*) (void *)) &_IO_funlockfile, s); + _IO_flockfile (s); + + /* Write the literal text before the first format. */ + outstring ((const UCHAR_T *) format, + lead_str_end - (const UCHAR_T *) format); + + /* If we only have to print a simple string, return now. */ + if (*f == L_('\0')) + goto all_done; + + /* Use the slow path in case any printf handler is registered. */ + if (__glibc_unlikely (__printf_function_table != NULL + || __printf_modifier_table != NULL + || __printf_va_arg_table != NULL)) + goto do_positional; + + /* Process whole format string. */ + do + { + STEP0_3_TABLE; + STEP4_TABLE; + + union printf_arg *args_value; /* This is not used here but ... */ + int is_negative; /* Flag for negative number. */ + union + { + unsigned long long int longlong; + unsigned long int word; + } number; + int base; + union printf_arg the_arg; + CHAR_T *string; /* Pointer to argument string. */ + int alt = 0; /* Alternate format. */ + int space = 0; /* Use space prefix if no sign is needed. */ + int left = 0; /* Left-justify output. */ + int showsign = 0; /* Always begin with plus or minus sign. */ + int group = 0; /* Print numbers according grouping rules. */ + int is_long_double = 0; /* Argument is long double/ long long int. */ + int is_short = 0; /* Argument is short int. */ + int is_long = 0; /* Argument is long int. */ + int is_char = 0; /* Argument is promoted (unsigned) char. */ + int width = 0; /* Width of output; 0 means none specified. */ + int prec = -1; /* Precision of output; -1 means none specified. */ + /* This flag is set by the 'I' modifier and selects the use of the + `outdigits' as determined by the current locale. */ + int use_outdigits = 0; + UCHAR_T pad = L_(' ');/* Padding character. */ + CHAR_T spec; + + workstart = NULL; + workend = work_buffer + WORK_BUFFER_SIZE; + + /* Get current character in format string. */ + JUMP (*++f, step0_jumps); + + /* ' ' flag. */ + LABEL (flag_space): + space = 1; + JUMP (*++f, step0_jumps); + + /* '+' flag. */ + LABEL (flag_plus): + showsign = 1; + JUMP (*++f, step0_jumps); + + /* The '-' flag. */ + LABEL (flag_minus): + left = 1; + pad = L_(' '); + JUMP (*++f, step0_jumps); + + /* The '#' flag. */ + LABEL (flag_hash): + alt = 1; + JUMP (*++f, step0_jumps); + + /* The '0' flag. */ + LABEL (flag_zero): + if (!left) + pad = L_('0'); + JUMP (*++f, step0_jumps); + + /* The '\'' flag. */ + LABEL (flag_quote): + group = 1; + + if (grouping == (const char *) -1) + { +#ifdef COMPILE_WPRINTF + thousands_sep = _NL_CURRENT_WORD (LC_NUMERIC, + _NL_NUMERIC_THOUSANDS_SEP_WC); +#else + thousands_sep = _NL_CURRENT (LC_NUMERIC, THOUSANDS_SEP); +#endif + + grouping = _NL_CURRENT (LC_NUMERIC, GROUPING); + if (*grouping == '\0' || *grouping == CHAR_MAX +#ifdef COMPILE_WPRINTF + || thousands_sep == L'\0' +#else + || *thousands_sep == '\0' +#endif + ) + grouping = NULL; + } + JUMP (*++f, step0_jumps); + + LABEL (flag_i18n): + use_outdigits = 1; + JUMP (*++f, step0_jumps); + + /* Get width from argument. */ + LABEL (width_asterics): + { + const UCHAR_T *tmp; /* Temporary value. */ + + tmp = ++f; + if (ISDIGIT (*tmp)) + { + int pos = read_int (&tmp); + + if (pos == -1) + { + __set_errno (EOVERFLOW); + done = -1; + goto all_done; + } + + if (pos && *tmp == L_('$')) + /* The width comes from a positional parameter. */ + goto do_positional; + } + width = va_arg (ap, int); + + /* Negative width means left justified. */ + if (width < 0) + { + width = -width; + pad = L_(' '); + left = 1; + } + + if (__glibc_unlikely (width >= INT_MAX / sizeof (CHAR_T) - EXTSIZ)) + { + __set_errno (EOVERFLOW); + done = -1; + goto all_done; + } + + if (width >= WORK_BUFFER_SIZE - EXTSIZ) + { + /* We have to use a special buffer. */ + size_t needed = ((size_t) width + EXTSIZ) * sizeof (CHAR_T); + if (__libc_use_alloca (needed)) + workend = (CHAR_T *) alloca (needed) + width + EXTSIZ; + else + { + workstart = (CHAR_T *) malloc (needed); + if (workstart == NULL) + { + done = -1; + goto all_done; + } + workend = workstart + width + EXTSIZ; + } + } + } + JUMP (*f, step1_jumps); + + /* Given width in format string. */ + LABEL (width): + width = read_int (&f); + + if (__glibc_unlikely (width == -1 + || width >= INT_MAX / sizeof (CHAR_T) - EXTSIZ)) + { + __set_errno (EOVERFLOW); + done = -1; + goto all_done; + } + + if (width >= WORK_BUFFER_SIZE - EXTSIZ) + { + /* We have to use a special buffer. */ + size_t needed = ((size_t) width + EXTSIZ) * sizeof (CHAR_T); + if (__libc_use_alloca (needed)) + workend = (CHAR_T *) alloca (needed) + width + EXTSIZ; + else + { + workstart = (CHAR_T *) malloc (needed); + if (workstart == NULL) + { + done = -1; + goto all_done; + } + workend = workstart + width + EXTSIZ; + } + } + if (*f == L_('$')) + /* Oh, oh. The argument comes from a positional parameter. */ + goto do_positional; + JUMP (*f, step1_jumps); + + LABEL (precision): + ++f; + if (*f == L_('*')) + { + const UCHAR_T *tmp; /* Temporary value. */ + + tmp = ++f; + if (ISDIGIT (*tmp)) + { + int pos = read_int (&tmp); + + if (pos == -1) + { + __set_errno (EOVERFLOW); + done = -1; + goto all_done; + } + + if (pos && *tmp == L_('$')) + /* The precision comes from a positional parameter. */ + goto do_positional; + } + prec = va_arg (ap, int); + + /* If the precision is negative the precision is omitted. */ + if (prec < 0) + prec = -1; + } + else if (ISDIGIT (*f)) + { + prec = read_int (&f); + + /* The precision was specified in this case as an extremely + large positive value. */ + if (prec == -1) + { + __set_errno (EOVERFLOW); + done = -1; + goto all_done; + } + } + else + prec = 0; + if (prec > width && prec > WORK_BUFFER_SIZE - EXTSIZ) + { + /* Deallocate any previously allocated buffer because it is + too small. */ + if (__glibc_unlikely (workstart != NULL)) + free (workstart); + workstart = NULL; + if (__glibc_unlikely (prec >= INT_MAX / sizeof (CHAR_T) - EXTSIZ)) + { + __set_errno (EOVERFLOW); + done = -1; + goto all_done; + } + size_t needed = ((size_t) prec + EXTSIZ) * sizeof (CHAR_T); + + if (__libc_use_alloca (needed)) + workend = (CHAR_T *) alloca (needed) + prec + EXTSIZ; + else + { + workstart = (CHAR_T *) malloc (needed); + if (workstart == NULL) + { + done = -1; + goto all_done; + } + workend = workstart + prec + EXTSIZ; + } + } + JUMP (*f, step2_jumps); + + /* Process 'h' modifier. There might another 'h' following. */ + LABEL (mod_half): + is_short = 1; + JUMP (*++f, step3a_jumps); + + /* Process 'hh' modifier. */ + LABEL (mod_halfhalf): + is_short = 0; + is_char = 1; + JUMP (*++f, step4_jumps); + + /* Process 'l' modifier. There might another 'l' following. */ + LABEL (mod_long): + is_long = 1; + JUMP (*++f, step3b_jumps); + + /* Process 'L', 'q', or 'll' modifier. No other modifier is + allowed to follow. */ + LABEL (mod_longlong): + is_long_double = 1; + is_long = 1; + JUMP (*++f, step4_jumps); + + LABEL (mod_size_t): + is_long_double = sizeof (size_t) > sizeof (unsigned long int); + is_long = sizeof (size_t) > sizeof (unsigned int); + JUMP (*++f, step4_jumps); + + LABEL (mod_ptrdiff_t): + is_long_double = sizeof (ptrdiff_t) > sizeof (unsigned long int); + is_long = sizeof (ptrdiff_t) > sizeof (unsigned int); + JUMP (*++f, step4_jumps); + + LABEL (mod_intmax_t): + is_long_double = sizeof (intmax_t) > sizeof (unsigned long int); + is_long = sizeof (intmax_t) > sizeof (unsigned int); + JUMP (*++f, step4_jumps); + + /* Process current format. */ + while (1) + { + process_arg (((struct printf_spec *) NULL)); + process_string_arg (((struct printf_spec *) NULL)); + + LABEL (form_unknown): + if (spec == L_('\0')) + { + /* The format string ended before the specifier is complete. */ + __set_errno (EINVAL); + done = -1; + goto all_done; + } + + /* If we are in the fast loop force entering the complicated + one. */ + goto do_positional; + } + + /* The format is correctly handled. */ + ++nspecs_done; + + if (__glibc_unlikely (workstart != NULL)) + free (workstart); + workstart = NULL; + + /* Look for next format specifier. */ +#ifdef COMPILE_WPRINTF + f = __find_specwc ((end_of_spec = ++f)); +#else + f = __find_specmb ((end_of_spec = ++f)); +#endif + + /* Write the following constant string. */ + outstring (end_of_spec, f - end_of_spec); + } + while (*f != L_('\0')); + + /* Unlock stream and return. */ + goto all_done; + + /* Hand off processing for positional parameters. */ +do_positional: + if (__glibc_unlikely (workstart != NULL)) + { + free (workstart); + workstart = NULL; + } + done = printf_positional (s, format, readonly_format, ap, &ap_save, + done, nspecs_done, lead_str_end, work_buffer, + save_errno, grouping, thousands_sep); + + all_done: + if (__glibc_unlikely (workstart != NULL)) + free (workstart); + /* Unlock the stream. */ + _IO_funlockfile (s); + _IO_cleanup_region_end (0); + + return done; +} + +static int +printf_positional (_IO_FILE *s, const CHAR_T *format, int readonly_format, + va_list ap, va_list *ap_savep, int done, int nspecs_done, + const UCHAR_T *lead_str_end, + CHAR_T *work_buffer, int save_errno, + const char *grouping, THOUSANDS_SEP_T thousands_sep) +{ + /* For the argument descriptions, which may be allocated on the heap. */ + void *args_malloced = NULL; + + /* For positional argument handling. */ + struct scratch_buffer specsbuf; + scratch_buffer_init (&specsbuf); + struct printf_spec *specs = specsbuf.data; + size_t specs_limit = specsbuf.length / sizeof (specs[0]); + + /* Array with information about the needed arguments. This has to + be dynamically extensible. */ + size_t nspecs = 0; + + /* The number of arguments the format string requests. This will + determine the size of the array needed to store the argument + attributes. */ + size_t nargs = 0; + size_t bytes_per_arg; + union printf_arg *args_value; + int *args_size; + int *args_type; + + /* Positional parameters refer to arguments directly. This could + also determine the maximum number of arguments. Track the + maximum number. */ + size_t max_ref_arg = 0; + + /* Just a counter. */ + size_t cnt; + + CHAR_T *workstart = NULL; + + if (grouping == (const char *) -1) + { +#ifdef COMPILE_WPRINTF + thousands_sep = _NL_CURRENT_WORD (LC_NUMERIC, + _NL_NUMERIC_THOUSANDS_SEP_WC); +#else + thousands_sep = _NL_CURRENT (LC_NUMERIC, THOUSANDS_SEP); +#endif + + grouping = _NL_CURRENT (LC_NUMERIC, GROUPING); + if (*grouping == '\0' || *grouping == CHAR_MAX) + grouping = NULL; + } + + for (const UCHAR_T *f = lead_str_end; *f != L_('\0'); + f = specs[nspecs++].next_fmt) + { + if (nspecs == specs_limit) + { + if (!scratch_buffer_grow_preserve (&specsbuf)) + { + done = -1; + goto all_done; + } + specs = specsbuf.data; + specs_limit = specsbuf.length / sizeof (specs[0]); + } + + /* Parse the format specifier. */ +#ifdef COMPILE_WPRINTF + nargs += __parse_one_specwc (f, nargs, &specs[nspecs], &max_ref_arg); +#else + nargs += __parse_one_specmb (f, nargs, &specs[nspecs], &max_ref_arg); +#endif + } + + /* Determine the number of arguments the format string consumes. */ + nargs = MAX (nargs, max_ref_arg); + /* Calculate total size needed to represent a single argument across + all three argument-related arrays. */ + bytes_per_arg = (sizeof (*args_value) + sizeof (*args_size) + + sizeof (*args_type)); + + /* Check for potential integer overflow. */ + if (__glibc_unlikely (nargs > INT_MAX / bytes_per_arg)) + { + __set_errno (EOVERFLOW); + done = -1; + goto all_done; + } + + /* Allocate memory for all three argument arrays. */ + if (__libc_use_alloca (nargs * bytes_per_arg)) + args_value = alloca (nargs * bytes_per_arg); + else + { + args_value = args_malloced = malloc (nargs * bytes_per_arg); + if (args_value == NULL) + { + done = -1; + goto all_done; + } + } + + /* Set up the remaining two arrays to each point past the end of the + prior array, since space for all three has been allocated now. */ + args_size = &args_value[nargs].pa_int; + args_type = &args_size[nargs]; + memset (args_type, s->_flags2 & _IO_FLAGS2_FORTIFY ? '\xff' : '\0', + nargs * sizeof (*args_type)); + + /* XXX Could do sanity check here: If any element in ARGS_TYPE is + still zero after this loop, format is invalid. For now we + simply use 0 as the value. */ + + /* Fill in the types of all the arguments. */ + for (cnt = 0; cnt < nspecs; ++cnt) + { + /* If the width is determined by an argument this is an int. */ + if (specs[cnt].width_arg != -1) + args_type[specs[cnt].width_arg] = PA_INT; + + /* If the precision is determined by an argument this is an int. */ + if (specs[cnt].prec_arg != -1) + args_type[specs[cnt].prec_arg] = PA_INT; + + switch (specs[cnt].ndata_args) + { + case 0: /* No arguments. */ + break; + case 1: /* One argument; we already have the + type and size. */ + args_type[specs[cnt].data_arg] = specs[cnt].data_arg_type; + args_size[specs[cnt].data_arg] = specs[cnt].size; + break; + default: + /* We have more than one argument for this format spec. + We must call the arginfo function again to determine + all the types. */ + (void) (*__printf_arginfo_table[specs[cnt].info.spec]) + (&specs[cnt].info, + specs[cnt].ndata_args, &args_type[specs[cnt].data_arg], + &args_size[specs[cnt].data_arg]); + break; + } + } + + /* Now we know all the types and the order. Fill in the argument + values. */ + for (cnt = 0; cnt < nargs; ++cnt) + switch (args_type[cnt]) + { +#define T(tag, mem, type) \ + case tag: \ + args_value[cnt].mem = va_arg (*ap_savep, type); \ + break + + T (PA_WCHAR, pa_wchar, wint_t); + case PA_CHAR: /* Promoted. */ + case PA_INT|PA_FLAG_SHORT: /* Promoted. */ +#if LONG_MAX == INT_MAX + case PA_INT|PA_FLAG_LONG: +#endif + T (PA_INT, pa_int, int); +#if LONG_MAX == LONG_LONG_MAX + case PA_INT|PA_FLAG_LONG: +#endif + T (PA_INT|PA_FLAG_LONG_LONG, pa_long_long_int, long long int); +#if LONG_MAX != INT_MAX && LONG_MAX != LONG_LONG_MAX +# error "he?" +#endif + case PA_FLOAT: /* Promoted. */ + T (PA_DOUBLE, pa_double, double); + case PA_DOUBLE|PA_FLAG_LONG_DOUBLE: + if (__ldbl_is_dbl) + { + args_value[cnt].pa_double = va_arg (*ap_savep, double); + args_type[cnt] &= ~PA_FLAG_LONG_DOUBLE; + } + else + args_value[cnt].pa_long_double = va_arg (*ap_savep, long double); + break; + case PA_STRING: /* All pointers are the same */ + case PA_WSTRING: /* All pointers are the same */ + T (PA_POINTER, pa_pointer, void *); +#undef T + default: + if ((args_type[cnt] & PA_FLAG_PTR) != 0) + args_value[cnt].pa_pointer = va_arg (*ap_savep, void *); + else if (__glibc_unlikely (__printf_va_arg_table != NULL) + && __printf_va_arg_table[args_type[cnt] - PA_LAST] != NULL) + { + args_value[cnt].pa_user = alloca (args_size[cnt]); + (*__printf_va_arg_table[args_type[cnt] - PA_LAST]) + (args_value[cnt].pa_user, ap_savep); + } + else + args_value[cnt].pa_long_double = 0.0; + break; + case -1: + /* Error case. Not all parameters appear in N$ format + strings. We have no way to determine their type. */ + assert (s->_flags2 & _IO_FLAGS2_FORTIFY); + __libc_fatal ("*** invalid %N$ use detected ***\n"); + } + + /* Now walk through all format specifiers and process them. */ + for (; (size_t) nspecs_done < nspecs; ++nspecs_done) + { + STEP4_TABLE; + + int is_negative; + union + { + unsigned long long int longlong; + unsigned long int word; + } number; + int base; + union printf_arg the_arg; + CHAR_T *string; /* Pointer to argument string. */ + + /* Fill variables from values in struct. */ + int alt = specs[nspecs_done].info.alt; + int space = specs[nspecs_done].info.space; + int left = specs[nspecs_done].info.left; + int showsign = specs[nspecs_done].info.showsign; + int group = specs[nspecs_done].info.group; + int is_long_double = specs[nspecs_done].info.is_long_double; + int is_short = specs[nspecs_done].info.is_short; + int is_char = specs[nspecs_done].info.is_char; + int is_long = specs[nspecs_done].info.is_long; + int width = specs[nspecs_done].info.width; + int prec = specs[nspecs_done].info.prec; + int use_outdigits = specs[nspecs_done].info.i18n; + char pad = specs[nspecs_done].info.pad; + CHAR_T spec = specs[nspecs_done].info.spec; + + workstart = NULL; + CHAR_T *workend = work_buffer + WORK_BUFFER_SIZE; + + /* Fill in last information. */ + if (specs[nspecs_done].width_arg != -1) + { + /* Extract the field width from an argument. */ + specs[nspecs_done].info.width = + args_value[specs[nspecs_done].width_arg].pa_int; + + if (specs[nspecs_done].info.width < 0) + /* If the width value is negative left justification is + selected and the value is taken as being positive. */ + { + specs[nspecs_done].info.width *= -1; + left = specs[nspecs_done].info.left = 1; + } + width = specs[nspecs_done].info.width; + } + + if (specs[nspecs_done].prec_arg != -1) + { + /* Extract the precision from an argument. */ + specs[nspecs_done].info.prec = + args_value[specs[nspecs_done].prec_arg].pa_int; + + if (specs[nspecs_done].info.prec < 0) + /* If the precision is negative the precision is + omitted. */ + specs[nspecs_done].info.prec = -1; + + prec = specs[nspecs_done].info.prec; + } + + /* Maybe the buffer is too small. */ + if (MAX (prec, width) + EXTSIZ > WORK_BUFFER_SIZE) + { + if (__libc_use_alloca ((MAX (prec, width) + EXTSIZ) + * sizeof (CHAR_T))) + workend = ((CHAR_T *) alloca ((MAX (prec, width) + EXTSIZ) + * sizeof (CHAR_T)) + + (MAX (prec, width) + EXTSIZ)); + else + { + workstart = (CHAR_T *) malloc ((MAX (prec, width) + EXTSIZ) + * sizeof (CHAR_T)); + if (workstart == NULL) + { + done = -1; + goto all_done; + } + workend = workstart + (MAX (prec, width) + EXTSIZ); + } + } + + /* Process format specifiers. */ + while (1) + { + extern printf_function **__printf_function_table; + int function_done; + + if (spec <= UCHAR_MAX + && __printf_function_table != NULL + && __printf_function_table[(size_t) spec] != NULL) + { + const void **ptr = alloca (specs[nspecs_done].ndata_args + * sizeof (const void *)); + + /* Fill in an array of pointers to the argument values. */ + for (unsigned int i = 0; i < specs[nspecs_done].ndata_args; + ++i) + ptr[i] = &args_value[specs[nspecs_done].data_arg + i]; + + /* Call the function. */ + function_done = __printf_function_table[(size_t) spec] + (s, &specs[nspecs_done].info, ptr); + + if (function_done != -2) + { + /* If an error occurred we don't have information + about # of chars. */ + if (function_done < 0) + { + /* Function has set errno. */ + done = -1; + goto all_done; + } + + done_add (function_done); + break; + } + } + + JUMP (spec, step4_jumps); + + process_arg ((&specs[nspecs_done])); + process_string_arg ((&specs[nspecs_done])); + + LABEL (form_unknown): + { + unsigned int i; + const void **ptr; + + ptr = alloca (specs[nspecs_done].ndata_args + * sizeof (const void *)); + + /* Fill in an array of pointers to the argument values. */ + for (i = 0; i < specs[nspecs_done].ndata_args; ++i) + ptr[i] = &args_value[specs[nspecs_done].data_arg + i]; + + /* Call the function. */ + function_done = printf_unknown (s, &specs[nspecs_done].info, + ptr); + + /* If an error occurred we don't have information about # + of chars. */ + if (function_done < 0) + { + /* Function has set errno. */ + done = -1; + goto all_done; + } + + done_add (function_done); + } + break; + } + + if (__glibc_unlikely (workstart != NULL)) + free (workstart); + workstart = NULL; + + /* Write the following constant string. */ + outstring (specs[nspecs_done].end_of_fmt, + specs[nspecs_done].next_fmt + - specs[nspecs_done].end_of_fmt); + } + all_done: + if (__glibc_unlikely (args_malloced != NULL)) + free (args_malloced); + if (__glibc_unlikely (workstart != NULL)) + free (workstart); + scratch_buffer_free (&specsbuf); + return done; +} + +/* Handle an unknown format specifier. This prints out a canonicalized + representation of the format spec itself. */ +static int +printf_unknown (FILE *s, const struct printf_info *info, + const void *const *args) + +{ + int done = 0; + CHAR_T work_buffer[MAX (sizeof (info->width), sizeof (info->prec)) * 3]; + CHAR_T *const workend + = &work_buffer[sizeof (work_buffer) / sizeof (CHAR_T)]; + CHAR_T *w; + + outchar (L_('%')); + + if (info->alt) + outchar (L_('#')); + if (info->group) + outchar (L_('\'')); + if (info->showsign) + outchar (L_('+')); + else if (info->space) + outchar (L_(' ')); + if (info->left) + outchar (L_('-')); + if (info->pad == L_('0')) + outchar (L_('0')); + if (info->i18n) + outchar (L_('I')); + + if (info->width != 0) + { + w = _itoa_word (info->width, workend, 10, 0); + while (w < workend) + outchar (*w++); + } + + if (info->prec != -1) + { + outchar (L_('.')); + w = _itoa_word (info->prec, workend, 10, 0); + while (w < workend) + outchar (*w++); + } + + if (info->spec != L_('\0')) + outchar (info->spec); + + all_done: + return done; +} + +/* Group the digits according to the grouping rules of the current locale. + The interpretation of GROUPING is as in `struct lconv' from <locale.h>. */ +static CHAR_T * +internal_function +group_number (CHAR_T *w, CHAR_T *rear_ptr, const char *grouping, + THOUSANDS_SEP_T thousands_sep) +{ + int len; + CHAR_T *src, *s; +#ifndef COMPILE_WPRINTF + int tlen = strlen (thousands_sep); +#endif + + /* We treat all negative values like CHAR_MAX. */ + + if (*grouping == CHAR_MAX || *grouping <= 0) + /* No grouping should be done. */ + return w; + + len = *grouping++; + + /* Copy existing string so that nothing gets overwritten. */ + src = (CHAR_T *) alloca ((rear_ptr - w) * sizeof (CHAR_T)); + s = (CHAR_T *) __mempcpy (src, w, + (rear_ptr - w) * sizeof (CHAR_T)); + w = rear_ptr; + + /* Process all characters in the string. */ + while (s > src) + { + *--w = *--s; + + if (--len == 0 && s > src) + { + /* A new group begins. */ +#ifdef COMPILE_WPRINTF + *--w = thousands_sep; +#else + int cnt = tlen; + do + *--w = thousands_sep[--cnt]; + while (cnt > 0); +#endif + + if (*grouping == CHAR_MAX +#if CHAR_MIN < 0 + || *grouping < 0 +#endif + ) + { + /* No further grouping to be done. + Copy the rest of the number. */ + do + *--w = *--s; + while (s > src); + break; + } + else if (*grouping != '\0') + /* The previous grouping repeats ad infinitum. */ + len = *grouping++; + else + len = grouping[-1]; + } + } + return w; +} + +/* Helper "class" for `fprintf to unbuffered': creates a temporary buffer. */ +struct helper_file + { + struct _IO_FILE_plus _f; +#ifdef COMPILE_WPRINTF + struct _IO_wide_data _wide_data; +#endif + _IO_FILE *_put_stream; +#ifdef _IO_MTSAFE_IO + _IO_lock_t lock; +#endif + }; + +static int +_IO_helper_overflow (_IO_FILE *s, int c) +{ + _IO_FILE *target = ((struct helper_file*) s)->_put_stream; +#ifdef COMPILE_WPRINTF + int used = s->_wide_data->_IO_write_ptr - s->_wide_data->_IO_write_base; + if (used) + { + _IO_size_t written = _IO_sputn (target, s->_wide_data->_IO_write_base, + used); + if (written == 0 || written == WEOF) + return WEOF; + __wmemmove (s->_wide_data->_IO_write_base, + s->_wide_data->_IO_write_base + written, + used - written); + s->_wide_data->_IO_write_ptr -= written; + } +#else + int used = s->_IO_write_ptr - s->_IO_write_base; + if (used) + { + _IO_size_t written = _IO_sputn (target, s->_IO_write_base, used); + if (written == 0 || written == EOF) + return EOF; + memmove (s->_IO_write_base, s->_IO_write_base + written, + used - written); + s->_IO_write_ptr -= written; + } +#endif + return PUTC (c, s); +} + +#ifdef COMPILE_WPRINTF +static const struct _IO_jump_t _IO_helper_jumps libio_vtable = +{ + JUMP_INIT_DUMMY, + JUMP_INIT (finish, _IO_wdefault_finish), + JUMP_INIT (overflow, _IO_helper_overflow), + JUMP_INIT (underflow, _IO_default_underflow), + JUMP_INIT (uflow, _IO_default_uflow), + JUMP_INIT (pbackfail, (_IO_pbackfail_t) _IO_wdefault_pbackfail), + JUMP_INIT (xsputn, _IO_wdefault_xsputn), + JUMP_INIT (xsgetn, _IO_wdefault_xsgetn), + JUMP_INIT (seekoff, _IO_default_seekoff), + JUMP_INIT (seekpos, _IO_default_seekpos), + JUMP_INIT (setbuf, _IO_default_setbuf), + JUMP_INIT (sync, _IO_default_sync), + JUMP_INIT (doallocate, _IO_wdefault_doallocate), + JUMP_INIT (read, _IO_default_read), + JUMP_INIT (write, _IO_default_write), + JUMP_INIT (seek, _IO_default_seek), + JUMP_INIT (close, _IO_default_close), + JUMP_INIT (stat, _IO_default_stat) +}; +#else +static const struct _IO_jump_t _IO_helper_jumps libio_vtable = +{ + JUMP_INIT_DUMMY, + JUMP_INIT (finish, _IO_default_finish), + JUMP_INIT (overflow, _IO_helper_overflow), + JUMP_INIT (underflow, _IO_default_underflow), + JUMP_INIT (uflow, _IO_default_uflow), + JUMP_INIT (pbackfail, _IO_default_pbackfail), + JUMP_INIT (xsputn, _IO_default_xsputn), + JUMP_INIT (xsgetn, _IO_default_xsgetn), + JUMP_INIT (seekoff, _IO_default_seekoff), + JUMP_INIT (seekpos, _IO_default_seekpos), + JUMP_INIT (setbuf, _IO_default_setbuf), + JUMP_INIT (sync, _IO_default_sync), + JUMP_INIT (doallocate, _IO_default_doallocate), + JUMP_INIT (read, _IO_default_read), + JUMP_INIT (write, _IO_default_write), + JUMP_INIT (seek, _IO_default_seek), + JUMP_INIT (close, _IO_default_close), + JUMP_INIT (stat, _IO_default_stat) +}; +#endif + +static int +internal_function +buffered_vfprintf (_IO_FILE *s, const CHAR_T *format, + _IO_va_list args) +{ + CHAR_T buf[_IO_BUFSIZ]; + struct helper_file helper; + _IO_FILE *hp = (_IO_FILE *) &helper._f; + int result, to_flush; + + /* Orient the stream. */ +#ifdef ORIENT + ORIENT; +#endif + + /* Initialize helper. */ + helper._put_stream = s; +#ifdef COMPILE_WPRINTF + hp->_wide_data = &helper._wide_data; + _IO_wsetp (hp, buf, buf + sizeof buf / sizeof (CHAR_T)); + hp->_mode = 1; +#else + _IO_setp (hp, buf, buf + sizeof buf); + hp->_mode = -1; +#endif + hp->_IO_file_flags = _IO_MAGIC|_IO_NO_READS|_IO_USER_LOCK; +#if _IO_JUMPS_OFFSET + hp->_vtable_offset = 0; +#endif +#ifdef _IO_MTSAFE_IO + hp->_lock = NULL; +#endif + hp->_flags2 = s->_flags2; + _IO_JUMPS (&helper._f) = (struct _IO_jump_t *) &_IO_helper_jumps; + + /* Now print to helper instead. */ +#ifndef COMPILE_WPRINTF + result = _IO_vfprintf (hp, format, args); +#else + result = vfprintf (hp, format, args); +#endif + + /* Lock stream. */ + __libc_cleanup_region_start (1, (void (*) (void *)) &_IO_funlockfile, s); + _IO_flockfile (s); + + /* Now flush anything from the helper to the S. */ +#ifdef COMPILE_WPRINTF + if ((to_flush = (hp->_wide_data->_IO_write_ptr + - hp->_wide_data->_IO_write_base)) > 0) + { + if ((int) _IO_sputn (s, hp->_wide_data->_IO_write_base, to_flush) + != to_flush) + result = -1; + } +#else + if ((to_flush = hp->_IO_write_ptr - hp->_IO_write_base) > 0) + { + if ((int) _IO_sputn (s, hp->_IO_write_base, to_flush) != to_flush) + result = -1; + } +#endif + + /* Unlock the stream. */ + _IO_funlockfile (s); + __libc_cleanup_region_end (0); + + return result; +} + +#undef vfprintf +#ifdef COMPILE_WPRINTF +strong_alias (_IO_vfwprintf, __vfwprintf); +ldbl_weak_alias (_IO_vfwprintf, vfwprintf); +#else +ldbl_strong_alias (_IO_vfprintf_internal, vfprintf); +ldbl_hidden_def (_IO_vfprintf_internal, vfprintf) +ldbl_strong_alias (_IO_vfprintf_internal, _IO_vfprintf); +ldbl_hidden_def (_IO_vfprintf_internal, _IO_vfprintf) +#endif diff --git a/REORG.TODO/stdio-common/vfscanf.c b/REORG.TODO/stdio-common/vfscanf.c new file mode 100644 index 0000000000..1adf27e11b --- /dev/null +++ b/REORG.TODO/stdio-common/vfscanf.c @@ -0,0 +1,3070 @@ +/* Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <assert.h> +#include <errno.h> +#include <limits.h> +#include <ctype.h> +#include <stdarg.h> +#include <stdbool.h> +#include <stdio.h> +#include <stdint.h> +#include <stdlib.h> +#include <string.h> +#include <wchar.h> +#include <wctype.h> +#include <libc-diag.h> +#include <libc-lock.h> +#include <locale/localeinfo.h> +#include <scratch_buffer.h> + +#ifdef __GNUC__ +# define HAVE_LONGLONG +# define LONGLONG long long +#else +# define LONGLONG long +#endif + +/* Determine whether we have to handle `long long' at all. */ +#if LONG_MAX == LONG_LONG_MAX +# define need_longlong 0 +#else +# define need_longlong 1 +#endif + +/* Determine whether we have to handle `long'. */ +#if INT_MAX == LONG_MAX +# define need_long 0 +#else +# define need_long 1 +#endif + +/* Those are flags in the conversion format. */ +#define LONG 0x0001 /* l: long or double */ +#define LONGDBL 0x0002 /* L: long long or long double */ +#define SHORT 0x0004 /* h: short */ +#define SUPPRESS 0x0008 /* *: suppress assignment */ +#define POINTER 0x0010 /* weird %p pointer (`fake hex') */ +#define NOSKIP 0x0020 /* do not skip blanks */ +#define NUMBER_SIGNED 0x0040 /* signed integer */ +#define GROUP 0x0080 /* ': group numbers */ +#define GNU_MALLOC 0x0100 /* a: malloc strings */ +#define CHAR 0x0200 /* hh: char */ +#define I18N 0x0400 /* I: use locale's digits */ +#define HEXA_FLOAT 0x0800 /* hexadecimal float */ +#define READ_POINTER 0x1000 /* this is a pointer value */ +#define POSIX_MALLOC 0x2000 /* m: malloc strings */ +#define MALLOC (GNU_MALLOC | POSIX_MALLOC) + +#include <locale/localeinfo.h> +#include <libioP.h> +#include <libio.h> + +#undef va_list +#define va_list _IO_va_list + +#ifdef COMPILE_WSCANF +# define ungetc(c, s) ((void) (c == WEOF \ + || (--read_in, \ + _IO_sputbackwc (s, c)))) +# define ungetc_not_eof(c, s) ((void) (--read_in, \ + _IO_sputbackwc (s, c))) +# define inchar() (c == WEOF ? ((errno = inchar_errno), WEOF) \ + : ((c = _IO_getwc_unlocked (s)), \ + (void) (c != WEOF \ + ? ++read_in \ + : (size_t) (inchar_errno = errno)), c)) + +# define ISSPACE(Ch) iswspace (Ch) +# define ISDIGIT(Ch) iswdigit (Ch) +# define ISXDIGIT(Ch) iswxdigit (Ch) +# define TOLOWER(Ch) towlower (Ch) +# define ORIENT if (_IO_fwide (s, 1) != 1) return WEOF +# define __strtoll_internal __wcstoll_internal +# define __strtoull_internal __wcstoull_internal +# define __strtol_internal __wcstol_internal +# define __strtoul_internal __wcstoul_internal +# define __strtold_internal __wcstold_internal +# define __strtod_internal __wcstod_internal +# define __strtof_internal __wcstof_internal + +# define L_(Str) L##Str +# define CHAR_T wchar_t +# define UCHAR_T unsigned int +# define WINT_T wint_t +# undef EOF +# define EOF WEOF +#else +# define ungetc(c, s) ((void) ((int) c == EOF \ + || (--read_in, \ + _IO_sputbackc (s, (unsigned char) c)))) +# define ungetc_not_eof(c, s) ((void) (--read_in, \ + _IO_sputbackc (s, (unsigned char) c))) +# define inchar() (c == EOF ? ((errno = inchar_errno), EOF) \ + : ((c = _IO_getc_unlocked (s)), \ + (void) (c != EOF \ + ? ++read_in \ + : (size_t) (inchar_errno = errno)), c)) +# define ISSPACE(Ch) __isspace_l (Ch, loc) +# define ISDIGIT(Ch) __isdigit_l (Ch, loc) +# define ISXDIGIT(Ch) __isxdigit_l (Ch, loc) +# define TOLOWER(Ch) __tolower_l ((unsigned char) (Ch), loc) +# define ORIENT if (_IO_vtable_offset (s) == 0 \ + && _IO_fwide (s, -1) != -1) \ + return EOF + +# define L_(Str) Str +# define CHAR_T char +# define UCHAR_T unsigned char +# define WINT_T int +#endif + +#include "printf-parse.h" /* Use read_int. */ + +#define encode_error() do { \ + errval = 4; \ + __set_errno (EILSEQ); \ + goto errout; \ + } while (0) +#define conv_error() do { \ + errval = 2; \ + goto errout; \ + } while (0) +#define input_error() do { \ + errval = 1; \ + if (done == 0) done = EOF; \ + goto errout; \ + } while (0) +#define add_ptr_to_free(ptr) \ + do \ + { \ + if (ptrs_to_free == NULL \ + || ptrs_to_free->count == (sizeof (ptrs_to_free->ptrs) \ + / sizeof (ptrs_to_free->ptrs[0]))) \ + { \ + struct ptrs_to_free *new_ptrs = alloca (sizeof (*ptrs_to_free)); \ + new_ptrs->count = 0; \ + new_ptrs->next = ptrs_to_free; \ + ptrs_to_free = new_ptrs; \ + } \ + ptrs_to_free->ptrs[ptrs_to_free->count++] = (ptr); \ + } \ + while (0) +#define ARGCHECK(s, format) \ + do \ + { \ + /* Check file argument for consistence. */ \ + CHECK_FILE (s, EOF); \ + if (s->_flags & _IO_NO_READS) \ + { \ + __set_errno (EBADF); \ + return EOF; \ + } \ + else if (format == NULL) \ + { \ + MAYBE_SET_EINVAL; \ + return EOF; \ + } \ + } while (0) +#define LOCK_STREAM(S) \ + __libc_cleanup_region_start (1, (void (*) (void *)) &_IO_funlockfile, (S)); \ + _IO_flockfile (S) +#define UNLOCK_STREAM(S) \ + _IO_funlockfile (S); \ + __libc_cleanup_region_end (0) + +struct ptrs_to_free +{ + size_t count; + struct ptrs_to_free *next; + char **ptrs[32]; +}; + +struct char_buffer { + CHAR_T *current; + CHAR_T *end; + struct scratch_buffer scratch; +}; + +/* Returns a pointer to the first CHAR_T object in the buffer. Only + valid if char_buffer_add (BUFFER, CH) has been called and + char_buffer_error (BUFFER) is false. */ +static inline CHAR_T * +char_buffer_start (const struct char_buffer *buffer) +{ + return (CHAR_T *) buffer->scratch.data; +} + +/* Returns the number of CHAR_T objects in the buffer. Only valid if + char_buffer_error (BUFFER) is false. */ +static inline size_t +char_buffer_size (const struct char_buffer *buffer) +{ + return buffer->current - char_buffer_start (buffer); +} + +/* Reinitializes BUFFER->current and BUFFER->end to cover the entire + scratch buffer. */ +static inline void +char_buffer_rewind (struct char_buffer *buffer) +{ + buffer->current = char_buffer_start (buffer); + buffer->end = buffer->current + buffer->scratch.length / sizeof (CHAR_T); +} + +/* Returns true if a previous call to char_buffer_add (BUFFER, CH) + failed. */ +static inline bool +char_buffer_error (const struct char_buffer *buffer) +{ + return __glibc_unlikely (buffer->current == NULL); +} + +/* Slow path for char_buffer_add. */ +static void +char_buffer_add_slow (struct char_buffer *buffer, CHAR_T ch) +{ + if (char_buffer_error (buffer)) + return; + size_t offset = buffer->end - (CHAR_T *) buffer->scratch.data; + if (!scratch_buffer_grow_preserve (&buffer->scratch)) + { + buffer->current = NULL; + buffer->end = NULL; + return; + } + char_buffer_rewind (buffer); + buffer->current += offset; + *buffer->current++ = ch; +} + +/* Adds CH to BUFFER. This function does not report any errors, check + for them with char_buffer_error. */ +static inline void +char_buffer_add (struct char_buffer *buffer, CHAR_T ch) + __attribute__ ((always_inline)); +static inline void +char_buffer_add (struct char_buffer *buffer, CHAR_T ch) +{ + if (__glibc_unlikely (buffer->current == buffer->end)) + char_buffer_add_slow (buffer, ch); + else + *buffer->current++ = ch; +} + +/* Read formatted input from S according to the format string + FORMAT, using the argument list in ARG. + Return the number of assignments made, or -1 for an input error. */ +#ifdef COMPILE_WSCANF +int +_IO_vfwscanf (_IO_FILE *s, const wchar_t *format, _IO_va_list argptr, + int *errp) +#else +int +_IO_vfscanf_internal (_IO_FILE *s, const char *format, _IO_va_list argptr, + int *errp) +#endif +{ + va_list arg; + const CHAR_T *f = format; + UCHAR_T fc; /* Current character of the format. */ + WINT_T done = 0; /* Assignments done. */ + size_t read_in = 0; /* Chars read in. */ + WINT_T c = 0; /* Last char read. */ + int width; /* Maximum field width. */ + int flags; /* Modifiers for current format element. */ + int errval = 0; +#ifndef COMPILE_WSCANF + __locale_t loc = _NL_CURRENT_LOCALE; + struct __locale_data *const curctype = loc->__locales[LC_CTYPE]; +#endif + + /* Errno of last failed inchar call. */ + int inchar_errno = 0; + /* Status for reading F-P nums. */ + char got_digit, got_dot, got_e, negative; + /* If a [...] is a [^...]. */ + CHAR_T not_in; +#define exp_char not_in + /* Base for integral numbers. */ + int base; + /* Decimal point character. */ +#ifdef COMPILE_WSCANF + wint_t decimal; +#else + const char *decimal; +#endif + /* The thousands character of the current locale. */ +#ifdef COMPILE_WSCANF + wint_t thousands; +#else + const char *thousands; +#endif + struct ptrs_to_free *ptrs_to_free = NULL; + /* State for the conversions. */ + mbstate_t state; + /* Integral holding variables. */ + union + { + long long int q; + unsigned long long int uq; + long int l; + unsigned long int ul; + } num; + /* Character-buffer pointer. */ + char *str = NULL; + wchar_t *wstr = NULL; + char **strptr = NULL; + ssize_t strsize = 0; + /* We must not react on white spaces immediately because they can + possibly be matched even if in the input stream no character is + available anymore. */ + int skip_space = 0; + /* Workspace. */ + CHAR_T *tw; /* Temporary pointer. */ + struct char_buffer charbuf; + scratch_buffer_init (&charbuf.scratch); + +#ifdef __va_copy + __va_copy (arg, argptr); +#else + arg = (va_list) argptr; +#endif + +#ifdef ORIENT + ORIENT; +#endif + + ARGCHECK (s, format); + + { +#ifndef COMPILE_WSCANF + struct __locale_data *const curnumeric = loc->__locales[LC_NUMERIC]; +#endif + + /* Figure out the decimal point character. */ +#ifdef COMPILE_WSCANF + decimal = _NL_CURRENT_WORD (LC_NUMERIC, _NL_NUMERIC_DECIMAL_POINT_WC); +#else + decimal = curnumeric->values[_NL_ITEM_INDEX (DECIMAL_POINT)].string; +#endif + /* Figure out the thousands separator character. */ +#ifdef COMPILE_WSCANF + thousands = _NL_CURRENT_WORD (LC_NUMERIC, _NL_NUMERIC_THOUSANDS_SEP_WC); +#else + thousands = curnumeric->values[_NL_ITEM_INDEX (THOUSANDS_SEP)].string; + if (*thousands == '\0') + thousands = NULL; +#endif + } + + /* Lock the stream. */ + LOCK_STREAM (s); + + +#ifndef COMPILE_WSCANF + /* From now on we use `state' to convert the format string. */ + memset (&state, '\0', sizeof (state)); +#endif + + /* Run through the format string. */ + while (*f != '\0') + { + unsigned int argpos; + /* Extract the next argument, which is of type TYPE. + For a %N$... spec, this is the Nth argument from the beginning; + otherwise it is the next argument after the state now in ARG. */ +#ifdef __va_copy +# define ARG(type) (argpos == 0 ? va_arg (arg, type) : \ + ({ unsigned int pos = argpos; \ + va_list arg; \ + __va_copy (arg, argptr); \ + while (--pos > 0) \ + (void) va_arg (arg, void *); \ + va_arg (arg, type); \ + })) +#else +# if 0 + /* XXX Possible optimization. */ +# define ARG(type) (argpos == 0 ? va_arg (arg, type) : \ + ({ va_list arg = (va_list) argptr; \ + arg = (va_list) ((char *) arg \ + + (argpos - 1) \ + * __va_rounded_size (void *)); \ + va_arg (arg, type); \ + })) +# else +# define ARG(type) (argpos == 0 ? va_arg (arg, type) : \ + ({ unsigned int pos = argpos; \ + va_list arg = (va_list) argptr; \ + while (--pos > 0) \ + (void) va_arg (arg, void *); \ + va_arg (arg, type); \ + })) +# endif +#endif + +#ifndef COMPILE_WSCANF + if (!isascii ((unsigned char) *f)) + { + /* Non-ASCII, may be a multibyte. */ + int len = __mbrlen (f, strlen (f), &state); + if (len > 0) + { + do + { + c = inchar (); + if (__glibc_unlikely (c == EOF)) + input_error (); + else if (c != (unsigned char) *f++) + { + ungetc_not_eof (c, s); + conv_error (); + } + } + while (--len > 0); + continue; + } + } +#endif + + fc = *f++; + if (fc != '%') + { + /* Remember to skip spaces. */ + if (ISSPACE (fc)) + { + skip_space = 1; + continue; + } + + /* Read a character. */ + c = inchar (); + + /* Characters other than format specs must just match. */ + if (__glibc_unlikely (c == EOF)) + input_error (); + + /* We saw white space char as the last character in the format + string. Now it's time to skip all leading white space. */ + if (skip_space) + { + while (ISSPACE (c)) + if (__glibc_unlikely (inchar () == EOF)) + input_error (); + skip_space = 0; + } + + if (__glibc_unlikely (c != fc)) + { + ungetc (c, s); + conv_error (); + } + + continue; + } + + /* This is the start of the conversion string. */ + flags = 0; + + /* Initialize state of modifiers. */ + argpos = 0; + + /* Prepare temporary buffer. */ + char_buffer_rewind (&charbuf); + + /* Check for a positional parameter specification. */ + if (ISDIGIT ((UCHAR_T) *f)) + { + argpos = read_int ((const UCHAR_T **) &f); + if (*f == L_('$')) + ++f; + else + { + /* Oops; that was actually the field width. */ + width = argpos; + argpos = 0; + goto got_width; + } + } + + /* Check for the assignment-suppressing, the number grouping flag, + and the signal to use the locale's digit representation. */ + while (*f == L_('*') || *f == L_('\'') || *f == L_('I')) + switch (*f++) + { + case L_('*'): + flags |= SUPPRESS; + break; + case L_('\''): +#ifdef COMPILE_WSCANF + if (thousands != L'\0') +#else + if (thousands != NULL) +#endif + flags |= GROUP; + break; + case L_('I'): + flags |= I18N; + break; + } + + /* Find the maximum field width. */ + width = 0; + if (ISDIGIT ((UCHAR_T) *f)) + width = read_int ((const UCHAR_T **) &f); + got_width: + if (width == 0) + width = -1; + + /* Check for type modifiers. */ + switch (*f++) + { + case L_('h'): + /* ints are short ints or chars. */ + if (*f == L_('h')) + { + ++f; + flags |= CHAR; + } + else + flags |= SHORT; + break; + case L_('l'): + if (*f == L_('l')) + { + /* A double `l' is equivalent to an `L'. */ + ++f; + flags |= LONGDBL | LONG; + } + else + /* ints are long ints. */ + flags |= LONG; + break; + case L_('q'): + case L_('L'): + /* doubles are long doubles, and ints are long long ints. */ + flags |= LONGDBL | LONG; + break; + case L_('a'): + /* The `a' is used as a flag only if followed by `s', `S' or + `['. */ + if (*f != L_('s') && *f != L_('S') && *f != L_('[')) + { + --f; + break; + } + /* In __isoc99_*scanf %as, %aS and %a[ extension is not + supported at all. */ + if (s->_flags2 & _IO_FLAGS2_SCANF_STD) + { + --f; + break; + } + /* String conversions (%s, %[) take a `char **' + arg and fill it in with a malloc'd pointer. */ + flags |= GNU_MALLOC; + break; + case L_('m'): + flags |= POSIX_MALLOC; + if (*f == L_('l')) + { + ++f; + flags |= LONG; + } + break; + case L_('z'): + if (need_longlong && sizeof (size_t) > sizeof (unsigned long int)) + flags |= LONGDBL; + else if (sizeof (size_t) > sizeof (unsigned int)) + flags |= LONG; + break; + case L_('j'): + if (need_longlong && sizeof (uintmax_t) > sizeof (unsigned long int)) + flags |= LONGDBL; + else if (sizeof (uintmax_t) > sizeof (unsigned int)) + flags |= LONG; + break; + case L_('t'): + if (need_longlong && sizeof (ptrdiff_t) > sizeof (long int)) + flags |= LONGDBL; + else if (sizeof (ptrdiff_t) > sizeof (int)) + flags |= LONG; + break; + default: + /* Not a recognized modifier. Backup. */ + --f; + break; + } + + /* End of the format string? */ + if (__glibc_unlikely (*f == L_('\0'))) + conv_error (); + + /* Find the conversion specifier. */ + fc = *f++; + if (skip_space || (fc != L_('[') && fc != L_('c') + && fc != L_('C') && fc != L_('n'))) + { + /* Eat whitespace. */ + int save_errno = errno; + __set_errno (0); + do + /* We add the additional test for EOF here since otherwise + inchar will restore the old errno value which might be + EINTR but does not indicate an interrupt since nothing + was read at this time. */ + if (__builtin_expect ((c == EOF || inchar () == EOF) + && errno == EINTR, 0)) + input_error (); + while (ISSPACE (c)); + __set_errno (save_errno); + ungetc (c, s); + skip_space = 0; + } + + switch (fc) + { + case L_('%'): /* Must match a literal '%'. */ + c = inchar (); + if (__glibc_unlikely (c == EOF)) + input_error (); + if (__glibc_unlikely (c != fc)) + { + ungetc_not_eof (c, s); + conv_error (); + } + break; + + case L_('n'): /* Answer number of assignments done. */ + /* Corrigendum 1 to ISO C 1990 describes the allowed flags + with the 'n' conversion specifier. */ + if (!(flags & SUPPRESS)) + { + /* Don't count the read-ahead. */ + if (need_longlong && (flags & LONGDBL)) + *ARG (long long int *) = read_in; + else if (need_long && (flags & LONG)) + *ARG (long int *) = read_in; + else if (flags & SHORT) + *ARG (short int *) = read_in; + else if (!(flags & CHAR)) + *ARG (int *) = read_in; + else + *ARG (char *) = read_in; + +#ifdef NO_BUG_IN_ISO_C_CORRIGENDUM_1 + /* We have a severe problem here. The ISO C standard + contradicts itself in explaining the effect of the %n + format in `scanf'. While in ISO C:1990 and the ISO C + Amendement 1:1995 the result is described as + + Execution of a %n directive does not effect the + assignment count returned at the completion of + execution of the f(w)scanf function. + + in ISO C Corrigendum 1:1994 the following was added: + + Subclause 7.9.6.2 + Add the following fourth example: + In: + #include <stdio.h> + int d1, d2, n1, n2, i; + i = sscanf("123", "%d%n%n%d", &d1, &n1, &n2, &d2); + the value 123 is assigned to d1 and the value3 to n1. + Because %n can never get an input failure the value + of 3 is also assigned to n2. The value of d2 is not + affected. The value 3 is assigned to i. + + We go for now with the historically correct code from ISO C, + i.e., we don't count the %n assignments. When it ever + should proof to be wrong just remove the #ifdef above. */ + ++done; +#endif + } + break; + + case L_('c'): /* Match characters. */ + if ((flags & LONG) == 0) + { + if (width == -1) + width = 1; + +#define STRING_ARG(Str, Type, Width) \ + do if (!(flags & SUPPRESS)) \ + { \ + if (flags & MALLOC) \ + { \ + /* The string is to be stored in a malloc'd buffer. */ \ + /* For %mS using char ** is actually wrong, but \ + shouldn't make a difference on any arch glibc \ + supports and would unnecessarily complicate \ + things. */ \ + strptr = ARG (char **); \ + if (strptr == NULL) \ + conv_error (); \ + /* Allocate an initial buffer. */ \ + strsize = Width; \ + *strptr = (char *) malloc (strsize * sizeof (Type)); \ + Str = (Type *) *strptr; \ + if (Str != NULL) \ + add_ptr_to_free (strptr); \ + else if (flags & POSIX_MALLOC) \ + { \ + done = EOF; \ + goto errout; \ + } \ + } \ + else \ + Str = ARG (Type *); \ + if (Str == NULL) \ + conv_error (); \ + } while (0) +#ifdef COMPILE_WSCANF + STRING_ARG (str, char, 100); +#else + STRING_ARG (str, char, (width > 1024 ? 1024 : width)); +#endif + + c = inchar (); + if (__glibc_unlikely (c == EOF)) + input_error (); + +#ifdef COMPILE_WSCANF + /* We have to convert the wide character(s) into multibyte + characters and store the result. */ + memset (&state, '\0', sizeof (state)); + + do + { + size_t n; + + if (!(flags & SUPPRESS) && (flags & POSIX_MALLOC) + && *strptr + strsize - str <= MB_LEN_MAX) + { + /* We have to enlarge the buffer if the `m' flag + was given. */ + size_t strleng = str - *strptr; + char *newstr; + + newstr = (char *) realloc (*strptr, strsize * 2); + if (newstr == NULL) + { + /* Can't allocate that much. Last-ditch effort. */ + newstr = (char *) realloc (*strptr, + strleng + MB_LEN_MAX); + if (newstr == NULL) + { + /* c can't have `a' flag, only `m'. */ + done = EOF; + goto errout; + } + else + { + *strptr = newstr; + str = newstr + strleng; + strsize = strleng + MB_LEN_MAX; + } + } + else + { + *strptr = newstr; + str = newstr + strleng; + strsize *= 2; + } + } + + n = __wcrtomb (!(flags & SUPPRESS) ? str : NULL, c, &state); + if (__glibc_unlikely (n == (size_t) -1)) + /* No valid wide character. */ + input_error (); + + /* Increment the output pointer. Even if we don't + write anything. */ + str += n; + } + while (--width > 0 && inchar () != EOF); +#else + if (!(flags & SUPPRESS)) + { + do + { + if ((flags & MALLOC) + && (char *) str == *strptr + strsize) + { + /* Enlarge the buffer. */ + size_t newsize + = strsize + + (strsize >= width ? width - 1 : strsize); + + str = (char *) realloc (*strptr, newsize); + if (str == NULL) + { + /* Can't allocate that much. Last-ditch + effort. */ + str = (char *) realloc (*strptr, strsize + 1); + if (str == NULL) + { + /* c can't have `a' flag, only `m'. */ + done = EOF; + goto errout; + } + else + { + *strptr = (char *) str; + str += strsize; + ++strsize; + } + } + else + { + *strptr = (char *) str; + str += strsize; + strsize = newsize; + } + } + *str++ = c; + } + while (--width > 0 && inchar () != EOF); + } + else + while (--width > 0 && inchar () != EOF); +#endif + + if (!(flags & SUPPRESS)) + { + if ((flags & MALLOC) && str - *strptr != strsize) + { + char *cp = (char *) realloc (*strptr, str - *strptr); + if (cp != NULL) + *strptr = cp; + } + strptr = NULL; + ++done; + } + + break; + } + /* FALLTHROUGH */ + case L_('C'): + if (width == -1) + width = 1; + + STRING_ARG (wstr, wchar_t, (width > 1024 ? 1024 : width)); + + c = inchar (); + if (__glibc_unlikely (c == EOF)) + input_error (); + +#ifdef COMPILE_WSCANF + /* Just store the incoming wide characters. */ + if (!(flags & SUPPRESS)) + { + do + { + if ((flags & MALLOC) + && wstr == (wchar_t *) *strptr + strsize) + { + size_t newsize + = strsize + (strsize > width ? width - 1 : strsize); + /* Enlarge the buffer. */ + wstr = (wchar_t *) realloc (*strptr, + newsize * sizeof (wchar_t)); + if (wstr == NULL) + { + /* Can't allocate that much. Last-ditch effort. */ + wstr = (wchar_t *) realloc (*strptr, + (strsize + 1) + * sizeof (wchar_t)); + if (wstr == NULL) + { + /* C or lc can't have `a' flag, only `m' + flag. */ + done = EOF; + goto errout; + } + else + { + *strptr = (char *) wstr; + wstr += strsize; + ++strsize; + } + } + else + { + *strptr = (char *) wstr; + wstr += strsize; + strsize = newsize; + } + } + *wstr++ = c; + } + while (--width > 0 && inchar () != EOF); + } + else + while (--width > 0 && inchar () != EOF); +#else + { + /* We have to convert the multibyte input sequence to wide + characters. */ + char buf[1]; + mbstate_t cstate; + + memset (&cstate, '\0', sizeof (cstate)); + + do + { + /* This is what we present the mbrtowc function first. */ + buf[0] = c; + + if (!(flags & SUPPRESS) && (flags & MALLOC) + && wstr == (wchar_t *) *strptr + strsize) + { + size_t newsize + = strsize + (strsize > width ? width - 1 : strsize); + /* Enlarge the buffer. */ + wstr = (wchar_t *) realloc (*strptr, + newsize * sizeof (wchar_t)); + if (wstr == NULL) + { + /* Can't allocate that much. Last-ditch effort. */ + wstr = (wchar_t *) realloc (*strptr, + ((strsize + 1) + * sizeof (wchar_t))); + if (wstr == NULL) + { + /* C or lc can't have `a' flag, only `m' flag. */ + done = EOF; + goto errout; + } + else + { + *strptr = (char *) wstr; + wstr += strsize; + ++strsize; + } + } + else + { + *strptr = (char *) wstr; + wstr += strsize; + strsize = newsize; + } + } + + while (1) + { + size_t n; + + n = __mbrtowc (!(flags & SUPPRESS) ? wstr : NULL, + buf, 1, &cstate); + + if (n == (size_t) -2) + { + /* Possibly correct character, just not enough + input. */ + if (__glibc_unlikely (inchar () == EOF)) + encode_error (); + + buf[0] = c; + continue; + } + + if (__glibc_unlikely (n != 1)) + encode_error (); + + /* We have a match. */ + break; + } + + /* Advance the result pointer. */ + ++wstr; + } + while (--width > 0 && inchar () != EOF); + } +#endif + + if (!(flags & SUPPRESS)) + { + if ((flags & MALLOC) && wstr - (wchar_t *) *strptr != strsize) + { + wchar_t *cp = (wchar_t *) realloc (*strptr, + ((wstr + - (wchar_t *) *strptr) + * sizeof (wchar_t))); + if (cp != NULL) + *strptr = (char *) cp; + } + strptr = NULL; + + ++done; + } + + break; + + case L_('s'): /* Read a string. */ + if (!(flags & LONG)) + { + STRING_ARG (str, char, 100); + + c = inchar (); + if (__glibc_unlikely (c == EOF)) + input_error (); + +#ifdef COMPILE_WSCANF + memset (&state, '\0', sizeof (state)); +#endif + + do + { + if (ISSPACE (c)) + { + ungetc_not_eof (c, s); + break; + } + +#ifdef COMPILE_WSCANF + /* This is quite complicated. We have to convert the + wide characters into multibyte characters and then + store them. */ + { + size_t n; + + if (!(flags & SUPPRESS) && (flags & MALLOC) + && *strptr + strsize - str <= MB_LEN_MAX) + { + /* We have to enlarge the buffer if the `a' or `m' + flag was given. */ + size_t strleng = str - *strptr; + char *newstr; + + newstr = (char *) realloc (*strptr, strsize * 2); + if (newstr == NULL) + { + /* Can't allocate that much. Last-ditch + effort. */ + newstr = (char *) realloc (*strptr, + strleng + MB_LEN_MAX); + if (newstr == NULL) + { + if (flags & POSIX_MALLOC) + { + done = EOF; + goto errout; + } + /* We lose. Oh well. Terminate the + string and stop converting, + so at least we don't skip any input. */ + ((char *) (*strptr))[strleng] = '\0'; + strptr = NULL; + ++done; + conv_error (); + } + else + { + *strptr = newstr; + str = newstr + strleng; + strsize = strleng + MB_LEN_MAX; + } + } + else + { + *strptr = newstr; + str = newstr + strleng; + strsize *= 2; + } + } + + n = __wcrtomb (!(flags & SUPPRESS) ? str : NULL, c, + &state); + if (__glibc_unlikely (n == (size_t) -1)) + encode_error (); + + assert (n <= MB_LEN_MAX); + str += n; + } +#else + /* This is easy. */ + if (!(flags & SUPPRESS)) + { + *str++ = c; + if ((flags & MALLOC) + && (char *) str == *strptr + strsize) + { + /* Enlarge the buffer. */ + str = (char *) realloc (*strptr, 2 * strsize); + if (str == NULL) + { + /* Can't allocate that much. Last-ditch + effort. */ + str = (char *) realloc (*strptr, strsize + 1); + if (str == NULL) + { + if (flags & POSIX_MALLOC) + { + done = EOF; + goto errout; + } + /* We lose. Oh well. Terminate the + string and stop converting, + so at least we don't skip any input. */ + ((char *) (*strptr))[strsize - 1] = '\0'; + strptr = NULL; + ++done; + conv_error (); + } + else + { + *strptr = (char *) str; + str += strsize; + ++strsize; + } + } + else + { + *strptr = (char *) str; + str += strsize; + strsize *= 2; + } + } + } +#endif + } + while ((width <= 0 || --width > 0) && inchar () != EOF); + + if (!(flags & SUPPRESS)) + { +#ifdef COMPILE_WSCANF + /* We have to emit the code to get into the initial + state. */ + char buf[MB_LEN_MAX]; + size_t n = __wcrtomb (buf, L'\0', &state); + if (n > 0 && (flags & MALLOC) + && str + n >= *strptr + strsize) + { + /* Enlarge the buffer. */ + size_t strleng = str - *strptr; + char *newstr; + + newstr = (char *) realloc (*strptr, strleng + n + 1); + if (newstr == NULL) + { + if (flags & POSIX_MALLOC) + { + done = EOF; + goto errout; + } + /* We lose. Oh well. Terminate the string + and stop converting, so at least we don't + skip any input. */ + ((char *) (*strptr))[strleng] = '\0'; + strptr = NULL; + ++done; + conv_error (); + } + else + { + *strptr = newstr; + str = newstr + strleng; + strsize = strleng + n + 1; + } + } + + str = __mempcpy (str, buf, n); +#endif + *str++ = '\0'; + + if ((flags & MALLOC) && str - *strptr != strsize) + { + char *cp = (char *) realloc (*strptr, str - *strptr); + if (cp != NULL) + *strptr = cp; + } + strptr = NULL; + + ++done; + } + break; + } + /* FALLTHROUGH */ + + case L_('S'): + { +#ifndef COMPILE_WSCANF + mbstate_t cstate; +#endif + + /* Wide character string. */ + STRING_ARG (wstr, wchar_t, 100); + + c = inchar (); + if (__builtin_expect (c == EOF, 0)) + input_error (); + +#ifndef COMPILE_WSCANF + memset (&cstate, '\0', sizeof (cstate)); +#endif + + do + { + if (ISSPACE (c)) + { + ungetc_not_eof (c, s); + break; + } + +#ifdef COMPILE_WSCANF + /* This is easy. */ + if (!(flags & SUPPRESS)) + { + *wstr++ = c; + if ((flags & MALLOC) + && wstr == (wchar_t *) *strptr + strsize) + { + /* Enlarge the buffer. */ + wstr = (wchar_t *) realloc (*strptr, + (2 * strsize) + * sizeof (wchar_t)); + if (wstr == NULL) + { + /* Can't allocate that much. Last-ditch + effort. */ + wstr = (wchar_t *) realloc (*strptr, + (strsize + 1) + * sizeof (wchar_t)); + if (wstr == NULL) + { + if (flags & POSIX_MALLOC) + { + done = EOF; + goto errout; + } + /* We lose. Oh well. Terminate the string + and stop converting, so at least we don't + skip any input. */ + ((wchar_t *) (*strptr))[strsize - 1] = L'\0'; + strptr = NULL; + ++done; + conv_error (); + } + else + { + *strptr = (char *) wstr; + wstr += strsize; + ++strsize; + } + } + else + { + *strptr = (char *) wstr; + wstr += strsize; + strsize *= 2; + } + } + } +#else + { + char buf[1]; + + buf[0] = c; + + while (1) + { + size_t n; + + n = __mbrtowc (!(flags & SUPPRESS) ? wstr : NULL, + buf, 1, &cstate); + + if (n == (size_t) -2) + { + /* Possibly correct character, just not enough + input. */ + if (__glibc_unlikely (inchar () == EOF)) + encode_error (); + + buf[0] = c; + continue; + } + + if (__glibc_unlikely (n != 1)) + encode_error (); + + /* We have a match. */ + ++wstr; + break; + } + + if (!(flags & SUPPRESS) && (flags & MALLOC) + && wstr == (wchar_t *) *strptr + strsize) + { + /* Enlarge the buffer. */ + wstr = (wchar_t *) realloc (*strptr, + (2 * strsize + * sizeof (wchar_t))); + if (wstr == NULL) + { + /* Can't allocate that much. Last-ditch effort. */ + wstr = (wchar_t *) realloc (*strptr, + ((strsize + 1) + * sizeof (wchar_t))); + if (wstr == NULL) + { + if (flags & POSIX_MALLOC) + { + done = EOF; + goto errout; + } + /* We lose. Oh well. Terminate the + string and stop converting, so at + least we don't skip any input. */ + ((wchar_t *) (*strptr))[strsize - 1] = L'\0'; + strptr = NULL; + ++done; + conv_error (); + } + else + { + *strptr = (char *) wstr; + wstr += strsize; + ++strsize; + } + } + else + { + *strptr = (char *) wstr; + wstr += strsize; + strsize *= 2; + } + } + } +#endif + } + while ((width <= 0 || --width > 0) && inchar () != EOF); + + if (!(flags & SUPPRESS)) + { + *wstr++ = L'\0'; + + if ((flags & MALLOC) && wstr - (wchar_t *) *strptr != strsize) + { + wchar_t *cp = (wchar_t *) realloc (*strptr, + ((wstr + - (wchar_t *) *strptr) + * sizeof(wchar_t))); + if (cp != NULL) + *strptr = (char *) cp; + } + strptr = NULL; + + ++done; + } + } + break; + + case L_('x'): /* Hexadecimal integer. */ + case L_('X'): /* Ditto. */ + base = 16; + goto number; + + case L_('o'): /* Octal integer. */ + base = 8; + goto number; + + case L_('u'): /* Unsigned decimal integer. */ + base = 10; + goto number; + + case L_('d'): /* Signed decimal integer. */ + base = 10; + flags |= NUMBER_SIGNED; + goto number; + + case L_('i'): /* Generic number. */ + base = 0; + flags |= NUMBER_SIGNED; + + number: + c = inchar (); + if (__glibc_unlikely (c == EOF)) + input_error (); + + /* Check for a sign. */ + if (c == L_('-') || c == L_('+')) + { + char_buffer_add (&charbuf, c); + if (width > 0) + --width; + c = inchar (); + } + + /* Look for a leading indication of base. */ + if (width != 0 && c == L_('0')) + { + if (width > 0) + --width; + + char_buffer_add (&charbuf, c); + c = inchar (); + + if (width != 0 && TOLOWER (c) == L_('x')) + { + if (base == 0) + base = 16; + if (base == 16) + { + if (width > 0) + --width; + c = inchar (); + } + } + else if (base == 0) + base = 8; + } + + if (base == 0) + base = 10; + + if (base == 10 && __builtin_expect ((flags & I18N) != 0, 0)) + { + int from_level; + int to_level; + int level; +#ifdef COMPILE_WSCANF + const wchar_t *wcdigits[10]; + const wchar_t *wcdigits_extended[10]; +#else + const char *mbdigits[10]; + const char *mbdigits_extended[10]; +#endif + /* "to_inpunct" is a map from ASCII digits to their + equivalent in locale. This is defined for locales + which use an extra digits set. */ + wctrans_t map = __wctrans ("to_inpunct"); + int n; + + from_level = 0; +#ifdef COMPILE_WSCANF + to_level = _NL_CURRENT_WORD (LC_CTYPE, + _NL_CTYPE_INDIGITS_WC_LEN) - 1; +#else + to_level = (uint32_t) curctype->values[_NL_ITEM_INDEX (_NL_CTYPE_INDIGITS_MB_LEN)].word - 1; +#endif + + /* Get the alternative digit forms if there are any. */ + if (__glibc_unlikely (map != NULL)) + { + /* Adding new level for extra digits set in locale file. */ + ++to_level; + + for (n = 0; n < 10; ++n) + { +#ifdef COMPILE_WSCANF + wcdigits[n] = (const wchar_t *) + _NL_CURRENT (LC_CTYPE, _NL_CTYPE_INDIGITS0_WC + n); + + wchar_t *wc_extended = (wchar_t *) + alloca ((to_level + 2) * sizeof (wchar_t)); + __wmemcpy (wc_extended, wcdigits[n], to_level); + wc_extended[to_level] = __towctrans (L'0' + n, map); + wc_extended[to_level + 1] = '\0'; + wcdigits_extended[n] = wc_extended; +#else + mbdigits[n] + = curctype->values[_NL_CTYPE_INDIGITS0_MB + n].string; + + /* Get the equivalent wide char in map. */ + wint_t extra_wcdigit = __towctrans (L'0' + n, map); + + /* Convert it to multibyte representation. */ + mbstate_t state; + memset (&state, '\0', sizeof (state)); + + char extra_mbdigit[MB_LEN_MAX]; + size_t mblen + = __wcrtomb (extra_mbdigit, extra_wcdigit, &state); + + if (mblen == (size_t) -1) + { + /* Ignore this new level. */ + map = NULL; + break; + } + + /* Calculate the length of mbdigits[n]. */ + const char *last_char = mbdigits[n]; + for (level = 0; level < to_level; ++level) + last_char = strchr (last_char, '\0') + 1; + + size_t mbdigits_len = last_char - mbdigits[n]; + + /* Allocate memory for extended multibyte digit. */ + char *mb_extended; + mb_extended = (char *) alloca (mbdigits_len + mblen + 1); + + /* And get the mbdigits + extra_digit string. */ + *(char *) __mempcpy (__mempcpy (mb_extended, mbdigits[n], + mbdigits_len), + extra_mbdigit, mblen) = '\0'; + mbdigits_extended[n] = mb_extended; +#endif + } + } + + /* Read the number into workspace. */ + while (c != EOF && width != 0) + { + /* In this round we get the pointer to the digit strings + and also perform the first round of comparisons. */ + for (n = 0; n < 10; ++n) + { + /* Get the string for the digits with value N. */ +#ifdef COMPILE_WSCANF + + /* wcdigits_extended[] is fully set in the loop + above, but the test for "map != NULL" is done + inside the loop here and outside the loop there. */ + DIAG_PUSH_NEEDS_COMMENT; + DIAG_IGNORE_NEEDS_COMMENT (4.7, "-Wmaybe-uninitialized"); + + if (__glibc_unlikely (map != NULL)) + wcdigits[n] = wcdigits_extended[n]; + else + wcdigits[n] = (const wchar_t *) + _NL_CURRENT (LC_CTYPE, _NL_CTYPE_INDIGITS0_WC + n); + wcdigits[n] += from_level; + + DIAG_POP_NEEDS_COMMENT; + + if (c == (wint_t) *wcdigits[n]) + { + to_level = from_level; + break; + } + + /* Advance the pointer to the next string. */ + ++wcdigits[n]; +#else + const char *cmpp; + int avail = width > 0 ? width : INT_MAX; + + if (__glibc_unlikely (map != NULL)) + mbdigits[n] = mbdigits_extended[n]; + else + mbdigits[n] + = curctype->values[_NL_CTYPE_INDIGITS0_MB + n].string; + + for (level = 0; level < from_level; level++) + mbdigits[n] = strchr (mbdigits[n], '\0') + 1; + + cmpp = mbdigits[n]; + while ((unsigned char) *cmpp == c && avail >= 0) + { + if (*++cmpp == '\0') + break; + else + { + if (avail == 0 || inchar () == EOF) + break; + --avail; + } + } + + if (*cmpp == '\0') + { + if (width > 0) + width = avail; + to_level = from_level; + break; + } + + /* We are pushing all read characters back. */ + if (cmpp > mbdigits[n]) + { + ungetc (c, s); + while (--cmpp > mbdigits[n]) + ungetc_not_eof ((unsigned char) *cmpp, s); + c = (unsigned char) *cmpp; + } + + /* Advance the pointer to the next string. */ + mbdigits[n] = strchr (mbdigits[n], '\0') + 1; +#endif + } + + if (n == 10) + { + /* Have not yet found the digit. */ + for (level = from_level + 1; level <= to_level; ++level) + { + /* Search all ten digits of this level. */ + for (n = 0; n < 10; ++n) + { +#ifdef COMPILE_WSCANF + if (c == (wint_t) *wcdigits[n]) + break; + + /* Advance the pointer to the next string. */ + ++wcdigits[n]; +#else + const char *cmpp; + int avail = width > 0 ? width : INT_MAX; + + cmpp = mbdigits[n]; + while ((unsigned char) *cmpp == c && avail >= 0) + { + if (*++cmpp == '\0') + break; + else + { + if (avail == 0 || inchar () == EOF) + break; + --avail; + } + } + + if (*cmpp == '\0') + { + if (width > 0) + width = avail; + break; + } + + /* We are pushing all read characters back. */ + if (cmpp > mbdigits[n]) + { + ungetc (c, s); + while (--cmpp > mbdigits[n]) + ungetc_not_eof ((unsigned char) *cmpp, s); + c = (unsigned char) *cmpp; + } + + /* Advance the pointer to the next string. */ + mbdigits[n] = strchr (mbdigits[n], '\0') + 1; +#endif + } + + if (n < 10) + { + /* Found it. */ + from_level = level; + to_level = level; + break; + } + } + } + + if (n < 10) + c = L_('0') + n; + else if (flags & GROUP) + { + /* Try matching against the thousands separator. */ +#ifdef COMPILE_WSCANF + if (c != thousands) + break; +#else + const char *cmpp = thousands; + int avail = width > 0 ? width : INT_MAX; + + while ((unsigned char) *cmpp == c && avail >= 0) + { + char_buffer_add (&charbuf, c); + if (*++cmpp == '\0') + break; + else + { + if (avail == 0 || inchar () == EOF) + break; + --avail; + } + } + + if (char_buffer_error (&charbuf)) + { + __set_errno (ENOMEM); + done = EOF; + goto errout; + } + + if (*cmpp != '\0') + { + /* We are pushing all read characters back. */ + if (cmpp > thousands) + { + charbuf.current -= cmpp - thousands; + ungetc (c, s); + while (--cmpp > thousands) + ungetc_not_eof ((unsigned char) *cmpp, s); + c = (unsigned char) *cmpp; + } + break; + } + + if (width > 0) + width = avail; + + /* The last thousands character will be added back by + the char_buffer_add below. */ + --charbuf.current; +#endif + } + else + break; + + char_buffer_add (&charbuf, c); + if (width > 0) + --width; + + c = inchar (); + } + } + else + /* Read the number into workspace. */ + while (c != EOF && width != 0) + { + if (base == 16) + { + if (!ISXDIGIT (c)) + break; + } + else if (!ISDIGIT (c) || (int) (c - L_('0')) >= base) + { + if (base == 10 && (flags & GROUP)) + { + /* Try matching against the thousands separator. */ +#ifdef COMPILE_WSCANF + if (c != thousands) + break; +#else + const char *cmpp = thousands; + int avail = width > 0 ? width : INT_MAX; + + while ((unsigned char) *cmpp == c && avail >= 0) + { + char_buffer_add (&charbuf, c); + if (*++cmpp == '\0') + break; + else + { + if (avail == 0 || inchar () == EOF) + break; + --avail; + } + } + + if (char_buffer_error (&charbuf)) + { + __set_errno (ENOMEM); + done = EOF; + goto errout; + } + + if (*cmpp != '\0') + { + /* We are pushing all read characters back. */ + if (cmpp > thousands) + { + charbuf.current -= cmpp - thousands; + ungetc (c, s); + while (--cmpp > thousands) + ungetc_not_eof ((unsigned char) *cmpp, s); + c = (unsigned char) *cmpp; + } + break; + } + + if (width > 0) + width = avail; + + /* The last thousands character will be added back by + the char_buffer_add below. */ + --charbuf.current; +#endif + } + else + break; + } + char_buffer_add (&charbuf, c); + if (width > 0) + --width; + + c = inchar (); + } + + if (char_buffer_error (&charbuf)) + { + __set_errno (ENOMEM); + done = EOF; + goto errout; + } + + if (char_buffer_size (&charbuf) == 0 + || (char_buffer_size (&charbuf) == 1 + && (char_buffer_start (&charbuf)[0] == L_('+') + || char_buffer_start (&charbuf)[0] == L_('-')))) + { + /* There was no number. If we are supposed to read a pointer + we must recognize "(nil)" as well. */ + if (__builtin_expect (char_buffer_size (&charbuf) == 0 + && (flags & READ_POINTER) + && (width < 0 || width >= 5) + && c == '(' + && TOLOWER (inchar ()) == L_('n') + && TOLOWER (inchar ()) == L_('i') + && TOLOWER (inchar ()) == L_('l') + && inchar () == L_(')'), 1)) + /* We must produce the value of a NULL pointer. A single + '0' digit is enough. */ + char_buffer_add (&charbuf, L_('0')); + else + { + /* The last read character is not part of the number + anymore. */ + ungetc (c, s); + + conv_error (); + } + } + else + /* The just read character is not part of the number anymore. */ + ungetc (c, s); + + /* Convert the number. */ + char_buffer_add (&charbuf, L_('\0')); + if (char_buffer_error (&charbuf)) + { + __set_errno (ENOMEM); + done = EOF; + goto errout; + } + if (need_longlong && (flags & LONGDBL)) + { + if (flags & NUMBER_SIGNED) + num.q = __strtoll_internal + (char_buffer_start (&charbuf), &tw, base, flags & GROUP); + else + num.uq = __strtoull_internal + (char_buffer_start (&charbuf), &tw, base, flags & GROUP); + } + else + { + if (flags & NUMBER_SIGNED) + num.l = __strtol_internal + (char_buffer_start (&charbuf), &tw, base, flags & GROUP); + else + num.ul = __strtoul_internal + (char_buffer_start (&charbuf), &tw, base, flags & GROUP); + } + if (__glibc_unlikely (char_buffer_start (&charbuf) == tw)) + conv_error (); + + if (!(flags & SUPPRESS)) + { + if (flags & NUMBER_SIGNED) + { + if (need_longlong && (flags & LONGDBL)) + *ARG (LONGLONG int *) = num.q; + else if (need_long && (flags & LONG)) + *ARG (long int *) = num.l; + else if (flags & SHORT) + *ARG (short int *) = (short int) num.l; + else if (!(flags & CHAR)) + *ARG (int *) = (int) num.l; + else + *ARG (signed char *) = (signed char) num.ul; + } + else + { + if (need_longlong && (flags & LONGDBL)) + *ARG (unsigned LONGLONG int *) = num.uq; + else if (need_long && (flags & LONG)) + *ARG (unsigned long int *) = num.ul; + else if (flags & SHORT) + *ARG (unsigned short int *) + = (unsigned short int) num.ul; + else if (!(flags & CHAR)) + *ARG (unsigned int *) = (unsigned int) num.ul; + else + *ARG (unsigned char *) = (unsigned char) num.ul; + } + ++done; + } + break; + + case L_('e'): /* Floating-point numbers. */ + case L_('E'): + case L_('f'): + case L_('F'): + case L_('g'): + case L_('G'): + case L_('a'): + case L_('A'): + c = inchar (); + if (width > 0) + --width; + if (__glibc_unlikely (c == EOF)) + input_error (); + + got_digit = got_dot = got_e = 0; + + /* Check for a sign. */ + if (c == L_('-') || c == L_('+')) + { + negative = c == L_('-'); + if (__glibc_unlikely (width == 0 || inchar () == EOF)) + /* EOF is only an input error before we read any chars. */ + conv_error (); + if (width > 0) + --width; + } + else + negative = 0; + + /* Take care for the special arguments "nan" and "inf". */ + if (TOLOWER (c) == L_('n')) + { + /* Maybe "nan". */ + char_buffer_add (&charbuf, c); + if (__builtin_expect (width == 0 + || inchar () == EOF + || TOLOWER (c) != L_('a'), 0)) + conv_error (); + if (width > 0) + --width; + char_buffer_add (&charbuf, c); + if (__builtin_expect (width == 0 + || inchar () == EOF + || TOLOWER (c) != L_('n'), 0)) + conv_error (); + if (width > 0) + --width; + char_buffer_add (&charbuf, c); + /* It is "nan". */ + goto scan_float; + } + else if (TOLOWER (c) == L_('i')) + { + /* Maybe "inf" or "infinity". */ + char_buffer_add (&charbuf, c); + if (__builtin_expect (width == 0 + || inchar () == EOF + || TOLOWER (c) != L_('n'), 0)) + conv_error (); + if (width > 0) + --width; + char_buffer_add (&charbuf, c); + if (__builtin_expect (width == 0 + || inchar () == EOF + || TOLOWER (c) != L_('f'), 0)) + conv_error (); + if (width > 0) + --width; + char_buffer_add (&charbuf, c); + /* It is as least "inf". */ + if (width != 0 && inchar () != EOF) + { + if (TOLOWER (c) == L_('i')) + { + if (width > 0) + --width; + /* Now we have to read the rest as well. */ + char_buffer_add (&charbuf, c); + if (__builtin_expect (width == 0 + || inchar () == EOF + || TOLOWER (c) != L_('n'), 0)) + conv_error (); + if (width > 0) + --width; + char_buffer_add (&charbuf, c); + if (__builtin_expect (width == 0 + || inchar () == EOF + || TOLOWER (c) != L_('i'), 0)) + conv_error (); + if (width > 0) + --width; + char_buffer_add (&charbuf, c); + if (__builtin_expect (width == 0 + || inchar () == EOF + || TOLOWER (c) != L_('t'), 0)) + conv_error (); + if (width > 0) + --width; + char_buffer_add (&charbuf, c); + if (__builtin_expect (width == 0 + || inchar () == EOF + || TOLOWER (c) != L_('y'), 0)) + conv_error (); + if (width > 0) + --width; + char_buffer_add (&charbuf, c); + } + else + /* Never mind. */ + ungetc (c, s); + } + goto scan_float; + } + + exp_char = L_('e'); + if (width != 0 && c == L_('0')) + { + char_buffer_add (&charbuf, c); + c = inchar (); + if (width > 0) + --width; + if (width != 0 && TOLOWER (c) == L_('x')) + { + /* It is a number in hexadecimal format. */ + char_buffer_add (&charbuf, c); + + flags |= HEXA_FLOAT; + exp_char = L_('p'); + + /* Grouping is not allowed. */ + flags &= ~GROUP; + c = inchar (); + if (width > 0) + --width; + } + else + got_digit = 1; + } + + while (1) + { + if (char_buffer_error (&charbuf)) + { + __set_errno (ENOMEM); + done = EOF; + goto errout; + } + if (ISDIGIT (c)) + { + char_buffer_add (&charbuf, c); + got_digit = 1; + } + else if (!got_e && (flags & HEXA_FLOAT) && ISXDIGIT (c)) + { + char_buffer_add (&charbuf, c); + got_digit = 1; + } + else if (got_e && charbuf.current[-1] == exp_char + && (c == L_('-') || c == L_('+'))) + char_buffer_add (&charbuf, c); + else if (got_digit && !got_e + && (CHAR_T) TOLOWER (c) == exp_char) + { + char_buffer_add (&charbuf, exp_char); + got_e = got_dot = 1; + } + else + { +#ifdef COMPILE_WSCANF + if (! got_dot && c == decimal) + { + char_buffer_add (&charbuf, c); + got_dot = 1; + } + else if ((flags & GROUP) != 0 && ! got_dot && c == thousands) + char_buffer_add (&charbuf, c); + else + { + /* The last read character is not part of the number + anymore. */ + ungetc (c, s); + break; + } +#else + const char *cmpp = decimal; + int avail = width > 0 ? width : INT_MAX; + + if (! got_dot) + { + while ((unsigned char) *cmpp == c && avail >= 0) + if (*++cmpp == '\0') + break; + else + { + if (avail == 0 || inchar () == EOF) + break; + --avail; + } + } + + if (*cmpp == '\0') + { + /* Add all the characters. */ + for (cmpp = decimal; *cmpp != '\0'; ++cmpp) + char_buffer_add (&charbuf, (unsigned char) *cmpp); + if (width > 0) + width = avail; + got_dot = 1; + } + else + { + /* Figure out whether it is a thousands separator. + There is one problem: we possibly read more than + one character. We cannot push them back but since + we know that parts of the `decimal' string matched, + we can compare against it. */ + const char *cmp2p = thousands; + + if ((flags & GROUP) != 0 && ! got_dot) + { + while (cmp2p - thousands < cmpp - decimal + && *cmp2p == decimal[cmp2p - thousands]) + ++cmp2p; + if (cmp2p - thousands == cmpp - decimal) + { + while ((unsigned char) *cmp2p == c && avail >= 0) + if (*++cmp2p == '\0') + break; + else + { + if (avail == 0 || inchar () == EOF) + break; + --avail; + } + } + } + + if (cmp2p != NULL && *cmp2p == '\0') + { + /* Add all the characters. */ + for (cmpp = thousands; *cmpp != '\0'; ++cmpp) + char_buffer_add (&charbuf, (unsigned char) *cmpp); + if (width > 0) + width = avail; + } + else + { + /* The last read character is not part of the number + anymore. */ + ungetc (c, s); + break; + } + } +#endif + } + + if (width == 0 || inchar () == EOF) + break; + + if (width > 0) + --width; + } + + if (char_buffer_error (&charbuf)) + { + __set_errno (ENOMEM); + done = EOF; + goto errout; + } + + wctrans_t map; + if (__builtin_expect ((flags & I18N) != 0, 0) + /* Hexadecimal floats make no sense, fixing localized + digits with ASCII letters. */ + && !(flags & HEXA_FLOAT) + /* Minimum requirement. */ + && (char_buffer_size (&charbuf) == 0 || got_dot) + && (map = __wctrans ("to_inpunct")) != NULL) + { + /* Reget the first character. */ + inchar (); + + /* Localized digits, decimal points, and thousands + separator. */ + wint_t wcdigits[12]; + + /* First get decimal equivalent to check if we read it + or not. */ + wcdigits[11] = __towctrans (L'.', map); + + /* If we have not read any character or have just read + locale decimal point which matches the decimal point + for localized FP numbers, then we may have localized + digits. Note, we test GOT_DOT above. */ +#ifdef COMPILE_WSCANF + if (char_buffer_size (&charbuf) == 0 + || (char_buffer_size (&charbuf) == 1 + && wcdigits[11] == decimal)) +#else + char mbdigits[12][MB_LEN_MAX + 1]; + + mbstate_t state; + memset (&state, '\0', sizeof (state)); + + bool match_so_far = char_buffer_size (&charbuf) == 0; + size_t mblen = __wcrtomb (mbdigits[11], wcdigits[11], &state); + if (mblen != (size_t) -1) + { + mbdigits[11][mblen] = '\0'; + match_so_far |= + (char_buffer_size (&charbuf) == strlen (decimal) + && strcmp (decimal, mbdigits[11]) == 0); + } + else + { + size_t decimal_len = strlen (decimal); + /* This should always be the case but the data comes + from a file. */ + if (decimal_len <= MB_LEN_MAX) + { + match_so_far |= char_buffer_size (&charbuf) == decimal_len; + memcpy (mbdigits[11], decimal, decimal_len + 1); + } + else + match_so_far = false; + } + + if (match_so_far) +#endif + { + bool have_locthousands = (flags & GROUP) != 0; + + /* Now get the digits and the thousands-sep equivalents. */ + for (int n = 0; n < 11; ++n) + { + if (n < 10) + wcdigits[n] = __towctrans (L'0' + n, map); + else if (n == 10) + { + wcdigits[10] = __towctrans (L',', map); + have_locthousands &= wcdigits[10] != L'\0'; + } + +#ifndef COMPILE_WSCANF + memset (&state, '\0', sizeof (state)); + + size_t mblen = __wcrtomb (mbdigits[n], wcdigits[n], + &state); + if (mblen == (size_t) -1) + { + if (n == 10) + { + if (have_locthousands) + { + size_t thousands_len = strlen (thousands); + if (thousands_len <= MB_LEN_MAX) + memcpy (mbdigits[10], thousands, + thousands_len + 1); + else + have_locthousands = false; + } + } + else + /* Ignore checking against localized digits. */ + goto no_i18nflt; + } + else + mbdigits[n][mblen] = '\0'; +#endif + } + + /* Start checking against localized digits, if + conversion is done correctly. */ + while (1) + { + if (char_buffer_error (&charbuf)) + { + __set_errno (ENOMEM); + done = EOF; + goto errout; + } + if (got_e && charbuf.current[-1] == exp_char + && (c == L_('-') || c == L_('+'))) + char_buffer_add (&charbuf, c); + else if (char_buffer_size (&charbuf) > 0 && !got_e + && (CHAR_T) TOLOWER (c) == exp_char) + { + char_buffer_add (&charbuf, exp_char); + got_e = got_dot = 1; + } + else + { + /* Check against localized digits, decimal point, + and thousands separator. */ + int n; + for (n = 0; n < 12; ++n) + { +#ifdef COMPILE_WSCANF + if (c == wcdigits[n]) + { + if (n < 10) + char_buffer_add (&charbuf, L_('0') + n); + else if (n == 11 && !got_dot) + { + char_buffer_add (&charbuf, decimal); + got_dot = 1; + } + else if (n == 10 && have_locthousands + && ! got_dot) + char_buffer_add (&charbuf, thousands); + else + /* The last read character is not part + of the number anymore. */ + n = 12; + + break; + } +#else + const char *cmpp = mbdigits[n]; + int avail = width > 0 ? width : INT_MAX; + + while ((unsigned char) *cmpp == c && avail >= 0) + if (*++cmpp == '\0') + break; + else + { + if (avail == 0 || inchar () == EOF) + break; + --avail; + } + if (*cmpp == '\0') + { + if (width > 0) + width = avail; + + if (n < 10) + char_buffer_add (&charbuf, L_('0') + n); + else if (n == 11 && !got_dot) + { + /* Add all the characters. */ + for (cmpp = decimal; *cmpp != '\0'; + ++cmpp) + char_buffer_add (&charbuf, + (unsigned char) *cmpp); + + got_dot = 1; + } + else if (n == 10 && (flags & GROUP) != 0 + && ! got_dot) + { + /* Add all the characters. */ + for (cmpp = thousands; *cmpp != '\0'; + ++cmpp) + char_buffer_add (&charbuf, + (unsigned char) *cmpp); + } + else + /* The last read character is not part + of the number anymore. */ + n = 12; + + break; + } + + /* We are pushing all read characters back. */ + if (cmpp > mbdigits[n]) + { + ungetc (c, s); + while (--cmpp > mbdigits[n]) + ungetc_not_eof ((unsigned char) *cmpp, s); + c = (unsigned char) *cmpp; + } +#endif + } + + if (n >= 12) + { + /* The last read character is not part + of the number anymore. */ + ungetc (c, s); + break; + } + } + + if (width == 0 || inchar () == EOF) + break; + + if (width > 0) + --width; + } + } + +#ifndef COMPILE_WSCANF + no_i18nflt: + ; +#endif + } + + if (char_buffer_error (&charbuf)) + { + __set_errno (ENOMEM); + done = EOF; + goto errout; + } + + /* Have we read any character? If we try to read a number + in hexadecimal notation and we have read only the `0x' + prefix this is an error. */ + if (__glibc_unlikely (char_buffer_size (&charbuf) == 0 + || ((flags & HEXA_FLOAT) + && char_buffer_size (&charbuf) == 2))) + conv_error (); + + scan_float: + /* Convert the number. */ + char_buffer_add (&charbuf, L_('\0')); + if (char_buffer_error (&charbuf)) + { + __set_errno (ENOMEM); + done = EOF; + goto errout; + } + if ((flags & LONGDBL) && !__ldbl_is_dbl) + { + long double d = __strtold_internal + (char_buffer_start (&charbuf), &tw, flags & GROUP); + if (!(flags & SUPPRESS) && tw != char_buffer_start (&charbuf)) + *ARG (long double *) = negative ? -d : d; + } + else if (flags & (LONG | LONGDBL)) + { + double d = __strtod_internal + (char_buffer_start (&charbuf), &tw, flags & GROUP); + if (!(flags & SUPPRESS) && tw != char_buffer_start (&charbuf)) + *ARG (double *) = negative ? -d : d; + } + else + { + float d = __strtof_internal + (char_buffer_start (&charbuf), &tw, flags & GROUP); + if (!(flags & SUPPRESS) && tw != char_buffer_start (&charbuf)) + *ARG (float *) = negative ? -d : d; + } + + if (__glibc_unlikely (tw == char_buffer_start (&charbuf))) + conv_error (); + + if (!(flags & SUPPRESS)) + ++done; + break; + + case L_('['): /* Character class. */ + if (flags & LONG) + STRING_ARG (wstr, wchar_t, 100); + else + STRING_ARG (str, char, 100); + + if (*f == L_('^')) + { + ++f; + not_in = 1; + } + else + not_in = 0; + + if (width < 0) + /* There is no width given so there is also no limit on the + number of characters we read. Therefore we set width to + a very high value to make the algorithm easier. */ + width = INT_MAX; + +#ifdef COMPILE_WSCANF + /* Find the beginning and the end of the scanlist. We are not + creating a lookup table since it would have to be too large. + Instead we search each time through the string. This is not + a constant lookup time but who uses this feature deserves to + be punished. */ + tw = (wchar_t *) f; /* Marks the beginning. */ + + if (*f == L']') + ++f; + + while ((fc = *f++) != L'\0' && fc != L']'); + + if (__glibc_unlikely (fc == L'\0')) + conv_error (); + wchar_t *twend = (wchar_t *) f - 1; +#else + /* Fill WP with byte flags indexed by character. + We will use this flag map for matching input characters. */ + if (!scratch_buffer_set_array_size + (&charbuf.scratch, UCHAR_MAX + 1, 1)) + { + done = EOF; + goto errout; + } + memset (charbuf.scratch.data, '\0', UCHAR_MAX + 1); + + fc = *f; + if (fc == ']' || fc == '-') + { + /* If ] or - appears before any char in the set, it is not + the terminator or separator, but the first char in the + set. */ + ((char *)charbuf.scratch.data)[fc] = 1; + ++f; + } + + while ((fc = *f++) != '\0' && fc != ']') + if (fc == '-' && *f != '\0' && *f != ']' + && (unsigned char) f[-2] <= (unsigned char) *f) + { + /* Add all characters from the one before the '-' + up to (but not including) the next format char. */ + for (fc = (unsigned char) f[-2]; fc < (unsigned char) *f; ++fc) + ((char *)charbuf.scratch.data)[fc] = 1; + } + else + /* Add the character to the flag map. */ + ((char *)charbuf.scratch.data)[fc] = 1; + + if (__glibc_unlikely (fc == '\0')) + conv_error(); +#endif + + if (flags & LONG) + { + size_t now = read_in; +#ifdef COMPILE_WSCANF + if (__glibc_unlikely (inchar () == WEOF)) + input_error (); + + do + { + wchar_t *runp; + + /* Test whether it's in the scanlist. */ + runp = tw; + while (runp < twend) + { + if (runp[0] == L'-' && runp[1] != '\0' + && runp + 1 != twend + && runp != tw + && (unsigned int) runp[-1] <= (unsigned int) runp[1]) + { + /* Match against all characters in between the + first and last character of the sequence. */ + wchar_t wc; + + for (wc = runp[-1] + 1; wc <= runp[1]; ++wc) + if ((wint_t) wc == c) + break; + + if (wc <= runp[1] && !not_in) + break; + if (wc <= runp[1] && not_in) + { + /* The current character is not in the + scanset. */ + ungetc (c, s); + goto out; + } + + runp += 2; + } + else + { + if ((wint_t) *runp == c && !not_in) + break; + if ((wint_t) *runp == c && not_in) + { + ungetc (c, s); + goto out; + } + + ++runp; + } + } + + if (runp == twend && !not_in) + { + ungetc (c, s); + goto out; + } + + if (!(flags & SUPPRESS)) + { + *wstr++ = c; + + if ((flags & MALLOC) + && wstr == (wchar_t *) *strptr + strsize) + { + /* Enlarge the buffer. */ + wstr = (wchar_t *) realloc (*strptr, + (2 * strsize) + * sizeof (wchar_t)); + if (wstr == NULL) + { + /* Can't allocate that much. Last-ditch + effort. */ + wstr = (wchar_t *) + realloc (*strptr, (strsize + 1) + * sizeof (wchar_t)); + if (wstr == NULL) + { + if (flags & POSIX_MALLOC) + { + done = EOF; + goto errout; + } + /* We lose. Oh well. Terminate the string + and stop converting, so at least we don't + skip any input. */ + ((wchar_t *) (*strptr))[strsize - 1] = L'\0'; + strptr = NULL; + ++done; + conv_error (); + } + else + { + *strptr = (char *) wstr; + wstr += strsize; + ++strsize; + } + } + else + { + *strptr = (char *) wstr; + wstr += strsize; + strsize *= 2; + } + } + } + } + while (--width > 0 && inchar () != WEOF); + out: +#else + char buf[MB_LEN_MAX]; + size_t cnt = 0; + mbstate_t cstate; + + if (__glibc_unlikely (inchar () == EOF)) + input_error (); + + memset (&cstate, '\0', sizeof (cstate)); + + do + { + if (((char *) charbuf.scratch.data)[c] == not_in) + { + ungetc_not_eof (c, s); + break; + } + + /* This is easy. */ + if (!(flags & SUPPRESS)) + { + size_t n; + + /* Convert it into a wide character. */ + buf[0] = c; + n = __mbrtowc (wstr, buf, 1, &cstate); + + if (n == (size_t) -2) + { + /* Possibly correct character, just not enough + input. */ + ++cnt; + assert (cnt < MB_LEN_MAX); + continue; + } + cnt = 0; + + ++wstr; + if ((flags & MALLOC) + && wstr == (wchar_t *) *strptr + strsize) + { + /* Enlarge the buffer. */ + wstr = (wchar_t *) realloc (*strptr, + (2 * strsize + * sizeof (wchar_t))); + if (wstr == NULL) + { + /* Can't allocate that much. Last-ditch + effort. */ + wstr = (wchar_t *) + realloc (*strptr, ((strsize + 1) + * sizeof (wchar_t))); + if (wstr == NULL) + { + if (flags & POSIX_MALLOC) + { + done = EOF; + goto errout; + } + /* We lose. Oh well. Terminate the + string and stop converting, + so at least we don't skip any input. */ + ((wchar_t *) (*strptr))[strsize - 1] = L'\0'; + strptr = NULL; + ++done; + conv_error (); + } + else + { + *strptr = (char *) wstr; + wstr += strsize; + ++strsize; + } + } + else + { + *strptr = (char *) wstr; + wstr += strsize; + strsize *= 2; + } + } + } + + if (--width <= 0) + break; + } + while (inchar () != EOF); + + if (__glibc_unlikely (cnt != 0)) + /* We stopped in the middle of recognizing another + character. That's a problem. */ + encode_error (); +#endif + + if (__glibc_unlikely (now == read_in)) + /* We haven't succesfully read any character. */ + conv_error (); + + if (!(flags & SUPPRESS)) + { + *wstr++ = L'\0'; + + if ((flags & MALLOC) + && wstr - (wchar_t *) *strptr != strsize) + { + wchar_t *cp = (wchar_t *) + realloc (*strptr, ((wstr - (wchar_t *) *strptr) + * sizeof(wchar_t))); + if (cp != NULL) + *strptr = (char *) cp; + } + strptr = NULL; + + ++done; + } + } + else + { + size_t now = read_in; + + if (__glibc_unlikely (inchar () == EOF)) + input_error (); + +#ifdef COMPILE_WSCANF + + memset (&state, '\0', sizeof (state)); + + do + { + wchar_t *runp; + size_t n; + + /* Test whether it's in the scanlist. */ + runp = tw; + while (runp < twend) + { + if (runp[0] == L'-' && runp[1] != '\0' + && runp + 1 != twend + && runp != tw + && (unsigned int) runp[-1] <= (unsigned int) runp[1]) + { + /* Match against all characters in between the + first and last character of the sequence. */ + wchar_t wc; + + for (wc = runp[-1] + 1; wc <= runp[1]; ++wc) + if ((wint_t) wc == c) + break; + + if (wc <= runp[1] && !not_in) + break; + if (wc <= runp[1] && not_in) + { + /* The current character is not in the + scanset. */ + ungetc (c, s); + goto out2; + } + + runp += 2; + } + else + { + if ((wint_t) *runp == c && !not_in) + break; + if ((wint_t) *runp == c && not_in) + { + ungetc (c, s); + goto out2; + } + + ++runp; + } + } + + if (runp == twend && !not_in) + { + ungetc (c, s); + goto out2; + } + + if (!(flags & SUPPRESS)) + { + if ((flags & MALLOC) + && *strptr + strsize - str <= MB_LEN_MAX) + { + /* Enlarge the buffer. */ + size_t strleng = str - *strptr; + char *newstr; + + newstr = (char *) realloc (*strptr, 2 * strsize); + if (newstr == NULL) + { + /* Can't allocate that much. Last-ditch + effort. */ + newstr = (char *) realloc (*strptr, + strleng + MB_LEN_MAX); + if (newstr == NULL) + { + if (flags & POSIX_MALLOC) + { + done = EOF; + goto errout; + } + /* We lose. Oh well. Terminate the string + and stop converting, so at least we don't + skip any input. */ + ((char *) (*strptr))[strleng] = '\0'; + strptr = NULL; + ++done; + conv_error (); + } + else + { + *strptr = newstr; + str = newstr + strleng; + strsize = strleng + MB_LEN_MAX; + } + } + else + { + *strptr = newstr; + str = newstr + strleng; + strsize *= 2; + } + } + } + + n = __wcrtomb (!(flags & SUPPRESS) ? str : NULL, c, &state); + if (__glibc_unlikely (n == (size_t) -1)) + encode_error (); + + assert (n <= MB_LEN_MAX); + str += n; + } + while (--width > 0 && inchar () != WEOF); + out2: +#else + do + { + if (((char *) charbuf.scratch.data)[c] == not_in) + { + ungetc_not_eof (c, s); + break; + } + + /* This is easy. */ + if (!(flags & SUPPRESS)) + { + *str++ = c; + if ((flags & MALLOC) + && (char *) str == *strptr + strsize) + { + /* Enlarge the buffer. */ + size_t newsize = 2 * strsize; + + allocagain: + str = (char *) realloc (*strptr, newsize); + if (str == NULL) + { + /* Can't allocate that much. Last-ditch + effort. */ + if (newsize > strsize + 1) + { + newsize = strsize + 1; + goto allocagain; + } + if (flags & POSIX_MALLOC) + { + done = EOF; + goto errout; + } + /* We lose. Oh well. Terminate the + string and stop converting, + so at least we don't skip any input. */ + ((char *) (*strptr))[strsize - 1] = '\0'; + strptr = NULL; + ++done; + conv_error (); + } + else + { + *strptr = (char *) str; + str += strsize; + strsize = newsize; + } + } + } + } + while (--width > 0 && inchar () != EOF); +#endif + + if (__glibc_unlikely (now == read_in)) + /* We haven't succesfully read any character. */ + conv_error (); + + if (!(flags & SUPPRESS)) + { +#ifdef COMPILE_WSCANF + /* We have to emit the code to get into the initial + state. */ + char buf[MB_LEN_MAX]; + size_t n = __wcrtomb (buf, L'\0', &state); + if (n > 0 && (flags & MALLOC) + && str + n >= *strptr + strsize) + { + /* Enlarge the buffer. */ + size_t strleng = str - *strptr; + char *newstr; + + newstr = (char *) realloc (*strptr, strleng + n + 1); + if (newstr == NULL) + { + if (flags & POSIX_MALLOC) + { + done = EOF; + goto errout; + } + /* We lose. Oh well. Terminate the string + and stop converting, so at least we don't + skip any input. */ + ((char *) (*strptr))[strleng] = '\0'; + strptr = NULL; + ++done; + conv_error (); + } + else + { + *strptr = newstr; + str = newstr + strleng; + strsize = strleng + n + 1; + } + } + + str = __mempcpy (str, buf, n); +#endif + *str++ = '\0'; + + if ((flags & MALLOC) && str - *strptr != strsize) + { + char *cp = (char *) realloc (*strptr, str - *strptr); + if (cp != NULL) + *strptr = cp; + } + strptr = NULL; + + ++done; + } + } + break; + + case L_('p'): /* Generic pointer. */ + base = 16; + /* A PTR must be the same size as a `long int'. */ + flags &= ~(SHORT|LONGDBL); + if (need_long) + flags |= LONG; + flags |= READ_POINTER; + goto number; + + default: + /* If this is an unknown format character punt. */ + conv_error (); + } + } + + /* The last thing we saw int the format string was a white space. + Consume the last white spaces. */ + if (skip_space) + { + do + c = inchar (); + while (ISSPACE (c)); + ungetc (c, s); + } + + errout: + /* Unlock stream. */ + UNLOCK_STREAM (s); + + scratch_buffer_free (&charbuf.scratch); + if (errp != NULL) + *errp |= errval; + + if (__glibc_unlikely (done == EOF)) + { + if (__glibc_unlikely (ptrs_to_free != NULL)) + { + struct ptrs_to_free *p = ptrs_to_free; + while (p != NULL) + { + for (size_t cnt = 0; cnt < p->count; ++cnt) + { + free (*p->ptrs[cnt]); + *p->ptrs[cnt] = NULL; + } + p = p->next; + ptrs_to_free = p; + } + } + } + else if (__glibc_unlikely (strptr != NULL)) + { + free (*strptr); + *strptr = NULL; + } + return done; +} + +#ifdef COMPILE_WSCANF +int +__vfwscanf (FILE *s, const wchar_t *format, va_list argptr) +{ + return _IO_vfwscanf (s, format, argptr, NULL); +} +ldbl_weak_alias (__vfwscanf, vfwscanf) +#else +int +___vfscanf (FILE *s, const char *format, va_list argptr) +{ + return _IO_vfscanf_internal (s, format, argptr, NULL); +} +ldbl_strong_alias (_IO_vfscanf_internal, _IO_vfscanf) +ldbl_hidden_def (_IO_vfscanf_internal, _IO_vfscanf) +ldbl_strong_alias (___vfscanf, __vfscanf) +ldbl_hidden_def (___vfscanf, __vfscanf) +ldbl_weak_alias (___vfscanf, vfscanf) +#endif diff --git a/REORG.TODO/stdio-common/vfwprintf.c b/REORG.TODO/stdio-common/vfwprintf.c new file mode 100644 index 0000000000..2c3cd06fad --- /dev/null +++ b/REORG.TODO/stdio-common/vfwprintf.c @@ -0,0 +1,3 @@ +#include <wctype.h> +#define COMPILE_WPRINTF 1 +#include "vfprintf.c" diff --git a/REORG.TODO/stdio-common/vfwscanf.c b/REORG.TODO/stdio-common/vfwscanf.c new file mode 100644 index 0000000000..26b1a66608 --- /dev/null +++ b/REORG.TODO/stdio-common/vfwscanf.c @@ -0,0 +1,2 @@ +#define COMPILE_WSCANF 1 +#include "vfscanf.c" diff --git a/REORG.TODO/stdio-common/vprintf.c b/REORG.TODO/stdio-common/vprintf.c new file mode 100644 index 0000000000..c5d8b84ba7 --- /dev/null +++ b/REORG.TODO/stdio-common/vprintf.c @@ -0,0 +1,33 @@ +/* Copyright (C) 1991-2017 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 + <http://www.gnu.org/licenses/>. */ + +#include <stdarg.h> +#undef __OPTIMIZE__ /* Avoid inline `vprintf' function. */ +#include <stdio.h> +#include <libioP.h> + +#undef vprintf + +/* Write formatted output to stdout according to the + format string FORMAT, using the argument list in ARG. */ +int +__vprintf (const char *format, __gnuc_va_list arg) +{ + return vfprintf (stdout, format, arg); +} + +ldbl_strong_alias (__vprintf, vprintf) diff --git a/REORG.TODO/stdio-common/xbug.c b/REORG.TODO/stdio-common/xbug.c new file mode 100644 index 0000000000..06f74aff00 --- /dev/null +++ b/REORG.TODO/stdio-common/xbug.c @@ -0,0 +1,70 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + + +typedef struct _Buffer { + char *buff; + int room, used; +} Buffer; + +void InitBuffer (Buffer *b); +void AppendToBuffer (Buffer *b, const char *str, int len); +void ReadFile (Buffer *buffer, FILE *input); + +#define INIT_BUFFER_SIZE 10000 + +void +InitBuffer (Buffer *b) +{ + b->room = INIT_BUFFER_SIZE; + b->used = 0; + b->buff = (char *)malloc(INIT_BUFFER_SIZE*sizeof(char)); +} + +void +AppendToBuffer (Buffer *b, const char *str, int len) +{ + while (b->used + len > b->room) { + b->buff = (char *)realloc(b->buff, 2*b->room*(sizeof(char))); + b->room *= 2; + } + strncpy(b->buff + b->used, str, len); + b->used += len; +} + +void +ReadFile (Buffer *buffer, FILE *input) +{ + char buf[BUFSIZ + 1]; + int bytes; + + buffer->used = 0; + while (!feof(input) && (bytes = fread(buf, 1, BUFSIZ, input)) > 0) { + AppendToBuffer(buffer, buf, bytes); + } + AppendToBuffer(buffer, "", 1); +} + +int +main(int argc, char *argv[]) +{ + char filename[] = "xbug.c"; + FILE *input; + Buffer buffer; + + InitBuffer(&buffer); + + if (!freopen (filename, "r", stdin)) + fprintf(stderr, "cannot open file\n"); + + unsetenv ("LD_LIBRARY_PATH"); + + if (!(input = popen("/bin/cat", "r"))) + fprintf(stderr, "cannot run \n"); + + ReadFile(&buffer, input); + pclose(input); + + return 0; +} |