2000-07-07 21:06:48 +00:00
|
|
|
#! /bin/sh
|
|
|
|
# Testing of printf.
|
2013-01-02 19:01:50 +00:00
|
|
|
# Copyright (C) 2000-2013 Free Software Foundation, Inc.
|
2000-07-07 21:06:48 +00:00
|
|
|
# This file is part of the GNU C Library.
|
2001-07-06 04:58:11 +00:00
|
|
|
|
2000-07-07 21:06:48 +00:00
|
|
|
# The GNU C Library is free software; you can redistribute it and/or
|
2001-07-06 04:58:11 +00:00
|
|
|
# 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.
|
|
|
|
|
2000-07-07 21:06:48 +00:00
|
|
|
# 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
|
2001-07-06 04:58:11 +00:00
|
|
|
# Lesser General Public License for more details.
|
|
|
|
|
|
|
|
# You should have received a copy of the GNU Lesser General Public
|
2012-02-09 23:18:22 +00:00
|
|
|
# License along with the GNU C Library; if not, see
|
|
|
|
# <http://www.gnu.org/licenses/>.
|
2000-07-07 21:06:48 +00:00
|
|
|
|
2012-09-24 20:52:13 +00:00
|
|
|
set -e
|
|
|
|
|
2000-07-07 21:06:48 +00:00
|
|
|
common_objpfx=$1; shift
|
2000-07-25 10:06:51 +00:00
|
|
|
run_program_prefix=$1; shift
|
2000-07-07 21:06:48 +00:00
|
|
|
|
|
|
|
status=0
|
|
|
|
|
|
|
|
LOCPATH=${common_objpfx}localedata GCONV_PATH=${common_objpfx}iconvdata \
|
2000-07-25 10:06:51 +00:00
|
|
|
${run_program_prefix} \
|
2000-07-07 21:06:48 +00:00
|
|
|
${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.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
|
|
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, " "
|
2002-03-13 23:44:36 +00:00
|
|
|
snprintf ("%.999999u", 10) == 999999
|
2000-07-07 21:06:48 +00:00
|
|
|
|
|
|
|
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
|
2000-09-25 05:12:05 +00:00
|
|
|
printf ("%hhu", 257) = 1
|
|
|
|
printf ("%hu", 65537) = 1
|
2006-05-05 13:37:35 +00:00
|
|
|
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
|
2000-07-07 21:06:48 +00:00
|
|
|
--- Should be no further output. ---
|
|
|
|
EOF
|
2001-03-04 08:47:11 +00:00
|
|
|
cmp - ${common_objpfx}stdio-common/tst-printf.out > /dev/null 2>&1 ||
|
2000-09-14 22:42:29 +00:00
|
|
|
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.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
|
|
|
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, " "
|
2002-03-13 23:44:36 +00:00
|
|
|
snprintf ("%.999999u", 10) == 999999
|
2000-09-14 22:42:29 +00:00
|
|
|
|
|
|
|
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
|
2000-09-25 05:12:05 +00:00
|
|
|
printf ("%hhu", 257) = 1
|
|
|
|
printf ("%hu", 65537) = 1
|
2006-05-02 20:28:05 +00:00
|
|
|
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
|
2000-09-14 22:42:29 +00:00
|
|
|
--- Should be no further output. ---
|
|
|
|
EOF
|
2001-03-04 08:47:11 +00:00
|
|
|
cmp - ${common_objpfx}stdio-common/tst-printf.out > /dev/null 2>&1 ||
|
2000-09-14 22:42:29 +00:00
|
|
|
{
|
|
|
|
status=1
|
|
|
|
echo "*** output comparison failed"
|
|
|
|
}
|
2000-07-07 21:06:48 +00:00
|
|
|
|
|
|
|
exit $status
|