remove buffer size dependency from input functions

This should've been part of 848c37, when buffers were unwired from input
functions. Now buffer size is also no longer supplied in function calls
but assumed. It is up to the caller to provide appropriately sized
buffers.
This commit is contained in:
Eric 2025-05-27 18:37:48 +02:00
parent b76c50a91b
commit fa5095133a
3 changed files with 16 additions and 14 deletions

14
input.c
View file

@ -1,29 +1,31 @@
#include "input.h" #include "input.h"
#define PADDING '=' #define PADDING '='
#define OCTETBUF 3
#define SXTETBUF 4
int int
getocts(FILE *fp, unsigned char *o, int olen) getocts(FILE *fp, unsigned char *o)
{ {
int c, n; int c, n;
n = 0; n = 0;
while (n < olen-1 && (c = fgetc(fp)) != EOF) while (n < OCTETBUF && (c = fgetc(fp)) != EOF)
o[n++] = c; o[n++] = c;
return n; return n;
} }
int int
getsxts(FILE *fp, unsigned char *s, int slen) getsxts(FILE *fp, unsigned char *s)
{ {
int c, n, pad; int c, n, pad;
n = pad = 0; n = pad = 0;
while (n < slen-1 && (c = fgetc(fp)) != EOF && c != PADDING) while (n < SXTETBUF && (c = fgetc(fp)) != EOF && c != PADDING)
if (c != '\n') if (c != '\n')
s[n++] = c; s[n++] = c;
while (n+pad < slen-1) while (n+pad < SXTETBUF)
s[n+pad++] = PADDING; s[n+pad++] = PADDING;
return n; return n;

View file

@ -4,9 +4,9 @@
#include <stdio.h> #include <stdio.h>
int int
getocts(FILE *fp, unsigned char *o, int olen); getocts(FILE *fp, unsigned char *o);
int int
getsxts(FILE *fp, unsigned char *s, int slen); getsxts(FILE *fp, unsigned char *s);
#endif #endif

12
main.c
View file

@ -4,11 +4,11 @@
#include "output.h" #include "output.h"
#include "encode.h" #include "encode.h"
#define OBUFSIZE 4 #define OCTETBUF 4
#define SBUFSIZE 5 #define SXTETBUF 5
unsigned char obuf[OBUFSIZE]; unsigned char obuf[OCTETBUF];
unsigned char sbuf[SBUFSIZE]; unsigned char sbuf[SXTETBUF];
int int
main(int argc, char *argv[]) main(int argc, char *argv[])
@ -51,12 +51,12 @@ main(int argc, char *argv[])
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
if (dec) { if (dec) {
while ((n = getsxts((argc >= 1) ? in : stdin, sbuf, SBUFSIZE))) { while ((n = getsxts((argc >= 1) ? in : stdin, sbuf))) {
n = decode(sbuf, n, obuf, url); n = decode(sbuf, n, obuf, url);
fwrite(obuf, sizeof(*obuf), n, (argc == 2) ? out : stdout); fwrite(obuf, sizeof(*obuf), n, (argc == 2) ? out : stdout);
} }
} else { } else {
while ((n = getocts((argc >= 1) ? in : stdin, obuf, OBUFSIZE))) { while ((n = getocts((argc >= 1) ? in : stdin, obuf))) {
if (wrp) { if (wrp) {
n = encode(obuf, n, sbuf, url); n = encode(obuf, n, sbuf, url);
l = printw((argc == 2) ? out : stdout, sbuf, n); l = printw((argc == 2) ? out : stdout, sbuf, n);