annotate 3rdparty/packages/cc/sources/rdump.c @ 2229:918c7c68ea4d

Made formats quiet
author boisy
date Sun, 22 Mar 2009 12:21:59 +0000
parents 0198655f2552
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
867
0198655f2552 Added sources
boisy
parents:
diff changeset
1 #include <stdio.h>
0198655f2552 Added sources
boisy
parents:
diff changeset
2
0198655f2552 Added sources
boisy
parents:
diff changeset
3 /* rdump: prints formatted dump of .r and .l files
0198655f2552 Added sources
boisy
parents:
diff changeset
4
0198655f2552 Added sources
boisy
parents:
diff changeset
5 rdump [opts] <file>[ <file>] [opts]
0198655f2552 Added sources
boisy
parents:
diff changeset
6
0198655f2552 Added sources
boisy
parents:
diff changeset
7 options:
0198655f2552 Added sources
boisy
parents:
diff changeset
8 -g - add global definition info
0198655f2552 Added sources
boisy
parents:
diff changeset
9 -r - add reference info
0198655f2552 Added sources
boisy
parents:
diff changeset
10 -o - add reference and local offset info
0198655f2552 Added sources
boisy
parents:
diff changeset
11 -a - all of the above
0198655f2552 Added sources
boisy
parents:
diff changeset
12 */
0198655f2552 Added sources
boisy
parents:
diff changeset
13
0198655f2552 Added sources
boisy
parents:
diff changeset
14 /* symbol table types */
0198655f2552 Added sources
boisy
parents:
diff changeset
15
0198655f2552 Added sources
boisy
parents:
diff changeset
16 /* symbol definition/reference type/location */
0198655f2552 Added sources
boisy
parents:
diff changeset
17
0198655f2552 Added sources
boisy
parents:
diff changeset
18 /* type flags */
0198655f2552 Added sources
boisy
parents:
diff changeset
19 #define CODENT 0x04 /* data/code flag */
0198655f2552 Added sources
boisy
parents:
diff changeset
20 /* data type flags */
0198655f2552 Added sources
boisy
parents:
diff changeset
21 #define DIRENT 0x02 /* global/direct flag */
0198655f2552 Added sources
boisy
parents:
diff changeset
22 #define INIENT 0x01 /* clear/init. data flag */
0198655f2552 Added sources
boisy
parents:
diff changeset
23
0198655f2552 Added sources
boisy
parents:
diff changeset
24 /* location flags */
0198655f2552 Added sources
boisy
parents:
diff changeset
25 #define CODLOC 0x20 /* data/code flag */
0198655f2552 Added sources
boisy
parents:
diff changeset
26 #define DIRLOC 0x10 /* global/direct flag */
0198655f2552 Added sources
boisy
parents:
diff changeset
27 #define LOC1BYT 0x08 /* two/one byte size flag */
0198655f2552 Added sources
boisy
parents:
diff changeset
28 #define LOCMASK (CODLOC|DIRLOC)
0198655f2552 Added sources
boisy
parents:
diff changeset
29
0198655f2552 Added sources
boisy
parents:
diff changeset
30 #define NEGMASK 0x40 /* negate on resolution */
0198655f2552 Added sources
boisy
parents:
diff changeset
31 #define RELATIVE 0x80 /* relative reference */
0198655f2552 Added sources
boisy
parents:
diff changeset
32
0198655f2552 Added sources
boisy
parents:
diff changeset
33 /* misc. constants */
0198655f2552 Added sources
boisy
parents:
diff changeset
34 #define ROFSYNC 0x62CD2387
0198655f2552 Added sources
boisy
parents:
diff changeset
35 #define SYMLEN 9 /* Length of symbols */
0198655f2552 Added sources
boisy
parents:
diff changeset
36 #define MAXNAME 16 /* length of module name */
0198655f2552 Added sources
boisy
parents:
diff changeset
37
0198655f2552 Added sources
boisy
parents:
diff changeset
38 /* definition/reference */
0198655f2552 Added sources
boisy
parents:
diff changeset
39 typedef struct {
0198655f2552 Added sources
boisy
parents:
diff changeset
40 char r_flag; /* type/location */
0198655f2552 Added sources
boisy
parents:
diff changeset
41 unsigned r_offset;
0198655f2552 Added sources
boisy
parents:
diff changeset
42 } def_ref;
0198655f2552 Added sources
boisy
parents:
diff changeset
43
0198655f2552 Added sources
boisy
parents:
diff changeset
44 /* rof header structure */
0198655f2552 Added sources
boisy
parents:
diff changeset
45 typedef struct {
0198655f2552 Added sources
boisy
parents:
diff changeset
46 long h_sync;
0198655f2552 Added sources
boisy
parents:
diff changeset
47 unsigned h_tylan;
0198655f2552 Added sources
boisy
parents:
diff changeset
48 char h_valid;
0198655f2552 Added sources
boisy
parents:
diff changeset
49 char h_date[5];
0198655f2552 Added sources
boisy
parents:
diff changeset
50 char h_edit;
0198655f2552 Added sources
boisy
parents:
diff changeset
51 char h_spare;
0198655f2552 Added sources
boisy
parents:
diff changeset
52 unsigned h_glbl;
0198655f2552 Added sources
boisy
parents:
diff changeset
53 unsigned h_dglbl;
0198655f2552 Added sources
boisy
parents:
diff changeset
54 unsigned h_data;
0198655f2552 Added sources
boisy
parents:
diff changeset
55 unsigned h_ddata;
0198655f2552 Added sources
boisy
parents:
diff changeset
56 unsigned h_ocode;
0198655f2552 Added sources
boisy
parents:
diff changeset
57 unsigned h_stack;
0198655f2552 Added sources
boisy
parents:
diff changeset
58 unsigned h_entry;
0198655f2552 Added sources
boisy
parents:
diff changeset
59 } binhead;
0198655f2552 Added sources
boisy
parents:
diff changeset
60
0198655f2552 Added sources
boisy
parents:
diff changeset
61 #define MAXSOURCE 20
0198655f2552 Added sources
boisy
parents:
diff changeset
62 #define puts(s) fputs(s,stdout)
0198655f2552 Added sources
boisy
parents:
diff changeset
63 #define mc(c) ((c)&0xff)
0198655f2552 Added sources
boisy
parents:
diff changeset
64
0198655f2552 Added sources
boisy
parents:
diff changeset
65 #define DEF 1
0198655f2552 Added sources
boisy
parents:
diff changeset
66 #define REF 2
0198655f2552 Added sources
boisy
parents:
diff changeset
67
0198655f2552 Added sources
boisy
parents:
diff changeset
68 direct char *snames[MAXSOURCE],*fname;
0198655f2552 Added sources
boisy
parents:
diff changeset
69 direct int scount;
0198655f2552 Added sources
boisy
parents:
diff changeset
70 direct int gflag,rflag,oflag;
0198655f2552 Added sources
boisy
parents:
diff changeset
71
0198655f2552 Added sources
boisy
parents:
diff changeset
72 binhead hd;
0198655f2552 Added sources
boisy
parents:
diff changeset
73 FILE *in;
0198655f2552 Added sources
boisy
parents:
diff changeset
74
0198655f2552 Added sources
boisy
parents:
diff changeset
75 main(argc,argv)
0198655f2552 Added sources
boisy
parents:
diff changeset
76 int argc;
0198655f2552 Added sources
boisy
parents:
diff changeset
77 char **argv;
0198655f2552 Added sources
boisy
parents:
diff changeset
78 {
0198655f2552 Added sources
boisy
parents:
diff changeset
79
0198655f2552 Added sources
boisy
parents:
diff changeset
80 register char *p;
0198655f2552 Added sources
boisy
parents:
diff changeset
81
0198655f2552 Added sources
boisy
parents:
diff changeset
82 while (--argc>0) {
0198655f2552 Added sources
boisy
parents:
diff changeset
83 if(*(p=*++argv)=='-') {
0198655f2552 Added sources
boisy
parents:
diff changeset
84 while(*++p) switch(*p) {
0198655f2552 Added sources
boisy
parents:
diff changeset
85 case 'g': gflag=1; break;
0198655f2552 Added sources
boisy
parents:
diff changeset
86 case 'r': rflag=1; break;
0198655f2552 Added sources
boisy
parents:
diff changeset
87 case 'o': oflag=1; break;
0198655f2552 Added sources
boisy
parents:
diff changeset
88 case 'a': gflag=rflag=oflag=1; break;
0198655f2552 Added sources
boisy
parents:
diff changeset
89 default: error("unknown option -%c",*p);
0198655f2552 Added sources
boisy
parents:
diff changeset
90 }
0198655f2552 Added sources
boisy
parents:
diff changeset
91 done: ;
0198655f2552 Added sources
boisy
parents:
diff changeset
92 }
0198655f2552 Added sources
boisy
parents:
diff changeset
93 else {
0198655f2552 Added sources
boisy
parents:
diff changeset
94 if(scount==MAXSOURCE) error(0,"too many source files");
0198655f2552 Added sources
boisy
parents:
diff changeset
95 snames[scount++]=*argv;
0198655f2552 Added sources
boisy
parents:
diff changeset
96 }
0198655f2552 Added sources
boisy
parents:
diff changeset
97 }
0198655f2552 Added sources
boisy
parents:
diff changeset
98 pass1();
0198655f2552 Added sources
boisy
parents:
diff changeset
99 }
0198655f2552 Added sources
boisy
parents:
diff changeset
100
0198655f2552 Added sources
boisy
parents:
diff changeset
101 pass1()
0198655f2552 Added sources
boisy
parents:
diff changeset
102 {
0198655f2552 Added sources
boisy
parents:
diff changeset
103 int count;
0198655f2552 Added sources
boisy
parents:
diff changeset
104
0198655f2552 Added sources
boisy
parents:
diff changeset
105 if(scount == 0)
0198655f2552 Added sources
boisy
parents:
diff changeset
106 return;
0198655f2552 Added sources
boisy
parents:
diff changeset
107
0198655f2552 Added sources
boisy
parents:
diff changeset
108 for(count=0; count<scount; ++count) {
0198655f2552 Added sources
boisy
parents:
diff changeset
109 fname = snames[count];
0198655f2552 Added sources
boisy
parents:
diff changeset
110 if((in = fopen(fname,"r")) == NULL) {
0198655f2552 Added sources
boisy
parents:
diff changeset
111 printf("can't open '%s'",fname);
0198655f2552 Added sources
boisy
parents:
diff changeset
112 continue;
0198655f2552 Added sources
boisy
parents:
diff changeset
113 }
0198655f2552 Added sources
boisy
parents:
diff changeset
114
0198655f2552 Added sources
boisy
parents:
diff changeset
115 for(;;) {
0198655f2552 Added sources
boisy
parents:
diff changeset
116 if(fread(&hd,sizeof(hd),1,in) == 0)
0198655f2552 Added sources
boisy
parents:
diff changeset
117 break;
0198655f2552 Added sources
boisy
parents:
diff changeset
118
0198655f2552 Added sources
boisy
parents:
diff changeset
119 if(hd.h_sync != ROFSYNC) {
0198655f2552 Added sources
boisy
parents:
diff changeset
120 printf("'%s' is not a relocatable module",fname);
0198655f2552 Added sources
boisy
parents:
diff changeset
121 break;
0198655f2552 Added sources
boisy
parents:
diff changeset
122 }
0198655f2552 Added sources
boisy
parents:
diff changeset
123
0198655f2552 Added sources
boisy
parents:
diff changeset
124 showhead();
0198655f2552 Added sources
boisy
parents:
diff changeset
125 showglobs();
0198655f2552 Added sources
boisy
parents:
diff changeset
126
0198655f2552 Added sources
boisy
parents:
diff changeset
127 /* skip code and initialized data */
0198655f2552 Added sources
boisy
parents:
diff changeset
128 fseek(in,(long)(hd.h_ocode + hd.h_ddata + hd.h_data),1);
0198655f2552 Added sources
boisy
parents:
diff changeset
129
0198655f2552 Added sources
boisy
parents:
diff changeset
130 showrefs();
0198655f2552 Added sources
boisy
parents:
diff changeset
131 showlcls();
0198655f2552 Added sources
boisy
parents:
diff changeset
132
0198655f2552 Added sources
boisy
parents:
diff changeset
133 }
0198655f2552 Added sources
boisy
parents:
diff changeset
134 fclose(in);
0198655f2552 Added sources
boisy
parents:
diff changeset
135 }
0198655f2552 Added sources
boisy
parents:
diff changeset
136 }
0198655f2552 Added sources
boisy
parents:
diff changeset
137
0198655f2552 Added sources
boisy
parents:
diff changeset
138 showhead()
0198655f2552 Added sources
boisy
parents:
diff changeset
139 {
0198655f2552 Added sources
boisy
parents:
diff changeset
140 int c;
0198655f2552 Added sources
boisy
parents:
diff changeset
141
0198655f2552 Added sources
boisy
parents:
diff changeset
142 puts("\nModule name: ");
0198655f2552 Added sources
boisy
parents:
diff changeset
143 while(c=getc(in))
0198655f2552 Added sources
boisy
parents:
diff changeset
144 putchar(c);
0198655f2552 Added sources
boisy
parents:
diff changeset
145 if(ferror(in)) ferr(fname);
0198655f2552 Added sources
boisy
parents:
diff changeset
146
0198655f2552 Added sources
boisy
parents:
diff changeset
147 printf("\nTyLa/RvAt: %02x/%02x\n",mc(hd.h_tylan>>8),mc(hd.h_tylan));
0198655f2552 Added sources
boisy
parents:
diff changeset
148 printf("Asm valid: %s\n",hd.h_valid ? "No" : "Yes");
0198655f2552 Added sources
boisy
parents:
diff changeset
149 printf("Create date: %.3s %2d, %4d %02d:%02d\n",
0198655f2552 Added sources
boisy
parents:
diff changeset
150 &("JanFebMarAprMayJunJulAugSepOctNovDec"[(mc(hd.h_date[1])-1)*3]),
0198655f2552 Added sources
boisy
parents:
diff changeset
151 mc(hd.h_date[2]),1900+mc(hd.h_date[0]),
0198655f2552 Added sources
boisy
parents:
diff changeset
152 mc(hd.h_date[3]),mc(hd.h_date[4]));
0198655f2552 Added sources
boisy
parents:
diff changeset
153 printf("Edition: %2d\n",hd.h_edit);
0198655f2552 Added sources
boisy
parents:
diff changeset
154 puts(" Section Init Uninit\n");
0198655f2552 Added sources
boisy
parents:
diff changeset
155 printf(" Code: %04x\n",hd.h_ocode);
0198655f2552 Added sources
boisy
parents:
diff changeset
156 printf(" DP: %02x %02x\n",hd.h_ddata,hd.h_dglbl);
0198655f2552 Added sources
boisy
parents:
diff changeset
157 printf(" Data: %04x %04x\n",hd.h_data,hd.h_glbl);
0198655f2552 Added sources
boisy
parents:
diff changeset
158 printf(" Stack: %04x\n",hd.h_stack);
0198655f2552 Added sources
boisy
parents:
diff changeset
159 printf("Entry point: %04x\n",hd.h_entry);
0198655f2552 Added sources
boisy
parents:
diff changeset
160 }
0198655f2552 Added sources
boisy
parents:
diff changeset
161 showglobs()
0198655f2552 Added sources
boisy
parents:
diff changeset
162 {
0198655f2552 Added sources
boisy
parents:
diff changeset
163 register unsigned count,offset;
0198655f2552 Added sources
boisy
parents:
diff changeset
164 char sym[SYMLEN+1],flag;
0198655f2552 Added sources
boisy
parents:
diff changeset
165
0198655f2552 Added sources
boisy
parents:
diff changeset
166 count=getw(in); /* global def count */
0198655f2552 Added sources
boisy
parents:
diff changeset
167 if(gflag)
0198655f2552 Added sources
boisy
parents:
diff changeset
168 printf("\n%u global symbols defined:\n",count);
0198655f2552 Added sources
boisy
parents:
diff changeset
169
0198655f2552 Added sources
boisy
parents:
diff changeset
170 while(count--) {
0198655f2552 Added sources
boisy
parents:
diff changeset
171 getname(sym);
0198655f2552 Added sources
boisy
parents:
diff changeset
172 flag=getc(in);
0198655f2552 Added sources
boisy
parents:
diff changeset
173 offset=getw(in);
0198655f2552 Added sources
boisy
parents:
diff changeset
174 if(gflag) {
0198655f2552 Added sources
boisy
parents:
diff changeset
175 printf(" %9s %04x ",sym,offset);
0198655f2552 Added sources
boisy
parents:
diff changeset
176 ftext(flag,DEF);
0198655f2552 Added sources
boisy
parents:
diff changeset
177 }
0198655f2552 Added sources
boisy
parents:
diff changeset
178 }
0198655f2552 Added sources
boisy
parents:
diff changeset
179 }
0198655f2552 Added sources
boisy
parents:
diff changeset
180
0198655f2552 Added sources
boisy
parents:
diff changeset
181 getname(s)
0198655f2552 Added sources
boisy
parents:
diff changeset
182 register char *s;
0198655f2552 Added sources
boisy
parents:
diff changeset
183 {
0198655f2552 Added sources
boisy
parents:
diff changeset
184 while(*s++ = getc(in));
0198655f2552 Added sources
boisy
parents:
diff changeset
185 *s = '\0';
0198655f2552 Added sources
boisy
parents:
diff changeset
186 if(ferror(in)) ferr(fname);
0198655f2552 Added sources
boisy
parents:
diff changeset
187 }
0198655f2552 Added sources
boisy
parents:
diff changeset
188
0198655f2552 Added sources
boisy
parents:
diff changeset
189 ftext(c,ref)
0198655f2552 Added sources
boisy
parents:
diff changeset
190 char c;
0198655f2552 Added sources
boisy
parents:
diff changeset
191 int ref;
0198655f2552 Added sources
boisy
parents:
diff changeset
192 {
0198655f2552 Added sources
boisy
parents:
diff changeset
193
0198655f2552 Added sources
boisy
parents:
diff changeset
194 printf("(%02x) ",mc(c));
0198655f2552 Added sources
boisy
parents:
diff changeset
195 if(ref & REF) {
0198655f2552 Added sources
boisy
parents:
diff changeset
196 if(c & CODLOC)
0198655f2552 Added sources
boisy
parents:
diff changeset
197 puts("in code");
0198655f2552 Added sources
boisy
parents:
diff changeset
198 else puts(c & DIRLOC ? "in dp data" : "in non-dp data");
0198655f2552 Added sources
boisy
parents:
diff changeset
199
0198655f2552 Added sources
boisy
parents:
diff changeset
200 puts(c & LOC1BYT ? "/byte" : "/word");
0198655f2552 Added sources
boisy
parents:
diff changeset
201 if(c & NEGMASK)
0198655f2552 Added sources
boisy
parents:
diff changeset
202 puts("/neg");
0198655f2552 Added sources
boisy
parents:
diff changeset
203 if(c & RELATIVE)
0198655f2552 Added sources
boisy
parents:
diff changeset
204 puts("/pcr");
0198655f2552 Added sources
boisy
parents:
diff changeset
205 }
0198655f2552 Added sources
boisy
parents:
diff changeset
206 if(ref & DEF) {
0198655f2552 Added sources
boisy
parents:
diff changeset
207 if(ref & REF)
0198655f2552 Added sources
boisy
parents:
diff changeset
208 puts(" - ");
0198655f2552 Added sources
boisy
parents:
diff changeset
209 if(c & CODENT)
0198655f2552 Added sources
boisy
parents:
diff changeset
210 puts("to code");
0198655f2552 Added sources
boisy
parents:
diff changeset
211 else {
0198655f2552 Added sources
boisy
parents:
diff changeset
212 puts(c & DIRENT ? "to dp" : "to non-dp");
0198655f2552 Added sources
boisy
parents:
diff changeset
213 puts(c & INIENT ? " data" : " bss");
0198655f2552 Added sources
boisy
parents:
diff changeset
214 }
0198655f2552 Added sources
boisy
parents:
diff changeset
215 }
0198655f2552 Added sources
boisy
parents:
diff changeset
216 putchar('\n');
0198655f2552 Added sources
boisy
parents:
diff changeset
217 }
0198655f2552 Added sources
boisy
parents:
diff changeset
218 showrefs()
0198655f2552 Added sources
boisy
parents:
diff changeset
219 {
0198655f2552 Added sources
boisy
parents:
diff changeset
220 register unsigned count,rcount;
0198655f2552 Added sources
boisy
parents:
diff changeset
221 def_ref ref;
0198655f2552 Added sources
boisy
parents:
diff changeset
222 char sym[SYMLEN+1];
0198655f2552 Added sources
boisy
parents:
diff changeset
223 int fflag;
0198655f2552 Added sources
boisy
parents:
diff changeset
224
0198655f2552 Added sources
boisy
parents:
diff changeset
225 count=getw(in);
0198655f2552 Added sources
boisy
parents:
diff changeset
226 if(rflag)
0198655f2552 Added sources
boisy
parents:
diff changeset
227 printf("\n%u external references:\n",count);
0198655f2552 Added sources
boisy
parents:
diff changeset
228
0198655f2552 Added sources
boisy
parents:
diff changeset
229 while(count--) {
0198655f2552 Added sources
boisy
parents:
diff changeset
230 getname(sym);
0198655f2552 Added sources
boisy
parents:
diff changeset
231 rcount=getw(in);
0198655f2552 Added sources
boisy
parents:
diff changeset
232 if(rflag)
0198655f2552 Added sources
boisy
parents:
diff changeset
233 printf(" %9s ",sym);
0198655f2552 Added sources
boisy
parents:
diff changeset
234 fflag=0;
0198655f2552 Added sources
boisy
parents:
diff changeset
235 while(rcount--) {
0198655f2552 Added sources
boisy
parents:
diff changeset
236 fread(&ref,sizeof(ref),1,in);
0198655f2552 Added sources
boisy
parents:
diff changeset
237 if(ferror(in)) ferr(fname);
0198655f2552 Added sources
boisy
parents:
diff changeset
238 if(rflag && oflag) {
0198655f2552 Added sources
boisy
parents:
diff changeset
239 if(fflag)
0198655f2552 Added sources
boisy
parents:
diff changeset
240 puts(" ");
0198655f2552 Added sources
boisy
parents:
diff changeset
241 else fflag=1;
0198655f2552 Added sources
boisy
parents:
diff changeset
242 printf("%04x ",ref.r_offset);
0198655f2552 Added sources
boisy
parents:
diff changeset
243 ftext(ref.r_flag,REF);
0198655f2552 Added sources
boisy
parents:
diff changeset
244 }
0198655f2552 Added sources
boisy
parents:
diff changeset
245 }
0198655f2552 Added sources
boisy
parents:
diff changeset
246 if(rflag && !oflag)
0198655f2552 Added sources
boisy
parents:
diff changeset
247 putchar('\n');
0198655f2552 Added sources
boisy
parents:
diff changeset
248 }
0198655f2552 Added sources
boisy
parents:
diff changeset
249 }
0198655f2552 Added sources
boisy
parents:
diff changeset
250 showlcls()
0198655f2552 Added sources
boisy
parents:
diff changeset
251 {
0198655f2552 Added sources
boisy
parents:
diff changeset
252 register unsigned count;
0198655f2552 Added sources
boisy
parents:
diff changeset
253 def_ref ref;
0198655f2552 Added sources
boisy
parents:
diff changeset
254
0198655f2552 Added sources
boisy
parents:
diff changeset
255 count=getw(in);
0198655f2552 Added sources
boisy
parents:
diff changeset
256 if(oflag)
0198655f2552 Added sources
boisy
parents:
diff changeset
257 printf("\n%u local references\n",count);
0198655f2552 Added sources
boisy
parents:
diff changeset
258
0198655f2552 Added sources
boisy
parents:
diff changeset
259 while(count--) {
0198655f2552 Added sources
boisy
parents:
diff changeset
260 fread(&ref,sizeof(ref),1,in);
0198655f2552 Added sources
boisy
parents:
diff changeset
261 if(ferror(in)) ferr(fname);
0198655f2552 Added sources
boisy
parents:
diff changeset
262 if(oflag) {
0198655f2552 Added sources
boisy
parents:
diff changeset
263 printf(" %04x ",ref.r_offset);
0198655f2552 Added sources
boisy
parents:
diff changeset
264 ftext(ref.r_flag,DEF | REF);
0198655f2552 Added sources
boisy
parents:
diff changeset
265 }
0198655f2552 Added sources
boisy
parents:
diff changeset
266 }
0198655f2552 Added sources
boisy
parents:
diff changeset
267 }
0198655f2552 Added sources
boisy
parents:
diff changeset
268 error(s1,s2,s3,s4)
0198655f2552 Added sources
boisy
parents:
diff changeset
269 {
0198655f2552 Added sources
boisy
parents:
diff changeset
270 fprintf(stderr,"rdump: ");
0198655f2552 Added sources
boisy
parents:
diff changeset
271 fprintf(stderr,s1,s2,s3,s4);
0198655f2552 Added sources
boisy
parents:
diff changeset
272 putc('\n',stderr);
0198655f2552 Added sources
boisy
parents:
diff changeset
273 exit(1);
0198655f2552 Added sources
boisy
parents:
diff changeset
274 }
0198655f2552 Added sources
boisy
parents:
diff changeset
275 ferr(s)
0198655f2552 Added sources
boisy
parents:
diff changeset
276 {
0198655f2552 Added sources
boisy
parents:
diff changeset
277 error("error reading '%s'",s);
0198655f2552 Added sources
boisy
parents:
diff changeset
278 }