git: 9d68da4ee855 - main - bintrans: make mmencode.c compilable

From: Piotr Pawel Stefaniak <pstef_at_FreeBSD.org>
Date: Sun, 24 Apr 2022 06:24:22 UTC
The branch main has been updated by pstef:

URL: https://cgit.FreeBSD.org/src/commit/?id=9d68da4ee8555824ed6b9b042a253b4008ee77d2

commit 9d68da4ee8555824ed6b9b042a253b4008ee77d2
Author:     Piotr Pawel Stefaniak <pstef@FreeBSD.org>
AuthorDate: 2022-04-15 12:26:31 +0000
Commit:     Piotr Pawel Stefaniak <pstef@FreeBSD.org>
CommitDate: 2022-04-24 06:19:48 +0000

    bintrans: make mmencode.c compilable
    
    Also remove MSDOS code, base64 code and commented out code.
---
 usr.bin/bintrans/mmencode.c | 294 ++------------------------------------------
 1 file changed, 9 insertions(+), 285 deletions(-)

diff --git a/usr.bin/bintrans/mmencode.c b/usr.bin/bintrans/mmencode.c
index 335fc5e76c1c..511e470150bb 100644
--- a/usr.bin/bintrans/mmencode.c
+++ b/usr.bin/bintrans/mmencode.c
@@ -13,108 +13,11 @@ OF THIS MATERIAL FOR ANY PURPOSE.  IT IS PROVIDED "AS IS",
 WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES.
 */
 #include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
 #include <ctype.h>
-#include <config.h>
 
