add "-C" format to hexdump
fixes bug #113 and satisfies a personal need at the same time. output compares identically to util-linux version. (with exception of whitespace differences on last lines of output with non-uniform length, which are neither fixed nor worsened by this change.)
This commit is contained in:
parent
d957b9537e
commit
969af89797
@ -1087,13 +1087,14 @@
|
|||||||
"daemon:x:1:1:daemon:/usr/sbin:/bin/sh\n"
|
"daemon:x:1:1:daemon:/usr/sbin:/bin/sh\n"
|
||||||
|
|
||||||
#define hexdump_trivial_usage \
|
#define hexdump_trivial_usage \
|
||||||
"[-[bcdefnosvx]] [OPTION] FILE"
|
"[-[bcCdefnosvx]] [OPTION] FILE"
|
||||||
#define hexdump_full_usage \
|
#define hexdump_full_usage \
|
||||||
"The hexdump utility is a filter which displays the specified files,\n" \
|
"The hexdump utility is a filter which displays the specified files,\n" \
|
||||||
"or the standard input, if no files are specified, in a user specified\n" \
|
"or the standard input, if no files are specified, in a user specified\n" \
|
||||||
"format\n" \
|
"format\n" \
|
||||||
"\t-b\t\tOne-byte octal display\n" \
|
"\t-b\t\tOne-byte octal display\n" \
|
||||||
"\t-c\t\tOne-byte character display\n" \
|
"\t-c\t\tOne-byte character display\n" \
|
||||||
|
"\t-C\t\tCanonical hex+ASCII, 16 bytes per line\n" \
|
||||||
"\t-d\t\tTwo-byte decimal display\n" \
|
"\t-d\t\tTwo-byte decimal display\n" \
|
||||||
"\t-e FORMAT STRING\n" \
|
"\t-e FORMAT STRING\n" \
|
||||||
"\t-f FORMAT FILE\n" \
|
"\t-f FORMAT FILE\n" \
|
||||||
|
@ -57,7 +57,7 @@ static const char * const add_strings[] = {
|
|||||||
|
|
||||||
static const char add_first[] = "\"%07.7_Ax\n\"";
|
static const char add_first[] = "\"%07.7_Ax\n\"";
|
||||||
|
|
||||||
static const char hexdump_opts[] = "bcdoxe:f:n:s:v";
|
static const char hexdump_opts[] = "bcdoxCe:f:n:s:v";
|
||||||
|
|
||||||
static const struct suffix_mult suffixes[] = {
|
static const struct suffix_mult suffixes[] = {
|
||||||
{"b", 512 },
|
{"b", 512 },
|
||||||
@ -80,6 +80,10 @@ int hexdump_main(int argc, char **argv)
|
|||||||
if ((p - hexdump_opts) < 5) {
|
if ((p - hexdump_opts) < 5) {
|
||||||
bb_dump_add(add_first);
|
bb_dump_add(add_first);
|
||||||
bb_dump_add(add_strings[(int)(p - hexdump_opts)]);
|
bb_dump_add(add_strings[(int)(p - hexdump_opts)]);
|
||||||
|
} else if (ch == 'C') {
|
||||||
|
bb_dump_add("\"%08.8_Ax\n\"");
|
||||||
|
bb_dump_add("\"%08.8_ax \" 8/1 \"%02x \" \" \" 8/1 \"%02x \" ");
|
||||||
|
bb_dump_add("\" |\" 16/1 \"%_p\" \"|\\n\"");
|
||||||
} else {
|
} else {
|
||||||
/* Sae a little bit of space below by omitting the 'else's. */
|
/* Sae a little bit of space below by omitting the 'else's. */
|
||||||
if (ch == 'e') {
|
if (ch == 'e') {
|
||||||
|
Loading…
Reference in New Issue
Block a user