chiark / gitweb /
REORG Delete everything that's not innduct or build system or changed for innduct
[innduct.git] / frontends / decode.c
diff --git a/frontends/decode.c b/frontends/decode.c
deleted file mode 100644 (file)
index a862ccf..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
-**  Decode seven-bit input into full binary output.
-**  From @(#)decode.c 1.3 5/15/85, distributed with B2.11 News.
-**
-**  Collect runs of 12 seven-bit characters.  Combine them in pairs to
-**  make six 13-bit characters.  Extract the top bit of each pair to make
-**  a 13th six-bit character, and split the remaining six 12-bit
-**  characters to form 12 six-bit characters.  Collect four six-bit
-**  characters and convert it to three eight-bit characters.
-**
-**  Got that?  All the remaining work in this program is to get the
-**  ending conditions right.
-*/
-
-#include "config.h"
-#include "clibrary.h"
-
-#include "inn/messages.h"
-
-
-/*
-**  These characters can't appear in normal output, so we use them to
-**  mark that the data that follows is the terminator.  The character
-**  immediately following this pair is the length of the terminator (which
-**  otherwise might be indeterminable)
-*/
-#define ENDMARK1       ((90 * 91 + 90) / 91)
-#define ENDMARK2       ((90 * 91 + 90) % 91)
-
-
-static char    Buffer[4];
-static int     count;
-
-
-static void
-pack6(int n, int last)
-{
-    char       *q;
-    int        i;
-    char               b3[3];
-
-    i = 3;
-    if (last && (i = Buffer[n - 1]) >= 3) {
-       /* Do the best we can. */
-        warn("badly-terminated file");
-       i = 3;
-    }
-
-    b3[0] = (Buffer[0] << 2) | ((Buffer[1] >> 4) & 0x03);
-    b3[1] = (Buffer[1] << 4) | ((Buffer[2] >> 2) & 0x0F);
-    b3[2] = (Buffer[2] << 6) | ( Buffer[3]       & 0x3F);
-    for (q = b3; --i >= 0; )
-       putchar(*q++);
-}
-
-
-static void
-pack12(char *p, int n, int last)
-{
-    char       *q;
-    int        c13;
-    int        c;
-    int        i;
-    char               b13[13];
-    char               b3[3];
-
-    for (q = b13, c13 = 0, i = 0; i < n; i += 2) {
-       c = *p++ * 91;
-       c += *p++;
-       c13 <<= 1;
-       if (c & (1 << 12))
-           c13 |= 1;
-       *q++ = (c >> 6) & 0x3F;
-       *q++ = c & 0x3F;
-    }
-    *q++ = (char)c13;
-    if (last)
-       q = &b13[last];
-
-    for (p = b13, n = q - p, i = count, q = &Buffer[count]; --n > 0; ) {
-       *q++ = *p++;
-       if (++i == 4) {
-           /* Inline expansion of pack6. */
-           b3[0] = (Buffer[0] << 2) | ((Buffer[1] >> 4) & 0x03);
-           b3[1] = (Buffer[1] << 4) | ((Buffer[2] >> 2) & 0x0F);
-           b3[2] = (Buffer[2] << 6) | ( Buffer[3]       & 0x3F);
-           putchar(b3[0]);
-           putchar(b3[1]);
-           putchar(b3[2]);
-           i = 0;
-           q = Buffer;
-       }
-    }
-
-    /* The last octet. */
-    *q++ = *p++;
-    i++;
-
-    if (last || i == 4) {
-       pack6(i, last);
-       i = 0;
-    }
-
-    count = i;
-}
-
-
-int
-main(void)
-{
-    int        c;
-    char       *p;
-    int        i;
-    int        first;
-    int        cnt;
-    char               *base;
-    char               b12[12];
-    char               c12[12];
-
-    message_program_name = "decode";
-
-    base = p = b12;
-    for (i = 12, cnt = 0, first = 1; (c = getchar()) != EOF; ) {
-       if (c < ' ' || c >= ' ' + 91)
-            die("bad data");
-       if (i == 10 && p[-1] == ENDMARK1 && p[-2] == ENDMARK2) {
-           cnt = c - ' ';
-           i = 12;
-           p -= 2;
-           continue;
-       }
-       *p++ = c - ' ';
-       if (--i == 0) {
-           if (p == &b12[12]) {
-               if (!first)
-                   pack12(c12, 12, 0);
-               else
-                   first = 0;
-               base = p = c12;
-           }
-           else {
-               pack12(b12, 12, 0);
-               base = p = b12;
-           }
-           i = 12;
-       }
-    }
-
-    if (base == b12) {
-       if (!first)
-           pack12(c12, 12, i == 12 ? cnt : 0);
-    }
-    else
-       pack12(b12, 12, i == 12 ? cnt : 0);
-
-    if (i != 12)
-       pack12(base, 12 - i, cnt);
-
-    exit(0);
-    /* NOTREACHED */
-}