diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2023-05-25 23:48:13 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2023-05-25 23:48:13 +0200 |
commit | 0c3270f7e55e0ca7b8d664851468511d2c8995cf (patch) | |
tree | fdaf00c6f2db56cab992eec0d556b3ef0db61381 | |
parent | 6882a933cf078be35f4eb93963365549d43cb497 (diff) | |
download | busybox-w32-0c3270f7e55e0ca7b8d664851468511d2c8995cf.tar.gz busybox-w32-0c3270f7e55e0ca7b8d664851468511d2c8995cf.tar.bz2 busybox-w32-0c3270f7e55e0ca7b8d664851468511d2c8995cf.zip |
od: stop printing extra trailing spaces
function old new delta
.rodata 104598 104613 +15
display 1475 1485 +10
od_main 549 556 +7
rewrite 971 967 -4
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/1 up/down: 32/-4) Total: 28 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | coreutils/od.c | 33 | ||||
-rw-r--r-- | include/dump.h | 1 | ||||
-rw-r--r-- | libbb/dump.c | 21 | ||||
-rwxr-xr-x | testsuite/od.tests | 43 |
4 files changed, 51 insertions, 47 deletions
diff --git a/coreutils/od.c b/coreutils/od.c index bd82487e5..abedb40a7 100644 --- a/coreutils/od.c +++ b/coreutils/od.c | |||
@@ -157,22 +157,22 @@ odoffset(dumper_t *dumper, int argc, char ***argvp) | |||
157 | // The format is required and must be surrounded by " "s. | 157 | // The format is required and must be surrounded by " "s. |
158 | // It is a printf-style format. | 158 | // It is a printf-style format. |
159 | static const char *const add_strings[] ALIGN_PTR = { | 159 | static const char *const add_strings[] ALIGN_PTR = { |
160 | "16/1 \"%3_u \" \"\\n\"", /* 0: a */ | 160 | "16/1 \" %3_u\" \"\\n\"", /* 0: a */ |
161 | "8/2 \"%06o \" \"\\n\"", /* 1: B (undocumented in od), o */ | 161 | "8/2 \" %06o\" \"\\n\"", /* 1: B (undocumented in od), o */ |
162 | "16/1 \"%03o \" \"\\n\"", /* 2: b */ | 162 | "16/1 \" %03o\" \"\\n\"", /* 2: b */ |
163 | "16/1 \"%3_c \" \"\\n\"", /* 3: c */ | 163 | "16/1 \" %3_c\" \"\\n\"", /* 3: c */ |
164 | "8/2 \"%5u \" \"\\n\"", /* 4: d */ | 164 | "8/2 \" %5u\" \"\\n\"", /* 4: d */ |
165 | "4/4 \"%10u \" \"\\n\"", /* 5: D */ | 165 | "4/4 \" %10u\" \"\\n\"", /* 5: D */ |
166 | "2/8 \"%24.14e \" \"\\n\"", /* 6: e (undocumented in od), F */ | 166 | "2/8 \" %24.14e\" \"\\n\"", /* 6: e (undocumented in od), F */ |
167 | "4/4 \"%15.7e \" \"\\n\"", /* 7: f */ | 167 | "4/4 \" %15.7e\" \"\\n\"", /* 7: f */ |
168 | "4/4 \"%08x \" \"\\n\"", /* 8: H, X */ | 168 | "4/4 \" %08x\" \"\\n\"", /* 8: H, X */ |
169 | "8/2 \"%04x \" \"\\n\"", /* 9: h, x */ | 169 | "8/2 \" %04x\" \"\\n\"", /* 9: h, x */ |
170 | /* This probably also depends on word width of the arch (what is "long"?) */ | 170 | /* This probably also depends on word width of the arch (what is "long"?) */ |
171 | /* should be "2/8" or "4/4" depending on sizeof(long)? */ | 171 | /* should be "2/8" or "4/4" depending on sizeof(long)? */ |
172 | "2/8 \"%20lld \" \"\\n\"", /* 10: I, L, l */ | 172 | "2/8 \" %20lld\" \"\\n\"", /* 10: I, L, l */ |
173 | "4/4 \"%11d \" \"\\n\"", /* 11: i */ | 173 | "4/4 \" %11d\" \"\\n\"", /* 11: i */ |
174 | "4/4 \"%011o \" \"\\n\"", /* 12: O */ | 174 | "4/4 \" %011o\" \"\\n\"", /* 12: O */ |
175 | "8/2 \"%6d \" \"\\n\"", /* 13: s */ | 175 | "8/2 \" %6d\" \"\\n\"", /* 13: s */ |
176 | }; | 176 | }; |
177 | 177 | ||
178 | static const char od_opts[] ALIGN1 = "aBbcDdeFfHhIiLlOoXxsv"; | 178 | static const char od_opts[] ALIGN1 = "aBbcDdeFfHhIiLlOoXxsv"; |
@@ -199,9 +199,9 @@ int od_main(int argc, char **argv) | |||
199 | if (first) { | 199 | if (first) { |
200 | first = 0; | 200 | first = 0; |
201 | bb_dump_add(dumper, "\"%07.7_Ao\n\""); | 201 | bb_dump_add(dumper, "\"%07.7_Ao\n\""); |
202 | bb_dump_add(dumper, "\"%07.7_ao \""); | 202 | bb_dump_add(dumper, "\"%07.7_ao\""); |
203 | } else { | 203 | } else { |
204 | bb_dump_add(dumper, "\" \""); | 204 | bb_dump_add(dumper, "\" \""); |
205 | } | 205 | } |
206 | bb_dump_add(dumper, add_strings[(int)od_o2si[(p - od_opts)]]); | 206 | bb_dump_add(dumper, add_strings[(int)od_o2si[(p - od_opts)]]); |
207 | } else { /* P, p, s, w, or other unhandled */ | 207 | } else { /* P, p, s, w, or other unhandled */ |
@@ -212,6 +212,7 @@ int od_main(int argc, char **argv) | |||
212 | bb_dump_add(dumper, "\"%07.7_Ao\n\""); | 212 | bb_dump_add(dumper, "\"%07.7_Ao\n\""); |
213 | bb_dump_add(dumper, "\"%07.7_ao \" 8/2 \"%06o \" \"\\n\""); | 213 | bb_dump_add(dumper, "\"%07.7_ao \" 8/2 \"%06o \" \"\\n\""); |
214 | } | 214 | } |
215 | dumper->od_eofstring = "\n"; | ||
215 | 216 | ||
216 | argc -= optind; | 217 | argc -= optind; |
217 | argv += optind; | 218 | argv += optind; |
diff --git a/include/dump.h b/include/dump.h index 10fc5d900..11dcf4523 100644 --- a/include/dump.h +++ b/include/dump.h | |||
@@ -34,6 +34,7 @@ typedef struct dumper_t { | |||
34 | smallint dump_vflag; /*enum dump_vflag_t*/ | 34 | smallint dump_vflag; /*enum dump_vflag_t*/ |
35 | FS *fshead; | 35 | FS *fshead; |
36 | const char *xxd_eofstring; | 36 | const char *xxd_eofstring; |
37 | const char *od_eofstring; | ||
37 | off_t address; /* address/offset in stream */ | 38 | off_t address; /* address/offset in stream */ |
38 | long long xxd_displayoff; | 39 | long long xxd_displayoff; |
39 | } dumper_t; | 40 | } dumper_t; |
diff --git a/libbb/dump.c b/libbb/dump.c index cfb9d94f9..77d76611b 100644 --- a/libbb/dump.c +++ b/libbb/dump.c | |||
@@ -242,7 +242,7 @@ static NOINLINE void rewrite(priv_dumper_t *dumper, FS *fs) | |||
242 | pr->flags = F_P; | 242 | pr->flags = F_P; |
243 | *p1 = 'c'; | 243 | *p1 = 'c'; |
244 | goto DO_BYTE_COUNT_1; | 244 | goto DO_BYTE_COUNT_1; |
245 | case 'u': /* %_p: chars, 'nul', 'esc' etc for nonprintable */ | 245 | case 'u': /* %_u: chars, 'nul', 'esc' etc for nonprintable */ |
246 | pr->flags = F_U; | 246 | pr->flags = F_U; |
247 | /* *p1 = 'c'; set in conv_u */ | 247 | /* *p1 = 'c'; set in conv_u */ |
248 | goto DO_BYTE_COUNT_1; | 248 | goto DO_BYTE_COUNT_1; |
@@ -322,8 +322,7 @@ static NOINLINE void rewrite(priv_dumper_t *dumper, FS *fs) | |||
322 | p2 = NULL; | 322 | p2 = NULL; |
323 | for (p1 = pr->fmt; *p1; ++p1) | 323 | for (p1 = pr->fmt; *p1; ++p1) |
324 | p2 = isspace(*p1) ? p1 : NULL; | 324 | p2 = isspace(*p1) ? p1 : NULL; |
325 | if (p2) | 325 | pr->nospace = p2; |
326 | pr->nospace = p2; | ||
327 | } | 326 | } |
328 | } | 327 | } |
329 | } | 328 | } |
@@ -477,7 +476,7 @@ static void bpad(PR *pr) | |||
477 | 476 | ||
478 | static const char conv_str[] ALIGN1 = | 477 | static const char conv_str[] ALIGN1 = |
479 | "\0" "\\""0""\0" | 478 | "\0" "\\""0""\0" |
480 | "\007""\\""a""\0" /* \a */ | 479 | "\007""\\""a""\0" |
481 | "\b" "\\""b""\0" | 480 | "\b" "\\""b""\0" |
482 | "\f" "\\""f""\0" | 481 | "\f" "\\""f""\0" |
483 | "\n" "\\""n""\0" | 482 | "\n" "\\""n""\0" |
@@ -539,7 +538,6 @@ static void conv_u(PR *pr, unsigned char *p) | |||
539 | static NOINLINE void display(priv_dumper_t* dumper) | 538 | static NOINLINE void display(priv_dumper_t* dumper) |
540 | { | 539 | { |
541 | unsigned char *bp; | 540 | unsigned char *bp; |
542 | unsigned char savech = '\0'; | ||
543 | 541 | ||
544 | while ((bp = get(dumper)) != NULL) { | 542 | while ((bp = get(dumper)) != NULL) { |
545 | FS *fs; | 543 | FS *fs; |
@@ -560,6 +558,8 @@ static NOINLINE void display(priv_dumper_t* dumper) | |||
560 | PR *pr; | 558 | PR *pr; |
561 | for (pr = fu->nextpr; pr; dumper->pub.address += pr->bcnt, | 559 | for (pr = fu->nextpr; pr; dumper->pub.address += pr->bcnt, |
562 | bp += pr->bcnt, pr = pr->nextpr) { | 560 | bp += pr->bcnt, pr = pr->nextpr) { |
561 | unsigned char savech; | ||
562 | |||
563 | if (dumper->eaddress | 563 | if (dumper->eaddress |
564 | && dumper->pub.address >= dumper->eaddress | 564 | && dumper->pub.address >= dumper->eaddress |
565 | ) { | 565 | ) { |
@@ -568,9 +568,16 @@ static NOINLINE void display(priv_dumper_t* dumper) | |||
568 | fputs_stdout(dumper->pub.xxd_eofstring); | 568 | fputs_stdout(dumper->pub.xxd_eofstring); |
569 | return; | 569 | return; |
570 | } | 570 | } |
571 | if (dumper->pub.od_eofstring) { | ||
572 | /* od support: requested to not pad incomplete blocks */ | ||
573 | /* ... but do print final offset */ | ||
574 | fputs_stdout(dumper->pub.od_eofstring); | ||
575 | goto endfu; | ||
576 | } | ||
571 | if (!(pr->flags & (F_TEXT | F_BPAD))) | 577 | if (!(pr->flags & (F_TEXT | F_BPAD))) |
572 | bpad(pr); | 578 | bpad(pr); |
573 | } | 579 | } |
580 | savech = '\0'; | ||
574 | if (cnt == 1 && pr->nospace) { | 581 | if (cnt == 1 && pr->nospace) { |
575 | savech = *pr->nospace; | 582 | savech = *pr->nospace; |
576 | *pr->nospace = '\0'; | 583 | *pr->nospace = '\0'; |
@@ -665,7 +672,7 @@ static NOINLINE void display(priv_dumper_t* dumper) | |||
665 | break; | 672 | break; |
666 | } | 673 | } |
667 | } | 674 | } |
668 | if (cnt == 1 && pr->nospace) { | 675 | if (savech) { |
669 | *pr->nospace = savech; | 676 | *pr->nospace = savech; |
670 | } | 677 | } |
671 | } | 678 | } |
@@ -673,7 +680,7 @@ static NOINLINE void display(priv_dumper_t* dumper) | |||
673 | } | 680 | } |
674 | } | 681 | } |
675 | } | 682 | } |
676 | 683 | endfu: | |
677 | if (dumper->endfu) { | 684 | if (dumper->endfu) { |
678 | PR *pr; | 685 | PR *pr; |
679 | /* | 686 | /* |
diff --git a/testsuite/od.tests b/testsuite/od.tests index 29ca829d5..4b1525620 100755 --- a/testsuite/od.tests +++ b/testsuite/od.tests | |||
@@ -12,14 +12,9 @@ le=false | |||
12 | { printf '\0\1' | od -s | grep -q 256; } && le=true | 12 | { printf '\0\1' | od -s | grep -q 256; } && le=true |
13 | readonly le | 13 | readonly le |
14 | 14 | ||
15 | # NB: for !DESKTOP, | ||
16 | # sed 's/ *$//' truncates trailing spaces. | ||
17 | # This needs to be fixed properly (by not outputting them). | ||
18 | # For now, the tests ignore them (do not require a match). | ||
19 | |||
20 | optional !DESKTOP | 15 | optional !DESKTOP |
21 | testing "od -a (!DESKTOP)" \ | 16 | testing "od -a (!DESKTOP)" \ |
22 | "od -a | sed 's/ *$//'" \ | 17 | "od -a" \ |
23 | "\ | 18 | "\ |
24 | 0000000 soh stx etx lf A B C fe | 19 | 0000000 soh stx etx lf A B C fe |
25 | 0000010 | 20 | 0000010 |
@@ -39,7 +34,7 @@ testing "od -a (DESKTOP)" \ | |||
39 | SKIP= | 34 | SKIP= |
40 | 35 | ||
41 | testing "od -B" \ | 36 | testing "od -B" \ |
42 | "od -B | sed 's/ *$//'" \ | 37 | "od -B" \ |
43 | "\ | 38 | "\ |
44 | 0000000 001001 005003 041101 177103 | 39 | 0000000 001001 005003 041101 177103 |
45 | 0000010 | 40 | 0000010 |
@@ -49,7 +44,7 @@ SKIP= | |||
49 | 44 | ||
50 | $le || SKIP=1 | 45 | $le || SKIP=1 |
51 | testing "od -o (little-endian)" \ | 46 | testing "od -o (little-endian)" \ |
52 | "od -o | sed 's/ *$//'" \ | 47 | "od -o" \ |
53 | "\ | 48 | "\ |
54 | 0000000 001001 005003 041101 177103 | 49 | 0000000 001001 005003 041101 177103 |
55 | 0000010 | 50 | 0000010 |
@@ -58,7 +53,7 @@ testing "od -o (little-endian)" \ | |||
58 | SKIP= | 53 | SKIP= |
59 | 54 | ||
60 | testing "od -b" \ | 55 | testing "od -b" \ |
61 | "od -b | sed 's/ *$//'" \ | 56 | "od -b" \ |
62 | "\ | 57 | "\ |
63 | 0000000 001 002 003 012 101 102 103 376 | 58 | 0000000 001 002 003 012 101 102 103 376 |
64 | 0000010 | 59 | 0000010 |
@@ -67,7 +62,7 @@ testing "od -b" \ | |||
67 | SKIP= | 62 | SKIP= |
68 | 63 | ||
69 | testing "od -c" \ | 64 | testing "od -c" \ |
70 | "od -c | sed 's/ *$//'" \ | 65 | "od -c" \ |
71 | "\ | 66 | "\ |
72 | 0000000 001 002 003 \\\\n A B C 376 | 67 | 0000000 001 002 003 \\\\n A B C 376 |
73 | 0000010 | 68 | 0000010 |
@@ -77,7 +72,7 @@ SKIP= | |||
77 | 72 | ||
78 | $le || SKIP=1 | 73 | $le || SKIP=1 |
79 | testing "od -d (little-endian)" \ | 74 | testing "od -d (little-endian)" \ |
80 | "od -d | sed 's/ *$//'" \ | 75 | "od -d" \ |
81 | "\ | 76 | "\ |
82 | 0000000 513 2563 16961 65091 | 77 | 0000000 513 2563 16961 65091 |
83 | 0000010 | 78 | 0000010 |
@@ -88,7 +83,7 @@ SKIP= | |||
88 | optional !DESKTOP #DESKTOP: unrecognized option: D | 83 | optional !DESKTOP #DESKTOP: unrecognized option: D |
89 | $le || SKIP=1 | 84 | $le || SKIP=1 |
90 | testing "od -D (!DESKTOP little-endian)" \ | 85 | testing "od -D (!DESKTOP little-endian)" \ |
91 | "od -D | sed 's/ *$//'" \ | 86 | "od -D" \ |
92 | "\ | 87 | "\ |
93 | 0000000 167969281 4265820737 | 88 | 0000000 167969281 4265820737 |
94 | 0000010 | 89 | 0000010 |
@@ -99,7 +94,7 @@ SKIP= | |||
99 | optional !DESKTOP #DESKTOP: unrecognized option: e | 94 | optional !DESKTOP #DESKTOP: unrecognized option: e |
100 | $le || SKIP=1 | 95 | $le || SKIP=1 |
101 | testing "od -e (!DESKTOP little-endian)" \ | 96 | testing "od -e (!DESKTOP little-endian)" \ |
102 | "od -e | sed 's/ *$//'" \ | 97 | "od -e" \ |
103 | "\ | 98 | "\ |
104 | 0000000 -1.61218556514036e+300 | 99 | 0000000 -1.61218556514036e+300 |
105 | 0000010 | 100 | 0000010 |
@@ -110,7 +105,7 @@ SKIP= | |||
110 | optional !DESKTOP #DESKTOP: unrecognized option: F | 105 | optional !DESKTOP #DESKTOP: unrecognized option: F |
111 | $le || SKIP=1 | 106 | $le || SKIP=1 |
112 | testing "od -F (!DESKTOP little-endian)" \ | 107 | testing "od -F (!DESKTOP little-endian)" \ |
113 | "od -F | sed 's/ *$//'" \ | 108 | "od -F" \ |
114 | "\ | 109 | "\ |
115 | 0000000 -1.61218556514036e+300 | 110 | 0000000 -1.61218556514036e+300 |
116 | 0000010 | 111 | 0000010 |
@@ -120,7 +115,7 @@ SKIP= | |||
120 | 115 | ||
121 | $le || SKIP=1 | 116 | $le || SKIP=1 |
122 | testing "od -f (little-endian)" \ | 117 | testing "od -f (little-endian)" \ |
123 | "od -f | sed 's/ *$//'" \ | 118 | "od -f" \ |
124 | "\ | 119 | "\ |
125 | 0000000 6.3077975e-33 -6.4885867e+37 | 120 | 0000000 6.3077975e-33 -6.4885867e+37 |
126 | 0000010 | 121 | 0000010 |
@@ -131,7 +126,7 @@ SKIP= | |||
131 | optional !DESKTOP #DESKTOP: unrecognized option: H | 126 | optional !DESKTOP #DESKTOP: unrecognized option: H |
132 | $le || SKIP=1 | 127 | $le || SKIP=1 |
133 | testing "od -H (!DESKTOP little-endian)" \ | 128 | testing "od -H (!DESKTOP little-endian)" \ |
134 | "od -H | sed 's/ *$//'" \ | 129 | "od -H" \ |
135 | "\ | 130 | "\ |
136 | 0000000 0a030201 fe434241 | 131 | 0000000 0a030201 fe434241 |
137 | 0000010 | 132 | 0000010 |
@@ -142,7 +137,7 @@ SKIP= | |||
142 | optional !DESKTOP #DESKTOP: unrecognized option: X | 137 | optional !DESKTOP #DESKTOP: unrecognized option: X |
143 | $le || SKIP=1 | 138 | $le || SKIP=1 |
144 | testing "od -X (!DESKTOP little-endian)" \ | 139 | testing "od -X (!DESKTOP little-endian)" \ |
145 | "od -X | sed 's/ *$//'" \ | 140 | "od -X" \ |
146 | "\ | 141 | "\ |
147 | 0000000 0a030201 fe434241 | 142 | 0000000 0a030201 fe434241 |
148 | 0000010 | 143 | 0000010 |
@@ -152,7 +147,7 @@ SKIP= | |||
152 | 147 | ||
153 | $le || SKIP=1 | 148 | $le || SKIP=1 |
154 | testing "od -h (little-endian)" \ | 149 | testing "od -h (little-endian)" \ |
155 | "od -h | sed 's/ *$//'" \ | 150 | "od -h" \ |
156 | "\ | 151 | "\ |
157 | 0000000 0201 0a03 4241 fe43 | 152 | 0000000 0201 0a03 4241 fe43 |
158 | 0000010 | 153 | 0000010 |
@@ -162,7 +157,7 @@ SKIP= | |||
162 | 157 | ||
163 | $le || SKIP=1 | 158 | $le || SKIP=1 |
164 | testing "od -x (little-endian)" \ | 159 | testing "od -x (little-endian)" \ |
165 | "od -x | sed 's/ *$//'" \ | 160 | "od -x" \ |
166 | "\ | 161 | "\ |
167 | 0000000 0201 0a03 4241 fe43 | 162 | 0000000 0201 0a03 4241 fe43 |
168 | 0000010 | 163 | 0000010 |
@@ -173,7 +168,7 @@ SKIP= | |||
173 | optional !DESKTOP #DESKTOP: unrecognized option: I | 168 | optional !DESKTOP #DESKTOP: unrecognized option: I |
174 | $le || SKIP=1 | 169 | $le || SKIP=1 |
175 | testing "od -I (!DESKTOP little-endian)" \ | 170 | testing "od -I (!DESKTOP little-endian)" \ |
176 | "od -I | sed 's/ *$//'" \ | 171 | "od -I" \ |
177 | "\ | 172 | "\ |
178 | 0000000 -125183517527965183 | 173 | 0000000 -125183517527965183 |
179 | 0000010 | 174 | 0000010 |
@@ -184,7 +179,7 @@ SKIP= | |||
184 | optional !DESKTOP #DESKTOP: unrecognized option: L | 179 | optional !DESKTOP #DESKTOP: unrecognized option: L |
185 | $le || SKIP=1 | 180 | $le || SKIP=1 |
186 | testing "od -L (!DESKTOP little-endian)" \ | 181 | testing "od -L (!DESKTOP little-endian)" \ |
187 | "od -L | sed 's/ *$//'" \ | 182 | "od -L" \ |
188 | "\ | 183 | "\ |
189 | 0000000 -125183517527965183 | 184 | 0000000 -125183517527965183 |
190 | 0000010 | 185 | 0000010 |
@@ -194,7 +189,7 @@ SKIP= | |||
194 | 189 | ||
195 | $le || SKIP=1 | 190 | $le || SKIP=1 |
196 | testing "od -i (little-endian)" \ | 191 | testing "od -i (little-endian)" \ |
197 | "od -i | sed 's/ *$//'" \ | 192 | "od -i" \ |
198 | "\ | 193 | "\ |
199 | 0000000 167969281 -29146559 | 194 | 0000000 167969281 -29146559 |
200 | 0000010 | 195 | 0000010 |
@@ -205,7 +200,7 @@ SKIP= | |||
205 | optional !DESKTOP #DESKTOP: unrecognized option: O | 200 | optional !DESKTOP #DESKTOP: unrecognized option: O |
206 | $le || SKIP=1 | 201 | $le || SKIP=1 |
207 | testing "od -O (!DESKTOP little-endian)" \ | 202 | testing "od -O (!DESKTOP little-endian)" \ |
208 | "od -O | sed 's/ *$//'" \ | 203 | "od -O" \ |
209 | "\ | 204 | "\ |
210 | 0000000 01200601001 37620641101 | 205 | 0000000 01200601001 37620641101 |
211 | 0000010 | 206 | 0000010 |
@@ -216,7 +211,7 @@ SKIP= | |||
216 | # This probably also depends on word width of the arch (what is "long"?) | 211 | # This probably also depends on word width of the arch (what is "long"?) |
217 | $le || SKIP=1 | 212 | $le || SKIP=1 |
218 | testing "od -l (little-endian)" \ | 213 | testing "od -l (little-endian)" \ |
219 | "od -l | sed 's/ *$//'" \ | 214 | "od -l" \ |
220 | "\ | 215 | "\ |
221 | 0000000 -125183517527965183 | 216 | 0000000 -125183517527965183 |
222 | 0000010 | 217 | 0000010 |