blob: d2c0a5dc856aaea5839674492f0b3a26c3d36321 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
#!/bin/sh
# Copyright 2018 by Denys Vlasenko <vda.linux@googlemail.com>
# Licensed under GPLv2, see file LICENSE in this source tree.
. ./testing.sh
input=\
"\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"\
"\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"\
"\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"\
"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"\
"\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
little_endian=false
{ printf '\0\1' | hexdump -d | grep -q 256; } && little_endian=true
readonly little_endian
# testing "description" "command" "result" "infile" "stdin"
testing 'hexdump -C with four NULs' \
'hexdump -C' \
"\
00000000 00 00 00 00 |....|
00000004
" \
'' \
'\0\0\0\0'
testing "hexdump does not think last padded block matches any full block" \
"hexdump -e '1/1 \"%02x|\"1/1 \"%02x!\\n\"'" \
"\
00|00!
*
00| !
" \
'' \
'\0\0\0\0\0\0\0\0\0\0\0'
testing "hexdump thinks last full block can match" \
"hexdump -e '1/1 \"%02x|\"1/1 \"%02x!\\n\"'" \
"\
00|00!
*
" \
'' \
'\0\0\0\0\0\0\0\0\0\0\0\0'
testing "hexdump -e %3_u" \
"hexdump -e '16/1 \" %3_u\" \"\n\"'" \
"\
nul soh stx etx eot enq ack bel bs ht lf vt ff cr so si
dle dc1 dc2 dc3 dc4 nak syn etb can em sub esc fs gs rs us
p q r s t u v w x y z { | } ~ del
80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f
f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd fe ff
" \
"" "$input"
testing "hexdump -e %3_c" \
"hexdump -e '16/1 \" %3_c\" \"\n\"'" \
' \\0 001 002 003 004 005 006 \\a \\b \\t \\n \\v \\f \\r 016 017
020 021 022 023 024 025 026 027 030 031 032 033 034 035 036 037
p q r s t u v w x y z { | } ~ 177
200 201 202 203 204 205 206 207 210 211 212 213 214 215 216 217
360 361 362 363 364 365 366 367 370 371 372 373 374 375 376 377
' \
"" "$input"
testing "hexdump -e /1 %d" \
"hexdump -e '16/1 \" %4d\" \"\n\"'" \
"\
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
-128 -127 -126 -125 -124 -123 -122 -121 -120 -119 -118 -117 -116 -115 -114 -113
-16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1
" \
"" "$input"
$little_endian || SKIP=1
testing "hexdump -e /2 %d (little endian)" \
"hexdump -e '8/2 \" %6d\" \"\n\"'" \
"\
256 770 1284 1798 2312 2826 3340 3854
4368 4882 5396 5910 6424 6938 7452 7966
29040 29554 30068 30582 31096 31610 32124 32638
-32384 -31870 -31356 -30842 -30328 -29814 -29300 -28786
-3600 -3086 -2572 -2058 -1544 -1030 -516 -2
" \
"" "$input"
SKIP=
$little_endian && SKIP=1
testing "hexdump -e /2 %d (big endian)" \
"hexdump -e '8/2 \" %6d\" \"\n\"'" \
"\
1 515 1029 1543 2057 2571 3085 3599
4113 4627 5141 5655 6169 6683 7197 7711
28785 29299 29813 30327 30841 31355 31869 32383
-32639 -32125 -31611 -31097 -30583 -30069 -29555 -29041
-3855 -3341 -2827 -2313 -1799 -1285 -771 -257
" \
"" "$input"
SKIP=
$little_endian || SKIP=1
testing "hexdump -e /2 %x (little endian)" \
"hexdump -e '8/2 \" %6x\" \"\n\"'" \
"\
100 302 504 706 908 b0a d0c f0e
1110 1312 1514 1716 1918 1b1a 1d1c 1f1e
7170 7372 7574 7776 7978 7b7a 7d7c 7f7e
8180 8382 8584 8786 8988 8b8a 8d8c 8f8e
f1f0 f3f2 f5f4 f7f6 f9f8 fbfa fdfc fffe
" \
"" "$input"
SKIP=
$little_endian && SKIP=1
testing "hexdump -e /2 %x (big endian)" \
"hexdump -e '8/2 \" %6x\" \"\n\"'" \
"\
1 203 405 607 809 a0b c0d e0f
1011 1213 1415 1617 1819 1a1b 1c1d 1e1f
7071 7273 7475 7677 7879 7a7b 7c7d 7e7f
8081 8283 8485 8687 8889 8a8b 8c8d 8e8f
f0f1 f2f3 f4f5 f6f7 f8f9 fafb fcfd feff
" \
"" "$input"
SKIP=
$little_endian || SKIP=1
testing "hexdump -n4 -e '\"%u\"' (little endian)" \
"hexdump -n4 -e '\"%u\"'" \
"12345678" \
"" \
"\x4e\x61\xbc\x00AAAA"
SKIP=
$little_endian && SKIP=1
testing "hexdump -n4 -e '\"%u\"' (big endian)" \
"hexdump -n4 -e '\"%u\"'" \
"1315027968" \
"" \
"\x4e\x61\xbc\x00AAAA"
SKIP=
exit $FAILCOUNT
|