8 int main(int argc, char **argv)
12 char *decbuf, *encbuf;
14 char *(*decfn)(char *, size_t *);
15 char *(*encfn)(char *, size_t);
18 if(!strcmp(argv[1], "4")) {
20 } else if(!strcmp(argv[1], "5")) {
22 } else if(!strcmp(argv[1], "6")) {
24 } else if(!strcmp(argv[1], "8")) {
27 fprintf(stderr, "unknown decoding: %s\n", argv[1]);
30 if(!strcmp(argv[2], "4")) {
32 } else if(!strcmp(argv[2], "5")) {
34 } else if(!strcmp(argv[2], "6")) {
36 } else if(!strcmp(argv[2], "8")) {
39 fprintf(stderr, "unknown encoding: %s\n", argv[1]);
43 while((ret = read(0, buf + data, 24 - data)) >= 0) {
44 if(((data += ret) == 24) || (ret == 0)) {
46 decbuf = memcpy(smalloc(data), buf, data);
50 if((decbuf = decfn(buf, &buflen)) == NULL) {
51 fprintf(stderr, "invalid input\n");
56 encbuf = memcpy(smalloc(buflen), decbuf, buflen);
57 fwrite(encbuf, 1, buflen, stdout);
59 encbuf = encfn(decbuf, buflen);
60 buflen = strlen(encbuf);
61 if(linelen + buflen > 60) {
62 fwrite(encbuf, 1, 60 - linelen, stdout);
63 fwrite("\n", 1, 1, stdout);
64 buflen -= 60 - linelen;
66 fwrite(encbuf, 1, buflen, stdout);