22 |
|
|
23 |
|
|
24 |
|
void |
25 |
< |
putstr(s, fp) /* write null-terminated string to fp */ |
26 |
< |
register char *s; |
27 |
< |
register FILE *fp; |
25 |
> |
putstr( /* write null-terminated string to fp */ |
26 |
> |
char *s, |
27 |
> |
FILE *fp |
28 |
> |
) |
29 |
|
{ |
30 |
|
do |
31 |
|
putc(*s, fp); |
34 |
|
|
35 |
|
|
36 |
|
void |
37 |
< |
putint(i, siz, fp) /* write a siz-byte integer to fp */ |
38 |
< |
long i; |
39 |
< |
register int siz; |
40 |
< |
register FILE *fp; |
37 |
> |
putint( /* write a siz-byte integer to fp */ |
38 |
> |
long i, |
39 |
> |
int siz, |
40 |
> |
FILE *fp |
41 |
> |
) |
42 |
|
{ |
43 |
|
while (siz--) |
44 |
|
putc((int)(i>>(siz<<3) & 0xff), fp); |
46 |
|
|
47 |
|
|
48 |
|
void |
49 |
< |
putflt(f, fp) /* put out floating point number */ |
50 |
< |
double f; |
51 |
< |
FILE *fp; |
49 |
> |
putflt( /* put out floating point number */ |
50 |
> |
double f, |
51 |
> |
FILE *fp |
52 |
> |
) |
53 |
|
{ |
54 |
|
long m; |
55 |
|
int e; |
67 |
|
} |
68 |
|
|
69 |
|
|
70 |
+ |
int |
71 |
+ |
putbinary( /* fwrite() replacement for small objects */ |
72 |
+ |
char *s, |
73 |
+ |
int elsiz, |
74 |
+ |
int nel, |
75 |
+ |
FILE *fp) |
76 |
+ |
{ |
77 |
+ |
int nbytes = elsiz*nel; |
78 |
+ |
|
79 |
+ |
if (nbytes > 512) |
80 |
+ |
return(fwrite(s, elsiz, nel, fp)); |
81 |
+ |
|
82 |
+ |
while (nbytes-- > 0) |
83 |
+ |
putc(*s++, fp); |
84 |
+ |
|
85 |
+ |
return(nel); |
86 |
+ |
} |
87 |
+ |
|
88 |
+ |
|
89 |
|
char * |
90 |
< |
getstr(s, fp) /* get null-terminated string */ |
91 |
< |
char *s; |
92 |
< |
register FILE *fp; |
90 |
> |
getstr( /* get null-terminated string */ |
91 |
> |
char *s, |
92 |
> |
FILE *fp |
93 |
> |
) |
94 |
|
{ |
95 |
< |
register char *cp; |
96 |
< |
register int c; |
95 |
> |
char *cp; |
96 |
> |
int c; |
97 |
|
|
98 |
|
cp = s; |
99 |
|
while ((c = getc(fp)) != EOF) |
105 |
|
|
106 |
|
|
107 |
|
long |
108 |
< |
getint(siz, fp) /* get a siz-byte integer */ |
109 |
< |
int siz; |
110 |
< |
register FILE *fp; |
108 |
> |
getint( /* get a siz-byte integer */ |
109 |
> |
int siz, |
110 |
> |
FILE *fp |
111 |
> |
) |
112 |
|
{ |
113 |
< |
register int c; |
114 |
< |
register long r; |
113 |
> |
int c; |
114 |
> |
long r; |
115 |
|
|
116 |
|
if ((c = getc(fp)) == EOF) |
117 |
|
return(EOF); |
127 |
|
|
128 |
|
|
129 |
|
double |
130 |
< |
getflt(fp) /* get a floating point number */ |
131 |
< |
FILE *fp; |
130 |
> |
getflt( /* get a floating point number */ |
131 |
> |
FILE *fp |
132 |
> |
) |
133 |
|
{ |
134 |
|
long l; |
135 |
|
double d; |
136 |
|
|
137 |
|
l = getint(4, fp); |
138 |
+ |
if (l == EOF && feof(fp)) /* EOF? */ |
139 |
+ |
return((double)EOF); |
140 |
|
if (l == 0) { |
141 |
|
getc(fp); /* exactly zero -- ignore exponent */ |
142 |
|
return(0.0); |
143 |
|
} |
144 |
|
d = (l + (l > 0 ? .5 : -.5)) * (1./0x7fffffff); |
145 |
|
return(ldexp(d, (int)getint(1, fp))); |
146 |
+ |
} |
147 |
+ |
|
148 |
+ |
|
149 |
+ |
int |
150 |
+ |
getbinary( /* fread() replacement for small objects */ |
151 |
+ |
char *s, |
152 |
+ |
int elsiz, |
153 |
+ |
int nel, |
154 |
+ |
FILE *fp) |
155 |
+ |
{ |
156 |
+ |
int nbytes = elsiz*nel; |
157 |
+ |
int c; |
158 |
+ |
|
159 |
+ |
if (nbytes > 512) |
160 |
+ |
return(fread(s, elsiz, nel, fp)); |
161 |
+ |
|
162 |
+ |
while (nbytes-- > 0) { |
163 |
+ |
if ((c = getc(fp)) == EOF) |
164 |
+ |
return((elsiz*nel - nbytes)/elsiz); |
165 |
+ |
*s++ = c; |
166 |
+ |
} |
167 |
+ |
return(nel); |
168 |
|
} |