Decoding input is read faster now. With this, all options have been tuned to a reasonable degree.
29 lines
598 B
C
29 lines
598 B
C
#include "input.h"
|
|
|
|
#define PADDING '='
|
|
|
|
int
|
|
readb(FILE *fp, unsigned char *s, int slen)
|
|
{
|
|
int read, tread;
|
|
unsigned char *send, *sbeg;
|
|
unsigned char *l, *r;
|
|
|
|
read = tread = 0;
|
|
sbeg = l = r = s;
|
|
while (tread < slen && (read = fread(l, sizeof(*l), slen-tread, fp))) {
|
|
tread += read;
|
|
send = s + tread;
|
|
for (r = l; r < send; ++r)
|
|
if (*r != '\n')
|
|
*l++ = *r;
|
|
tread -= r - l;
|
|
if (l > sbeg) {
|
|
for (--l; *l == PADDING; --l)
|
|
;
|
|
++l;
|
|
}
|
|
}
|
|
|
|
return l-sbeg;
|
|
}
|