remove getsxts for better function readb
Decoding input is read faster now. With this, all options have been tuned to a reasonable degree.
This commit is contained in:
parent
0a4a98390d
commit
debab62506
3 changed files with 23 additions and 13 deletions
32
input.c
32
input.c
|
@ -1,19 +1,29 @@
|
|||
#include "input.h"
|
||||
|
||||
#define PADDING '='
|
||||
#define SXTETBUF 4
|
||||
|
||||
int
|
||||
getsxts(FILE *fp, unsigned char *s)
|
||||
readb(FILE *fp, unsigned char *s, int slen)
|
||||
{
|
||||
int c, n, pad;
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
n = pad = 0;
|
||||
while (n < SXTETBUF && (c = fgetc(fp)) != EOF && c != PADDING)
|
||||
if (c != '\n')
|
||||
s[n++] = c;
|
||||
while (n+pad < SXTETBUF)
|
||||
s[n+pad++] = PADDING;
|
||||
|
||||
return n;
|
||||
return l-sbeg;
|
||||
}
|
||||
|
|
2
input.h
2
input.h
|
@ -4,6 +4,6 @@
|
|||
#include <stdio.h>
|
||||
|
||||
int
|
||||
getsxts(FILE *fp, unsigned char *s);
|
||||
readb(FILE *fp, unsigned char *s, int slen);
|
||||
|
||||
#endif
|
||||
|
|
2
main.c
2
main.c
|
@ -53,7 +53,7 @@ main(int argc, char *argv[])
|
|||
exit(EXIT_FAILURE);
|
||||
}
|
||||
if (dec) {
|
||||
while ((n = getsxts((in) ? in : stdin, sbuf))) {
|
||||
while ((n = readb((in) ? in : stdin, sbuf, SXTETBUF))) {
|
||||
n = decode(sbuf, n, obuf, url);
|
||||
fwrite(obuf, sizeof(*obuf), n, (out) ? out : stdout);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue