diff options
author | Douglas Gilbert <dgilbert@interlog.com> | 2019-06-13 05:15:40 +0000 |
---|---|---|
committer | Douglas Gilbert <dgilbert@interlog.com> | 2019-06-13 05:15:40 +0000 |
commit | 3dfb85f55d1cfbff0ae4658395471b9dc3b0a0d4 (patch) | |
tree | e49465d10e088245cc70cf03e79f1ac811eaa4b0 /utils | |
parent | 3e030c2951bee369b5593243bf317bb5a482a35b (diff) | |
download | sg3_utils-3dfb85f55d1cfbff0ae4658395471b9dc3b0a0d4.tar.gz |
sg_ses: document explicit Element type codes; SG3_UTILS_LINUX_NANO environment variable when Linux sg driver >= 4.0.30; more testing code
git-svn-id: https://svn.bingwo.ca/repos/sg3_utils/trunk@825 6180dd3e-e324-4e3e-922d-17de1ae2f315
Diffstat (limited to 'utils')
-rw-r--r-- | utils/hxascdmp.c | 46 |
1 files changed, 42 insertions, 4 deletions
diff --git a/utils/hxascdmp.c b/utils/hxascdmp.c index 4184c037..f08d0313 100644 --- a/utils/hxascdmp.c +++ b/utils/hxascdmp.c @@ -9,6 +9,7 @@ #include <stdlib.h> #include <stdio.h> +#include <stdint.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> @@ -23,7 +24,7 @@ static int bytes_per_line = DEF_BYTES_PER_LINE; -static const char * version_str = "1.17 20190210"; +static const char * version_str = "1.11 20190527"; #define CHARS_PER_HEX_BYTE 3 #define BINARY_START_COL 6 @@ -317,9 +318,13 @@ dStrHexOnly(const char* str, int len, long start, int noAddr) static void usage() { - fprintf(stderr, "Usage: hxascdmp [-b=<n>] [-h] [-H] [-N] [-V] [-?] " - "[<file>+]\n"); + fprintf(stderr, "Usage: hxascdmp [-1] [-2] [-b=<n>] [-h] [-H] [-N] " + "[-o=<off>] [-q]\n" + " [-V] [-?] [<file>+]\n"); fprintf(stderr, " where:\n"); + fprintf(stderr, " -1 print first byte in hex, prepend '0x' " + "if '-H' given\n"); + fprintf(stderr, " -2 like '-1' but print first two bytes\n"); fprintf(stderr, " -b=<n> bytes per line to display " "(def: 16)\n"); fprintf(stderr, " -h print this usage message\n"); @@ -328,6 +333,8 @@ usage() fprintf(stderr, " -N no address, start in first column\n"); fprintf(stderr, " -o=<off> start decoding at byte <off>. Suffix " "multipliers allowed\n"); + fprintf(stderr, " -q quiet: suppress output of header " + "info\n"); fprintf(stderr, " -V print version string then exits\n"); fprintf(stderr, " -? print this usage message\n"); fprintf(stderr, " <file>+ reads file(s) and outputs each " @@ -350,6 +357,9 @@ main(int argc, const char ** argv) int noAddr = 0; int doVersion = 0; int hasFilename = 0; + int quiet = 0; + int print1 = 0; + int print2 = 0; int ret = 0; const char * cp; @@ -375,6 +385,12 @@ main(int argc, const char ** argv) offset = off; } else if ((len > 1) && ('-' == cp[0]) && ('-' != cp[1])) { res = 0; + n = num_chs_in_str(cp + 1, len - 1, '1'); + print1 += n; + res += n; + n = num_chs_in_str(cp + 1, len - 1, '2'); + print2 += n; + res += n; n = num_chs_in_str(cp + 1, len - 1, 'h'); doHelp += n; res += n; @@ -384,6 +400,9 @@ main(int argc, const char ** argv) n = num_chs_in_str(cp + 1, len - 1, 'N'); noAddr += n; res += n; + n = num_chs_in_str(cp + 1, len - 1, 'q'); + quiet += n; + res += n; n = num_chs_in_str(cp + 1, len - 1, 'V'); doVersion += n; res += n; @@ -405,6 +424,8 @@ main(int argc, const char ** argv) hasFilename = 1; break; } + if (print2) + print1 += print2 + print2; } if (doVersion) { printf("%s\n", version_str); @@ -443,9 +464,26 @@ main(int argc, const char ** argv) start = offset; } else start = 0; - if (! doHex) + if (! (doHex || quiet || print1)) printf("ASCII hex dump of file: %s\n", argv[k]); while ((res = read(inFile, buff, num)) > 0) { + if (print1) { + if (1 == print1) { + if (doHex) + printf("0x%02x\n", (uint8_t)(buff[0])); + else + printf("%02x\n", (uint8_t)(buff[0])); + } else { + uint16_t us; + + memcpy(&us, buff, 2); + if (doHex) + printf("0x%04x\n", us); + else + printf("%04x\n", us); + } + break; + } if (doHex) dStrHexOnly(buff, res, start, noAddr); else |