1 /* Synched up with: FSF 19.28. */
8 #if __STDC__ || defined(STDC_HEADERS)
16 #define DEFAULT_GROUPING 0x01
17 #define DEFAULT_BASE 16
24 int base = DEFAULT_BASE, un_flag = FALSE, iso_flag = FALSE, endian = 1;
25 int group_by = DEFAULT_GROUPING;
30 int main(int argc, char *argv[])
32 register long address;
46 ** -iso iso character set.
47 ** -big-endian Big Endian
48 ** -little-endian Little Endian
49 ** -un || -de from hexl format to binary.
50 ** -- End switch list.
51 ** <filename> dump filename
52 ** - (as filename == stdin)
55 while (*argv && *argv[0] == '-' && (*argv)[1]) {
57 if (!strcmp(*argv, "--")) {
61 } else if (!strcmp(*argv, "-un") || !strcmp(*argv, "-de")) {
65 } else if (!strcmp(*argv, "-hex")) {
69 } else if (!strcmp(*argv, "-iso")) {
73 } else if (!strcmp(*argv, "-oct")) {
77 } else if (!strcmp(*argv, "-big-endian")) {
81 } else if (!strcmp(*argv, "-little-endian")) {
85 } else if (!strcmp(*argv, "-group-by-8-bits")) {
89 } else if (!strcmp(*argv, "-group-by-16-bits")) {
93 } else if (!strcmp(*argv, "-group-by-32-bits")) {
97 } else if (!strcmp(*argv, "-group-by-64-bits")) {
103 (void)fprintf(stderr, "%s: invalid switch: \"%s\".\n",
113 char *filename = *argv++;
115 if (!strcmp(filename, "-"))
117 else if ((fp = fopen(filename, "r")) == NULL) {
127 register int i, c = 0, d;
129 #define hexchar(x) (isdigit (x) ? x - '0' : x - 'a' + 10)
131 if (fread(buf, 1, 10, fp) != 10)
133 break; /* skip 10 bytes */
135 for (i = 0; i < 16; ++i) {
136 if ((c = getc(fp)) == ' ' || c == EOF)
140 c = hexchar(c) * 0x10 + hexchar(d);
143 if ((i & group_by) == group_by)
148 while ((c = getc(fp)) != '\n'
157 if (fread(buf, 1, 18, fp)!=18) /* skip 18 bytes */
167 register int i, c = 0;
169 for (i = 0; i < 16; ++i) {
170 if ((c = getc(fp)) == EOF) {
175 string[i + 1] = '\0';
178 (void)printf("%08lx: ",
194 (void)printf("%02x", c);
197 if ((i & group_by) == group_by)
215 } while (*argv != NULL);
221 fprintf(stderr, "Usage: %s [-de] [-iso]\n", progname);