about summary refs log tree commit diff stats
path: root/WWW/Library/Implementation/HTUU.c
diff options
context:
space:
mode:
Diffstat (limited to 'WWW/Library/Implementation/HTUU.c')
-rw-r--r--WWW/Library/Implementation/HTUU.c257
1 files changed, 131 insertions, 126 deletions
diff --git a/WWW/Library/Implementation/HTUU.c b/WWW/Library/Implementation/HTUU.c
index 24cf4588..55f4575c 100644
--- a/WWW/Library/Implementation/HTUU.c
+++ b/WWW/Library/Implementation/HTUU.c
@@ -1,59 +1,59 @@
 
 /* MODULE							HTUU.c
-**			UUENCODE AND UUDECODE
-**
-** ACKNOWLEDGEMENT:
-**	This code is taken from rpem distribution, and was originally
-**	written by Mark Riordan.
-**
-** AUTHORS:
-**	MR	Mark Riordan	riordanmr@clvax1.cl.msu.edu
-**	AL	Ari Luotonen	luotonen@dxcern.cern.ch
-**
-** HISTORY:
-**	Added as part of the WWW library and edited to conform
-**	with the WWW project coding standards by:	AL  5 Aug 1993
-**	Originally written by:				MR 12 Aug 1990
-**	Original header text:
-** -------------------------------------------------------------
-**  File containing routines to convert a buffer
-**  of bytes to/from RFC 1113 printable encoding format.
-**
-**  This technique is similar to the familiar Unix uuencode
-**  format in that it maps 6 binary bits to one ASCII
-**  character (or more aptly, 3 binary bytes to 4 ASCII
-**  characters).  However, RFC 1113 does not use the same
-**  mapping to printable characters as uuencode.
-**
-**  Mark Riordan   12 August 1990 and 17 Feb 1991.
-**  This code is hereby placed in the public domain.
-** -------------------------------------------------------------
-**
-** BUGS:
-**
-**
-*/
+ *			UUENCODE AND UUDECODE
+ *
+ * ACKNOWLEDGEMENT:
+ *	This code is taken from rpem distribution, and was originally
+ *	written by Mark Riordan.
+ *
+ * AUTHORS:
+ *	MR	Mark Riordan	riordanmr@clvax1.cl.msu.edu
+ *	AL	Ari Luotonen	luotonen@dxcern.cern.ch
+ *
+ * HISTORY:
+ *	Added as part of the WWW library and edited to conform
+ *	with the WWW project coding standards by:	AL  5 Aug 1993
+ *	Originally written by:				MR 12 Aug 1990
+ *	Original header text:
+ * -------------------------------------------------------------
+ *  File containing routines to convert a buffer
+ *  of bytes to/from RFC 1113 printable encoding format.
+ *
+ *  This technique is similar to the familiar Unix uuencode
+ *  format in that it maps 6 binary bits to one ASCII
+ *  character (or more aptly, 3 binary bytes to 4 ASCII
+ *  characters).  However, RFC 1113 does not use the same
+ *  mapping to printable characters as uuencode.
+ *
+ *  Mark Riordan   12 August 1990 and 17 Feb 1991.
+ *  This code is hereby placed in the public domain.
+ * -------------------------------------------------------------
+ *
+ * BUGS:
+ *
+ *
+ */
 
 #include <HTUtils.h>
 #include <HTUU.h>
 
 #include <LYLeaks.h>
 