-extern char *index();
-static char basis_64[] =
-   "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-
-static char index_64[128] = {
-    -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
-    -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
-    -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,62, -1,-1,-1,63,
-    52,53,54,55, 56,57,58,59, 60,61,-1,-1, -1,-1,-1,-1,
-    -1, 0, 1, 2,  3, 4, 5, 6,  7, 8, 9,10, 11,12,13,14,
-    15,16,17,18, 19,20,21,22, 23,24,25,-1, -1,-1,-1,-1,
-    -1,26,27,28, 29,30,31,32, 33,34,35,36, 37,38,39,40,
-    41,42,43,44, 45,46,47,48, 49,50,51,-1, -1,-1,-1,-1
-};
-
-#define char64(c)  (((c) < 0 || (c) > 127) ? -1 : index_64[(c)])
-
-/*
-char64(c)
-char c;
-{
-    char *s = (char *) index(basis_64, c);
-    if (s) return(s-basis_64);
-    return(-1);
-}
-*/
-
-/* the following gets a character, but fakes it properly into two chars if there's a newline character */
-static int InNewline=0;
-
-int nextcharin(infile, PortableNewlines)
-FILE *infile;
-int PortableNewlines;
-{
-    int c;
-
-#ifndef NEWLINE_CHAR
-    return(getc(infile));
-#else
-    if (!PortableNewlines) return(getc(infile));
-    if (InNewline) {
-        InNewline = 0;
-        return(10); /* LF */
-    }
-    c = getc(infile);
-    if (c == NEWLINE_CHAR) {
-        InNewline = 1;
-        return(13); /* CR */
-    }
-    return(c);
-#endif
-}
-
-to64(infile, outfile, PortableNewlines) 
-FILE *infile, *outfile;
-int PortableNewlines;
-{
-    int c1, c2, c3, ct=0;
-    InNewline = 0; /* always reset it */
-    while ((c1 = nextcharin(infile, PortableNewlines)) != EOF) {
-        c2 = nextcharin(infile, PortableNewlines);
-        if (c2 == EOF) {
-            output64chunk(c1, 0, 0, 2, outfile);
-        } else {
-            c3 = nextcharin(infile, PortableNewlines);
-            if (c3 == EOF) {
-                output64chunk(c1, c2, 0, 1, outfile);
-            } else {
-                output64chunk(c1, c2, c3, 0, outfile);
-            }
-        }
-        ct += 4;
-        if (ct > 71) {
-            putc('\n', outfile);
-            ct = 0;
-        }
-    }
-    if (ct) putc('\n', outfile);
-    fflush(outfile);
-}
-
-output64chunk(c1, c2, c3, pads, outfile)
-FILE *outfile;
-{
-    putc(basis_64[c1>>2], outfile);
-    putc(basis_64[((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4)], outfile);
-    if (pads == 2) {
-        putc('=', outfile);
-        putc('=', outfile);
-    } else if (pads) {
-        putc(basis_64[((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6)], outfile);
-        putc('=', outfile);
-    } else {
-        putc(basis_64[((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6)], outfile);
-        putc(basis_64[c3 & 0x3F], outfile);
-    }
-}
-
-PendingBoundary(s, Boundaries, BoundaryCt)
+int PendingBoundary(s, Boundaries, BoundaryCt)
 char *s;
 char **Boundaries;
 int *BoundaryCt;
@@ -134,118 +37,6 @@ int *BoundaryCt;
     return(0);
 }
 
-/* If we're in portable newline mode, we have to convert CRLF to the 
-    local newline convention on output */
-
-static int CRpending = 0;
-
-#ifdef NEWLINE_CHAR
-almostputc(c, outfile, PortableNewlines)
-int c;
-FILE *outfile;
-int PortableNewlines;
-{
-    if (CRpending) {
-        if (c == 10) {
-            putc(NEWLINE_CHAR, outfile);
-            CRpending = 0;
-        } else {
-            putc(13, outfile);
-	    if (c != 13) {
-            	putc(c, outfile);
-		CRpending = 0;
-	    }
-        }
-    } else {
-        if (PortableNewlines && c == 13) {
-            CRpending = 1;
-        } else {
-            putc(c, outfile);
-        }
-    }
-}
-#else
-almostputc(c, outfile, PortableNewlines)
-int c;
-FILE *outfile;
-int PortableNewlines;
-{
-    putc(c, outfile);
-}
-#endif
-
-from64(infile, outfile, boundaries, boundaryct, PortableNewlines) 
-FILE *infile, *outfile;
-char **boundaries;
-int *boundaryct;
-int PortableNewlines;
-{
-    int c1, c2, c3, c4;
-    int newline = 1, DataDone = 0;
-
-    /* always reinitialize */
-    CRpending = 0;
-    while ((c1 = getc(infile)) != EOF) {
-        if (isspace(c1)) {
-            if (c1 == '\n') {
-                newline = 1;
-            } else {
-                newline = 0;
-            }
-            continue;
-        }
-        if (newline && boundaries && c1 == '-') {
-            char Buf[200];
-            /* a dash is NOT base 64, so all bets are off if NOT a boundary */
-            ungetc(c1, infile);
-            fgets(Buf, sizeof(Buf), infile);
-            if (boundaries
-                 && (Buf[0] == '-')
-                 && (Buf[1] == '-')
-                 && PendingBoundary(Buf, boundaries, boundaryct)) {
-                return;
-            }
-            fprintf(stderr, "Ignoring unrecognized boundary line: %s\n", Buf);
-            continue;
-        }
-        if (DataDone) continue;
-        newline = 0;
-        do {
-            c2 = getc(infile);
-        } while (c2 != EOF && isspace(c2));
-        do {
-            c3 = getc(infile);
-        } while (c3 != EOF && isspace(c3));
-        do {
-            c4 = getc(infile);
-        } while (c4 != EOF && isspace(c4));
-        if (c2 == EOF || c3 == EOF || c4 == EOF) {
-            fprintf(stderr, "Warning: base64 decoder saw premature EOF!\n");
-            return;
-        }
-        if (c1 == '=' || c2 == '=') {
-            DataDone=1;
-            continue;
-        }
-        c1 = char64(c1);
-        c2 = char64(c2);
-        almostputc(((c1<<2) | ((c2&0x30)>>4)), outfile, PortableNewlines);
-        if (c3 == '=') {
-            DataDone = 1;
-        } else {
-            c3 = char64(c3);
-            almostputc((((c2&0XF) << 4) | ((c3&0x3C) >> 2)), outfile, PortableNewlines);
-            if (c4 == '=') {
-                DataDone = 1;
-            } else {
-                c4 = char64(c4);
-                almostputc((((c3&0x03) <<6) | c4), outfile, PortableNewlines);
-            }
-        }
-    }
-    if (CRpending) putc(13, outfile); /* Don't drop a lone trailing char 13 */
-}
-
 static char basis_hex[] = "0123456789ABCDEF";
 static char index_hex[128] = {
     -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
@@ -263,19 +54,7 @@ static char index_hex[128] = {
 /*  Since we're no longer ever calling it with anything signed, this should work: */
 #define hexchar(c)  (((c) > 127) ? -1 : index_hex[(c)])
 
-/*
-hexchar(c)
-char c;
-{
-    char *s;
-    if (islower(c)) c = toupper(c);
-    s = (char *) index(basis_hex, c);
-    if (s) return(s-basis_hex);
-    return(-1);
-}
-*/
-
-toqp(infile, outfile) 
+void toqp(infile, outfile) 
 FILE *infile, *outfile;
 {
     int c, ct=0, prevc=255;
@@ -350,7 +129,7 @@ FILE *infile, *outfile;
     }
 }
 
-fromqp(infile, outfile, boundaries, boundaryct) 
+void fromqp(infile, outfile, boundaries, boundaryct) 
 FILE *infile, *outfile;
 char **boundaries;
 int *boundaryct;
@@ -391,10 +170,6 @@ int *boundaryct;
                         putc(c1<<4 | c2, outfile);
                     }
                 } else {
-#ifdef MSDOS
-                    if (*s == '\n')
-                        putc('\r', outfile);	/* insert CR for binary-mode write */
-#endif
                     putc(*s, outfile);
                 }
             }
