From d921c1d86010bd35ee54cab2a1a760d725cfec1a Mon Sep 17 00:00:00 2001 From: Eric Date: Thu, 29 May 2025 01:24:37 +0200 Subject: [PATCH] remove getsxts for better function readb Decoding input is read faster now. With this, all options have been tuned to a reasonable degree. --- input.c | 27 ++++++++++++++++----------- input.h | 2 +- main.c | 2 +- 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/input.c b/input.c index aef154f..3a5e06a 100644 --- a/input.c +++ b/input.c @@ -1,19 +1,24 @@ #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; + unsigned char *send; + unsigned char *sbeg; + unsigned char *l, *r; + + sbeg = s; + send = s + fread(s, sizeof(*s), slen, fp); + for (l = r = sbeg; r < send; ++r) + if (*r != '\n') + *l++ = *r; + 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; } diff --git a/input.h b/input.h index ca98ef2..901b2c4 100644 --- a/input.h +++ b/input.h @@ -4,6 +4,6 @@ #include int -getsxts(FILE *fp, unsigned char *s); +readb(FILE *fp, unsigned char *s, int slen); #endif diff --git a/main.c b/main.c index 66232cd..d7d8530 100644 --- a/main.c +++ b/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); }