annotate lib-src/hexl.c @ 5697:40fbceabaafd

menubar-items.el (default-menubar): Reorganize. Add PROBLEMS to toplevel. New "More about XEmacs" submenu for NEWS, licensing, etc. New "Recent History" menu for messages, lossage, etc. Get rid of ugly and unexpressive ellipses.
author Stephen J. Turnbull <stephen@xemacs.org>
date Mon, 24 Dec 2012 03:08:33 +0900
parents 06dd936cde16
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5491
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
1 /* Convert files for Emacs Hexl mode.
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
2 Copyright (C) 1989, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
3 2009, 2010 Free Software Foundation, Inc.
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
4 Copyright (C) 2010 Ben Wing.
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
5
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
6 Author: Keith Gabryelski
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
7 (according to authors.el)
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
8
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
9 This file is not considered part of XEmacs.
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
10
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
11 This program is free software: you can redistribute it and/or modify
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
12 it under the terms of the GNU General Public License as published by
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
13 the Free Software Foundation, either version 3 of the License, or
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
14 (at your option) any later version.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
15
5491
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
16 This program is distributed in the hope that it will be useful,
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
17 but WITHOUT ANY WARRANTY; without even the implied warranty of
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
19 GNU General Public License for more details.
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
20
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
21 You should have received a copy of the GNU General Public License
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
22 along with this program. If not, see <http://www.gnu.org/licenses/>. */
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
23
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
24 /* Synced up with: GNU 23.1.92. */
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
25 /* Synced by: Ben Wing, 2-17-10. */
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
26
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
27 #ifdef HAVE_CONFIG_H
438
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 428
diff changeset
28 #include <config.h>
5491
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
29 #endif
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
30
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
31 #include <stdio.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
32 #include <ctype.h>
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
33 #ifdef WIN32_NATIVE
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 438
diff changeset
34 #include <io.h>
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
35 #include <fcntl.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
36 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
37
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
38 #if __STDC__ || defined(STDC_HEADERS)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
39 #include <stdlib.h>
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
40 #ifdef HAVE_UNISTD_H
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
41 #include <unistd.h>
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
42 #endif
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
43 #include <string.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
44 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
45
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
46 #define DEFAULT_GROUPING 0x01
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
47 #define DEFAULT_BASE 16
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
48
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
49 #undef TRUE
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
50 #undef FALSE
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
51 #define TRUE (1)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
52 #define FALSE (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
53
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
54 int base = DEFAULT_BASE, un_flag = FALSE, iso_flag = FALSE, endian = 1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
55 int group_by = DEFAULT_GROUPING;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
56 char *progname;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
57
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
58 void usage (void);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
59
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
60 int
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
61 main (int argc, char *argv[])
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
62 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
63 register long address;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
64 char string[18];
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
65 FILE *fp;
5491
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
66
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
67 progname = *argv++; --argc;
5491
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
68
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
69 /*
5491
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
70 ** -hex hex dump
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
71 ** -oct Octal dump
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
72 ** -group-by-8-bits
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
73 ** -group-by-16-bits
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
74 ** -group-by-32-bits
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
75 ** -group-by-64-bits
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
76 ** -iso iso character set.
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
77 ** -big-endian Big Endian
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
78 ** -little-endian Little Endian
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
79 ** -un || -de from hexl format to binary.
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
80 ** -- End switch list.
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
81 ** <filename> dump filename
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
82 ** - (as filename == stdin)
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
83 */
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
84
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
85 while (*argv && *argv[0] == '-' && (*argv)[1])
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
86 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
87 /* A switch! */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
88 if (!strcmp (*argv, "--"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
89 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
90 --argc; argv++;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
91 break;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
92 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
93 else if (!strcmp (*argv, "-un") || !strcmp (*argv, "-de"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
94 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
95 un_flag = TRUE;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
96 --argc; argv++;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
97 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
98 else if (!strcmp (*argv, "-hex"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
99 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
100 base = 16;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
101 --argc; argv++;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
102 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
103 else if (!strcmp (*argv, "-iso"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
104 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
105 iso_flag = TRUE;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
106 --argc; argv++;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
107 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
108 else if (!strcmp (*argv, "-oct"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
109 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
110 base = 8;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
111 --argc; argv++;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
112 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
113 else if (!strcmp (*argv, "-big-endian"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
114 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
115 endian = 1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
116 --argc; argv++;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
117 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
118 else if (!strcmp (*argv, "-little-endian"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
119 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
120 endian = 0;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
121 --argc; argv++;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
122 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
123 else if (!strcmp (*argv, "-group-by-8-bits"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
124 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
125 group_by = 0x00;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
126 --argc; argv++;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
127 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
128 else if (!strcmp (*argv, "-group-by-16-bits"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
129 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
130 group_by = 0x01;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
131 --argc; argv++;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
132 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
133 else if (!strcmp (*argv, "-group-by-32-bits"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
134 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
135 group_by = 0x03;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
136 --argc; argv++;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
137 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
138 else if (!strcmp (*argv, "-group-by-64-bits"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
139 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
140 group_by = 0x07;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
141 endian = 0;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
142 --argc; argv++;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
143 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
144 else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
145 {
5491
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
146 fprintf (stderr, "%s: invalid switch: \"%s\".\n", progname,
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
147 *argv);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
148 usage ();
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
149 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
150 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
151
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
152 do
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
153 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
154 if (*argv == NULL)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
155 fp = stdin;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
156 else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
157 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
158 char *filename = *argv++;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
159
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
160 if (!strcmp (filename, "-"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
161 fp = stdin;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
162 else if ((fp = fopen (filename, "r")) == NULL)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
163 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
164 perror (filename);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
165 continue;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
166 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
167 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
168
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
169 if (un_flag)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
170 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
171 char buf[18];
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
172
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
173 #ifdef WIN32_NATIVE
5491
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
174 if (!isatty (_fileno (stdout)))
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
175 _setmode (_fileno (stdout), O_BINARY);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
176 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
177 for (;;)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
178 {
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
179 register int i, c = 0, d;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
180
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
181 #define hexchar(x) (isdigit (x) ? x - '0' : x - 'a' + 10)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
182
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
183 fread (buf, 1, 10, fp); /* skip 10 bytes */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
184
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
185 for (i=0; i < 16; ++i)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
186 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
187 if ((c = getc (fp)) == ' ' || c == EOF)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
188 break;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
189
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
190 d = getc (fp);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
191 c = hexchar (c) * 0x10 + hexchar (d);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
192 putchar (c);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
193
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
194 if ((i&group_by) == group_by)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
195 getc (fp);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
196 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
197
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
198 if (c == ' ')
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
199 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
200 while ((c = getc (fp)) != '\n' && c != EOF)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
201 ;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
202
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
203 if (c == EOF)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
204 break;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
205 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
206 else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
207 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
208 if (i < 16)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
209 break;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
210
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
211 fread (buf, 1, 18, fp); /* skip 18 bytes */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
212 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
213 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
214 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
215 else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
216 {
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
217 #ifdef WIN32_NATIVE
5491
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
218 if (!isatty (_fileno (stdout)))
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
219 _setmode (_fileno (stdout), O_BINARY);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
220 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
221 address = 0;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
222 string[0] = ' ';
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
223 string[17] = '\0';
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
224 for (;;)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
225 {
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
226 register int i, c = 0;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
227
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
228 for (i=0; i < 16; ++i)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
229 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
230 if ((c = getc (fp)) == EOF)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
231 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
232 if (!i)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
233 break;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
234
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
235 fputs (" ", stdout);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
236 string[i+1] = '\0';
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
237 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
238 else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
239 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
240 if (!i)
5491
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
241 printf ("%08lx: ", address);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
242
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
243 if (iso_flag)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
244 string[i+1] =
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
245 (c < 0x20 || (c >= 0x7F && c < 0xa0)) ? '.' :c;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
246 else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
247 string[i+1] = (c < 0x20 || c >= 0x7F) ? '.' : c;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
248
5491
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
249 printf ("%02x", c);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
250 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
251
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
252 if ((i&group_by) == group_by)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
253 putchar (' ');
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
254 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
255
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
256 if (i)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
257 puts (string);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
258
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
259 if (c == EOF)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
260 break;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
261
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
262 address += 0x10;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
263
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
264 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
265 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
266
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
267 if (fp != stdin)
5491
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
268 fclose (fp);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
269
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
270 } while (*argv != NULL);
5491
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
271 return EXIT_SUCCESS;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
272 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
273
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
274 void
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
275 usage (void)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
276 {
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
277 fprintf (stderr, "Usage: %s [-de] [-iso]\n", progname);
5491
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
278 exit (EXIT_FAILURE);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
279 }
5491
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
280
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
281 /* arch-tag: 20e04fb7-926e-4e48-be86-64fe869ecdaa
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
282 (do not change this comment) */
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
283
06dd936cde16 Merge some stuff in lib-src
Ben Wing <ben@xemacs.org>
parents: 442
diff changeset
284 /* hexl.c ends here */