@@ -433,34 +208,13 @@ int *boundaryct;
     }    
 }
 
-/*
-Copyright (c) 1991 Bell Communications Research, Inc. (Bellcore)
-
-Permission to use, copy, modify, and distribute this material 
-for any purpose and without fee is hereby granted, provided 
-that the above copyright notice and this permission notice 
-appear in all copies, and that the name of Bellcore not be 
-used in advertising or publicity pertaining to this 
-material without the specific, prior written permission 
-of an authorized representative of Bellcore.  BELLCORE 
-MAKES NO REPRESENTATIONS ABOUT THE ACCURACY OR SUITABILITY 
-OF THIS MATERIAL FOR ANY PURPOSE.  IT IS PROVIDED "AS IS", 
-WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES.
-*/
-#include <stdio.h>
-#include <config.h>
-#ifdef MSDOS
-#include <fcntl.h>
-#endif
-
-#define BASE64 1
 #define QP 2 /* quoted-printable */
 
-main(argc, argv)
+int main(argc, argv)
 int argc;
 char **argv;
 {
-    int encode = 1, which = BASE64, i, portablenewlines = 0;
+    int encode = 1, i;
     FILE *fp = stdin;
     FILE *fpo = stdout;
 
@@ -481,50 +235,20 @@ char **argv;
                 case 'u':
                     encode = 0;
                     break;
-                case 'q':
-                    which = QP;
-                    break;
-                case 'p':
-                    portablenewlines = 1;
-                    break;
-                case 'b':
-                    which = BASE64;
-                    break;
 		default:
                     fprintf(stderr,
-                       "Usage: mmencode [-u] [-q] [-b] [-p] [-o outputfile] [file name]\n");
+                       "Usage: mmencode [-u] [-o outputfile] [file name]\n");
                     exit(-1);
             }
         } else {
-#ifdef MSDOS
-            if (encode)
-                fp = fopen(argv[i], "rb");
-            else
-            {
-                fp = fopen(argv[i], "rt");
-                setmode(fileno(fpo), O_BINARY);
-            } /* else */
-#else
             fp = fopen(argv[i], "r");
-#endif /* MSDOS */
             if (!fp) {
                 perror(argv[i]);
                 exit(-1);
             }
         }
     }
-#ifdef MSDOS
-    if (fp == stdin) setmode(fileno(fp), O_BINARY);
-#endif /* MSDOS */
-    if (which == BASE64) {
-        if (encode) {
-            to64(fp, fpo, portablenewlines);
-        } else {
-            from64(fp,fpo, (char **) NULL, (int *) 0, portablenewlines);
-        }
-    } else {
-        if (encode) toqp(fp, fpo); else fromqp(fp, fpo, NULL, 0);
-    }
+    if (encode) toqp(fp, fpo); else fromqp(fp, fpo, NULL, 0);
     return(0);
 }