Compare commits
No commits in common. "a90a6901ccdbbd6b4b3c51fa08ce6a36f57bb1f3" and "d921c1d86010bd35ee54cab2a1a760d725cfec1a" have entirely different histories.
a90a6901cc
...
d921c1d860
1 changed files with 11 additions and 16 deletions
15
input.c
15
input.c
|
@ -5,25 +5,20 @@
|
||||||
int
|
int
|
||||||
readb(FILE *fp, unsigned char *s, int slen)
|
readb(FILE *fp, unsigned char *s, int slen)
|
||||||
{
|
{
|
||||||
int read, tread;
|
unsigned char *send;
|
||||||
unsigned char *send, *sbeg;
|
unsigned char *sbeg;
|
||||||
unsigned char *l, *r;
|
unsigned char *l, *r;
|
||||||
|
|
||||||
read = tread = 0;
|
sbeg = s;
|
||||||
sbeg = l = r = s;
|
send = s + fread(s, sizeof(*s), slen, fp);
|
||||||
while (tread < slen && (read = fread(l, sizeof(*l), slen-tread, fp))) {
|
for (l = r = sbeg; r < send; ++r)
|
||||||
tread += read;
|
|
||||||
send = s + tread;
|
|
||||||
for (r = l; r < send; ++r)
|
|
||||||
if (*r != '\n')
|
if (*r != '\n')
|
||||||
*l++ = *r;
|
*l++ = *r;
|
||||||
tread -= r - l;
|
|
||||||
if (l > sbeg) {
|
if (l > sbeg) {
|
||||||
for (--l; *l == PADDING; --l)
|
for (--l; *l == PADDING; --l)
|
||||||
;
|
;
|
||||||
++l;
|
++l;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return l-sbeg;
|
return l-sbeg;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue