]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
hexdump: add '--one-byte-hex' format option
authorTomasz Wojdat <tpwojdat@gmail.com>
Tue, 16 May 2023 18:10:13 +0000 (20:10 +0200)
committerTomasz Wojdat <tpwojdat@gmail.com>
Tue, 16 May 2023 18:24:21 +0000 (20:24 +0200)
Signed-off-by: Tomasz Wojdat <tpwojdat@gmail.com>
bash-completion/hexdump
text-utils/hexdump.1.adoc
text-utils/hexdump.c

index 80b1ab62850c264a831a5d8e6e001f1370fca2f3..981d535d2e50e194bb56ae421fa0116cab47bd48 100644 (file)
@@ -28,6 +28,7 @@ _hexdump_module()
        case $cur in
                -*)
                        OPTS="  --one-byte-octal
+                               --one-byte-hex
                                --one-byte-char
                                --canonical
                                --two-bytes-decimal
index 82c1e606cfbdffd24e08c6f74073136bbcdacfd2..3516e0405ca099e2c92173e01f7029d4d2bd32fc 100644 (file)
@@ -61,6 +61,9 @@ Below, the _length_ and _offset_ arguments may be followed by the multiplicative
 *-b*, *--one-byte-octal*::
 _One-byte octal display_. Display the input offset in hexadecimal, followed by sixteen space-separated, three-column, zero-filled bytes of input data, in octal, per line.
 
+*-X*, *--one-byte-hex*::
+_One-byte hexadecimal display_. Display the input offset in hexadecimal, followed by sixteen space-separated, two-column, zero-filled bytes of input data, in hexadecimal, per line.
+
 *-c*, *--one-byte-char*::
 _One-byte character display_. Display the input offset in hexadecimal, followed by sixteen space-separated, three-column, space-filled characters of input data per line.
 
index 73b3a94a0b42664d3dae0be4a36a2f4f5a182ca0..5b92b16371059834c74a2113a0b388c68c5cdfc0 100644 (file)
@@ -66,6 +66,7 @@ parse_args(int argc, char **argv, struct hexdump *hex)
 
        static const struct option longopts[] = {
                {"one-byte-octal", no_argument, NULL, 'b'},
+               {"one-byte-hex", no_argument, NULL, 'X'},
                {"one-byte-char", no_argument, NULL, 'c'},
                {"canonical", no_argument, NULL, 'C'},
                {"two-bytes-decimal", no_argument, NULL, 'd'},
@@ -82,12 +83,16 @@ parse_args(int argc, char **argv, struct hexdump *hex)
                {NULL, no_argument, NULL, 0}
        };
 
-       while ((ch = getopt_long(argc, argv, "bcCde:f:L::n:os:vxhV", longopts, NULL)) != -1) {
+       while ((ch = getopt_long(argc, argv, "bXcCde:f:L::n:os:vxhV", longopts, NULL)) != -1) {
                switch (ch) {
                case 'b':
                        add_fmt(hex_offt, hex);
                        add_fmt("\"%07.7_ax \" 16/1 \"%03o \" \"\\n\"", hex);
                        break;
+               case 'X':
+                       add_fmt("\"%07.7_Ax\n\"", hex);
+                       add_fmt("\"%07.7_ax \" 16/1 \" %02x \" \"\\n\"", hex);
+                       break;
                case 'c':
                        add_fmt(hex_offt, hex);
                        add_fmt("\"%07.7_ax \" 16/1 \"%3_c \" \"\\n\"", hex);
@@ -166,6 +171,7 @@ void __attribute__((__noreturn__)) usage(void)
 
        fputs(USAGE_OPTIONS, out);
        fputs(_(" -b, --one-byte-octal      one-byte octal display\n"), out);
+       fputs(_(" -X, --one-byte-hex        one-byte hexadecimal display\n"), out);
        fputs(_(" -c, --one-byte-char       one-byte character display\n"), out);
        fputs(_(" -C, --canonical           canonical hex+ASCII display\n"), out);
        fputs(_(" -d, --two-bytes-decimal   two-byte decimal display\n"), out);