-static char six2pr[64] = {
-    'A','B','C','D','E','F','G','H','I','J','K','L','M',
-    'N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
-    'a','b','c','d','e','f','g','h','i','j','k','l','m',
-    'n','o','p','q','r','s','t','u','v','w','x','y','z',
-    '0','1','2','3','4','5','6','7','8','9','+','/'
+static char six2pr[64] =
+{
+    'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
+    'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
+    'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
+    'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
+    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/'
 };
 
 static unsigned char pr2six[256];
 
-
 /*--- function HTUU_encode -----------------------------------------------
  *
- *   Encode a single line of binary data to a standard format that
- *   uses only printing ASCII characters (but takes up 33% more bytes).
+ * Encode a single line of binary data to a standard format that
+ * uses only printing ASCII characters (but takes up 33% more bytes).
  *
  *    Entry    bufin    points to a buffer of bytes.  If nbytes is not
  *                      a multiple of three, then the byte just beyond
@@ -70,45 +70,45 @@ static unsigned char pr2six[256];
  *                      The last byte is a zero byte.
  *             Returns the number of ASCII characters in "bufcoded".
  */
-int HTUU_encode (unsigned char *	bufin,
-			     unsigned int	nbytes,
-			     char *		bufcoded)
+int HTUU_encode(unsigned char *bufin,
+		unsigned int nbytes,
+		char *bufcoded)
 {
 /* ENC is the basic 1 character encoding function to make a char printing */
 #define ENC(c) six2pr[c]
 
-   register char *outptr = bufcoded;
-   unsigned int i;
-   /* This doesn't seem to be needed (AL):   register unsigned char *inptr  = bufin; */
-
-   for (i=0; i<nbytes; i += 3) {
-      *(outptr++) = ENC(*bufin >> 2);            /* c1 */
-      *(outptr++) = ENC(((*bufin << 4) & 060) | ((bufin[1] >> 4) & 017)); /*c2*/
-      *(outptr++) = ENC(((bufin[1] << 2) & 074) | ((bufin[2] >> 6) & 03));/*c3*/
-      *(outptr++) = ENC(bufin[2] & 077);         /* c4 */
-
-      bufin += 3;
-   }
-
-   /* If nbytes was not a multiple of 3, then we have encoded too
-    * many characters.  Adjust appropriately.
-    */
-   if(i == nbytes+1) {
-      /* There were only 2 bytes in that last group */
-      outptr[-1] = '=';
-   } else if(i == nbytes+2) {
-      /* There was only 1 byte in that last group */
-      outptr[-1] = '=';
-      outptr[-2] = '=';
-   }
-   *outptr = '\0';
-   return(outptr - bufcoded);
+    register char *outptr = bufcoded;
+    unsigned int i;
+
+    /* This doesn't seem to be needed (AL):   register unsigned char *inptr  = bufin; */
+
+    for (i = 0; i < nbytes; i += 3) {
+	*(outptr++) = ENC(*bufin >> 2);		/* c1 */
+	*(outptr++) = ENC(((*bufin << 4) & 060) | ((bufin[1] >> 4) & 017));	/*c2 */
+	*(outptr++) = ENC(((bufin[1] << 2) & 074) | ((bufin[2] >> 6) & 03));	/*c3 */
+	*(outptr++) = ENC(bufin[2] & 077);	/* c4 */
+
+	bufin += 3;
+    }
+
+    /* If nbytes was not a multiple of 3, then we have encoded too
+     * many characters.  Adjust appropriately.
+     */
+    if (i == nbytes + 1) {
+	/* There were only 2 bytes in that last group */
+	outptr[-1] = '=';
+    } else if (i == nbytes + 2) {
+	/* There was only 1 byte in that last group */
+	outptr[-1] = '=';
+	outptr[-2] = '=';
+    }
+    *outptr = '\0';
+    return (outptr - bufcoded);
 }
 
-
 /*--- function HTUU_decode ------------------------------------------------
  *
- *  Decode an ASCII-encoded buffer back to its original binary form.
+ * Decode an ASCII-encoded buffer back to its original binary form.
  *
  *    Entry    bufcoded    points to a uuencoded string.  It is
  *                         terminated by any character not in
@@ -125,30 +125,33 @@ int HTUU_encode (unsigned char *	bufin,
  *    Exit     Returns the number of binary bytes decoded.
  *             bufplain    contains these bytes.
  */
-int HTUU_decode (char *		bufcoded,
-			     unsigned char *	bufplain,
-			     int		outbufsize)
+int HTUU_decode(char *bufcoded,
+		unsigned char *bufplain,
+		int outbufsize)
 {
 /* single character decode */
 #define DEC(c) pr2six[(int)c]
 #define MAXVAL 63
 
-   static int first = 1;
+    static int first = 1;
 
-   int nbytesdecoded, j;
-   register char *bufin = bufcoded;
-   register unsigned char *bufout = bufplain;
-   register int nprbytes;
+    int nbytesdecoded, j;
+    register char *bufin = bufcoded;
+    register unsigned char *bufout = bufplain;
+    register int nprbytes;
 
-   /* If this is the first call, initialize the mapping table.
-    * This code should work even on non-ASCII machines.
-    */
-   if(first) {
-      first = 0;
-      for(j=0; j<256; j++) pr2six[j] = MAXVAL+1;
+    /* If this is the first call, initialize the mapping table.
+     * This code should work even on non-ASCII machines.
+     */
+    if (first) {
+	first = 0;
+	for (j = 0; j < 256; j++)
+	    pr2six[j] = MAXVAL + 1;
 
-      for(j=0; j<64; j++) pr2six[UCH(six2pr[j])] = UCH(j);
+	for (j = 0; j < 64; j++)
+	    pr2six[UCH(six2pr[j])] = UCH(j);
 #if 0
+      /* *INDENT-OFF* */
       pr2six['A']= 0; pr2six['B']= 1; pr2six['C']= 2; pr2six['D']= 3;
       pr2six['E']= 4; pr2six['F']= 5; pr2six['G']= 6; pr2six['H']= 7;
       pr2six['I']= 8; pr2six['J']= 9; pr2six['K']=10; pr2six['L']=11;
@@ -165,43 +168,45 @@ int HTUU_decode (char *		bufcoded,
       pr2six['0']=52; pr2six['1']=53; pr2six['2']=54; pr2six['3']=55;
       pr2six['4']=56; pr2six['5']=57; pr2six['6']=58; pr2six['7']=59;
       pr2six['8']=60; pr2six['9']=61; pr2six['+']=62; pr2six['/']=63;
+      /* *INDENT-ON* */
+
 #endif
-   }
-
-   /* Strip leading whitespace. */
-
-   while(*bufcoded==' ' || *bufcoded == '\t') bufcoded++;
-
-   /* Figure out how many characters are in the input buffer.
-    * If this would decode into more bytes than would fit into
-    * the output buffer, adjust the number of input bytes downwards.
-    */
-   bufin = bufcoded;
-   while(pr2six[UCH(*(bufin++))] <= MAXVAL);
-   nprbytes = bufin - bufcoded - 1;
-   nbytesdecoded = ((nprbytes+3)/4) * 3;
-   if(nbytesdecoded > outbufsize) {
-      nprbytes = (outbufsize*4)/3;
-   }
-
-   bufin = bufcoded;
-
-   while (nprbytes > 0) {
-      *(bufout++) = UCH((DEC(bufin[0]) << 2) | (DEC(bufin[1]) >> 4));
-      *(bufout++) = UCH((DEC(bufin[1]) << 4) | (DEC(bufin[2]) >> 2));
-      *(bufout++) = UCH((DEC(bufin[2]) << 6) | (DEC(bufin[3])));
-      bufin += 4;
-      nprbytes -= 4;
-   }
-
-   if(nprbytes & 03) {
-      if(pr2six[(int)bufin[-2]] > MAXVAL) {
-	 nbytesdecoded -= 2;
-      } else {
-	 nbytesdecoded -= 1;
-      }
-   }
-
-   return(nbytesdecoded);
+    }
+
+    /* Strip leading whitespace. */
+
+    while (*bufcoded == ' ' || *bufcoded == '\t')
+	bufcoded++;
+
+    /* Figure out how many characters are in the input buffer.
+     * If this would decode into more bytes than would fit into
+     * the output buffer, adjust the number of input bytes downwards.
+     */
+    bufin = bufcoded;
+    while (pr2six[UCH(*(bufin++))] <= MAXVAL) ;
+    nprbytes = bufin - bufcoded - 1;
+    nbytesdecoded = ((nprbytes + 3) / 4) * 3;
+    if (nbytesdecoded > outbufsize) {
+	nprbytes = (outbufsize * 4) / 3;
+    }
+
+    bufin = bufcoded;
+
+    while (nprbytes > 0) {
+	*(bufout++) = UCH((DEC(bufin[0]) << 2) | (DEC(bufin[1]) >> 4));
+	*(bufout++) = UCH((DEC(bufin[1]) << 4) | (DEC(bufin[2]) >> 2));
+	*(bufout++) = UCH((DEC(bufin[2]) << 6) | (DEC(bufin[3])));
+	bufin += 4;
+	nprbytes -= 4;
+    }
+
+    if (nprbytes & 03) {
+	if (pr2six[(int) bufin[-2]] > MAXVAL) {
+	    nbytesdecoded -= 2;
+	} else {
+	    nbytesdecoded -= 1;
+	}
+    }
+
+    return (nbytesdecoded);
 }
-