aboutsummaryrefslogtreecommitdiff
path: root/usr.bin/uuencode
diff options
context:
space:
mode:
authorPiotr Pawel Stefaniak <pstef@FreeBSD.org>2022-04-17 09:04:08 +0000
committerPiotr Pawel Stefaniak <pstef@FreeBSD.org>2022-04-18 08:53:11 +0000
commit47bcbde91dea630d4996b1a7b2c33925fe8d5b5b (patch)
tree375d8b6fe9112670848bd3a2f21efad6ca60573e /usr.bin/uuencode
parent4cd4841a2773d3674151f4acef0a1bf05212c87d (diff)
Diffstat (limited to 'usr.bin/uuencode')
-rw-r--r--usr.bin/uuencode/Makefile22
-rw-r--r--usr.bin/uuencode/Makefile.depend18
-rw-r--r--usr.bin/uuencode/bintrans.1229
-rw-r--r--usr.bin/uuencode/bintrans.c88
-rw-r--r--usr.bin/uuencode/tests/Makefile13
-rw-r--r--usr.bin/uuencode/tests/Makefile.depend11
-rw-r--r--usr.bin/uuencode/tests/legacy_test.sh6
-rw-r--r--usr.bin/uuencode/tests/regress.153276.in4
-rw-r--r--usr.bin/uuencode/tests/regress.153276.out1
-rw-r--r--usr.bin/uuencode/tests/regress.base64.in88
-rw-r--r--usr.bin/uuencode/tests/regress.base64.out74
-rw-r--r--usr.bin/uuencode/tests/regress.inbin4096 -> 0 bytes
-rw-r--r--usr.bin/uuencode/tests/regress.outbin4096 -> 0 bytes
-rw-r--r--usr.bin/uuencode/tests/regress.sh12
-rw-r--r--usr.bin/uuencode/tests/regress.traditional.in95
-rw-r--r--usr.bin/uuencode/tests/regress.traditional.out95
-rw-r--r--usr.bin/uuencode/uudecode.c471
-rw-r--r--usr.bin/uuencode/uuencode.c235
-rw-r--r--usr.bin/uuencode/uuencode.format.5102
19 files changed, 0 insertions, 1564 deletions
diff --git a/usr.bin/uuencode/Makefile b/usr.bin/uuencode/Makefile
deleted file mode 100644
index ef9686aa290f..000000000000
--- a/usr.bin/uuencode/Makefile
+++ /dev/null
@@ -1,22 +0,0 @@
-# @(#)Makefile 8.1 (Berkeley) 6/6/93
-# $FreeBSD$
-
-.include <src.opts.mk>
-
-PROG= bintrans
-SRCS= bintrans.c uuencode.c uudecode.c
-MAN= bintrans.1 uuencode.format.5
-LINKS+= ${BINDIR}/bintrans ${BINDIR}/uuencode
-LINKS+= ${BINDIR}/bintrans ${BINDIR}/b64encode
-LINKS+= ${BINDIR}/bintrans ${BINDIR}/uudecode
-LINKS+= ${BINDIR}/bintrans ${BINDIR}/b64decode
-MLINKS= bintrans.1 uudecode.1 \
- bintrans.1 uuencode.1 \
- uuencode.format.5 uuencode.5 \
- bintrans.1 b64encode.1 \
- b64encode.1 b64decode.1
-
-HAS_TESTS=
-SUBDIR.${MK_TESTS}+= tests
-
-.include <bsd.prog.mk>
diff --git a/usr.bin/uuencode/Makefile.depend b/usr.bin/uuencode/Makefile.depend
deleted file mode 100644
index d5ed563ecfc8..000000000000
--- a/usr.bin/uuencode/Makefile.depend
+++ /dev/null
@@ -1,18 +0,0 @@
-# $FreeBSD$
-# Autogenerated - do NOT edit!
-
-DIRDEPS = \
- gnu/lib/csu \
- include \
- include/arpa \
- include/xlocale \
- lib/${CSU_DIR} \
- lib/libc \
- lib/libcompiler_rt \
-
-
-.include <dirdeps.mk>
-
-.if ${DEP_RELDIR} == ${_DEP_RELDIR}
-# local dependencies - needed for -jN in clean tree
-.endif
diff --git a/usr.bin/uuencode/bintrans.1 b/usr.bin/uuencode/bintrans.1
deleted file mode 100644
index e3ad5813f4cd..000000000000
--- a/usr.bin/uuencode/bintrans.1
+++ /dev/null
@@ -1,229 +0,0 @@
-.\" Copyright (c) 1980, 1990, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" From: @(#)uuencode.1 8.1 (Berkeley) 6/6/93
-.\" $FreeBSD$
-.\"
-.Dd April 18, 2022
-.Dt BINTRANS 1
-.Os
-.Sh NAME
-.Nm bintrans ,
-.Nm uuencode ,
-.Nm uudecode ,
-.Nm b64encode ,
-.Nm b64decode
-.Nd encode/decode a binary file
-.Sh SYNOPSIS
-.Nm
-.Op algorithm
-.Op ...
-.Nm uuencode
-.Op Fl m
-.Op Fl r
-.Op Fl o Ar output_file
-.Op Ar file
-.Ar name
-.Nm uudecode
-.Op Fl cimprs
-.Op Ar
-.Nm uudecode
-.Op Fl i
-.Fl o Ar output_file
-.Nm b64encode
-.Op Fl r
-.Op Fl o Ar output_file
-.Op Ar file
-.Ar name
-.Nm b64decode
-.Op Fl cimprs
-.Op Ar
-.Nm b64decode
-.Op Fl i
-.Fl o Ar output_file
-.Op Ar file
-.Sh DESCRIPTION
-The
-.Nm uuencode
-and
-.Nm uudecode
-utilities are used to transmit binary files over transmission mediums
-that do not support other than simple
-.Tn ASCII
-data.
-The
-.Nm b64encode
-utility is synonymous with
-.Nm uuencode
-with the
-.Fl m
-flag specified.
-The
-.Nm b64decode
-utility is synonymous with
-.Nm uudecode
-with the
-.Fl m
-flag specified.
-.Pp
-The
-.Nm uuencode
-utility reads
-.Ar file
-(or by default the standard input) and writes an encoded version
-to the standard output, or
-.Ar output_file
-if one has been specified.
-The encoding uses only printing
-.Tn ASCII
-characters and includes the
-mode of the file and the operand
-.Ar name
-for use by
-.Nm uudecode .
-.Pp
-The
-.Nm uudecode
-utility transforms
-.Em uuencoded
-files (or by default, the standard input) into the original form.
-The resulting file is named either
-.Ar name
-or (depending on options passed to
-.Nm uudecode )
-.Ar output_file
-and will have the mode of the original file except that setuid
-and execute bits are not retained.
-The
-.Nm uudecode
-utility ignores any leading and trailing lines.
-.Pp
-The following options are available for
-.Nm uuencode :
-.Bl -tag -width ident
-.It Fl m
-Use the Base64 method of encoding, rather than the traditional
-.Nm uuencode
-algorithm.
-.It Fl r
-Produce raw output by excluding the initial and final framing lines.
-.It Fl o Ar output_file
-Output to
-.Ar output_file
-instead of standard output.
-.El
-.Pp
-The following options are available for
-.Nm uudecode :
-.Bl -tag -width ident
-.It Fl c
-Decode more than one uuencoded file from
-.Ar file
-if possible.
-.It Fl i
-Do not overwrite files.
-.It Fl m
-When used with the
-.Fl r
-flag, decode Base64 input instead of traditional
-.Nm uuencode
-input.
-Without
-.Fl r
-it has no effect.
-.It Fl o Ar output_file
-Output to
-.Ar output_file
-instead of any pathname contained in the input data.
-.It Fl p
-Decode
-.Ar file
-and write output to standard output.
-.It Fl r
-Decode raw (or broken) input, which is missing the initial and
-possibly the final framing lines.
-The input is assumed to be in the traditional
-.Nm uuencode
-encoding, but if the
-.Fl m
-flag is used, or if the utility is invoked as
-.Nm b64decode ,
-then the input is assumed to be in Base64 format.
-.It Fl s
-Do not strip output pathname to base filename.
-By default
-.Nm uudecode
-deletes any prefix ending with the last slash '/' for security
-reasons.
-.El
-.Pp
-.Nm
-is a generic utility that can run
-any of the aforementioned encoders and decoders.
-.Sh EXAMPLES
-The following example packages up a source tree, compresses it,
-uuencodes it and mails it to a user on another system.
-When
-.Nm uudecode
-is run on the target system, the file ``src_tree.tar.Z'' will be
-created which may then be uncompressed and extracted into the original
-tree.
-.Pp
-.Bd -literal -offset indent -compact
-tar cf \- src_tree \&| compress \&|
-uuencode src_tree.tar.Z \&| mail user@example.com
-.Ed
-.Pp
-The following example unpacks all uuencoded
-files from your mailbox into your current working directory.
-.Pp
-.Bd -literal -offset indent -compact
-uudecode -c < $MAIL
-.Ed
-.Pp
-The following example extracts a compressed tar
-archive from your mailbox
-.Pp
-.Bd -literal -offset indent -compact
-uudecode -o /dev/stdout < $MAIL | zcat | tar xfv -
-.Ed
-.Sh SEE ALSO
-.Xr basename 1 ,
-.Xr compress 1 ,
-.Xr mail 1 ,
-.Xr uucp 1 Pq Pa ports/net/freebsd-uucp ,
-.Xr uuencode 5
-.Sh HISTORY
-The
-.Nm uudecode
-and
-.Nm uuencode
-utilities appeared in
-.Bx 4.0 .
-.Sh BUGS
-Files encoded using the traditional algorithm are expanded by 35% (3
-bytes become 4 plus control information).
diff --git a/usr.bin/uuencode/bintrans.c b/usr.bin/uuencode/bintrans.c
deleted file mode 100644
index e158dd2c1b5c..000000000000
--- a/usr.bin/uuencode/bintrans.c
+++ /dev/null
@@ -1,88 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-2-Clause
- *
- * Copyright (c) 2022 The FreeBSD Foundation
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/param.h>
-#include <libgen.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sysexits.h>
-
-extern int main_decode(int, char *[]);
-extern int main_encode(int, char *[]);
-
-static int search(const char *const);
-
-enum coders {
- uuencode, uudecode, b64encode, b64decode
-};
-
-int
-main(int argc, char *argv[])
-{
- const char *const progname = getprogname();
- int coder = search(progname);
-
- if (coder == -1 && argc > 1) {
- argc--;
- argv++;
- coder = search(argv[0]);
- }
- switch (coder) {
- case uuencode:
- case b64encode:
- main_encode(argc, argv);
- break;
- case uudecode:
- case b64decode:
- main_decode(argc, argv);
- break;
- default:
- (void)fprintf(stderr,
- "usage: %s <uuencode | uudecode> ...\n"
- " %s <b64encode | b64decode> ...\n",
- progname, progname);
- exit(EX_USAGE);
- }
-}
-
-static int
-search(const char *const progname)
-{
-#define DESIGNATE(item) [item] = #item
- const char *const known[] = {
- DESIGNATE(uuencode),
- DESIGNATE(uudecode),
- DESIGNATE(b64encode),
- DESIGNATE(b64decode)
- };
-
- for (size_t i = 0; i < nitems(known); i++)
- if (strcmp(progname, known[i]) == 0)
- return ((int)i);
- return (-1);
-}
diff --git a/usr.bin/uuencode/tests/Makefile b/usr.bin/uuencode/tests/Makefile
deleted file mode 100644
index d89babfaa16a..000000000000
--- a/usr.bin/uuencode/tests/Makefile
+++ /dev/null
@@ -1,13 +0,0 @@
-# $FreeBSD$
-
-PACKAGE= tests
-
-TAP_TESTS_SH= legacy_test
-
-${PACKAGE}FILES+= regress.base64.in regress.base64.out
-${PACKAGE}FILES+= regress.in regress.out
-${PACKAGE}FILES+= regress.sh
-${PACKAGE}FILES+= regress.traditional.in regress.traditional.out
-${PACKAGE}FILES+= regress.153276.in regress.153276.out
-
-.include <bsd.test.mk>
diff --git a/usr.bin/uuencode/tests/Makefile.depend b/usr.bin/uuencode/tests/Makefile.depend
deleted file mode 100644
index f80275d86ab1..000000000000
--- a/usr.bin/uuencode/tests/Makefile.depend
+++ /dev/null
@@ -1,11 +0,0 @@
-# $FreeBSD$
-# Autogenerated - do NOT edit!
-
-DIRDEPS = \
-
-
-.include <dirdeps.mk>
-
-.if ${DEP_RELDIR} == ${_DEP_RELDIR}
-# local dependencies - needed for -jN in clean tree
-.endif
diff --git a/usr.bin/uuencode/tests/legacy_test.sh b/usr.bin/uuencode/tests/legacy_test.sh
deleted file mode 100644
index 1b6b806c5980..000000000000
--- a/usr.bin/uuencode/tests/legacy_test.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-# $FreeBSD$
-
-SRCDIR="$(dirname "${0}")"; export SRCDIR
-
-m4 "${SRCDIR}/../regress.m4" "${SRCDIR}/regress.sh" | sh
diff --git a/usr.bin/uuencode/tests/regress.153276.in b/usr.bin/uuencode/tests/regress.153276.in
deleted file mode 100644
index d881c8a9389e..000000000000
--- a/usr.bin/uuencode/tests/regress.153276.in
+++ /dev/null
@@ -1,4 +0,0 @@
-begin 644 153276
-/5&AI<R!I<R!A('1E<W0*
-
-end
diff --git a/usr.bin/uuencode/tests/regress.153276.out b/usr.bin/uuencode/tests/regress.153276.out
deleted file mode 100644
index b82ee6f61b39..000000000000
--- a/usr.bin/uuencode/tests/regress.153276.out
+++ /dev/null
@@ -1 +0,0 @@
-uudecode: stdin: /dev/null: character out of range: [32-96]
diff --git a/usr.bin/uuencode/tests/regress.base64.in b/usr.bin/uuencode/tests/regress.base64.in
deleted file mode 100644
index 3a8bfc2bf1d9..000000000000
--- a/usr.bin/uuencode/tests/regress.base64.in
+++ /dev/null
@@ -1,88 +0,0 @@
-begin-base64 644 regress.out
-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
-8OKlLHwxWbE7xE7teDcAZw==
-====
diff --git a/usr.bin/uuencode/tests/regress.base64.out b/usr.bin/uuencode/tests/regress.base64.out
deleted file mode 100644
index 046f6c5d6886..000000000000
--- a/usr.bin/uuencode/tests/regress.base64.out
+++ /dev/null
@@ -1,74 +0,0 @@
-begin-base64 644 regress.in
-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
-====
diff --git a/usr.bin/uuencode/tests/regress.in b/usr.bin/uuencode/tests/regress.in
deleted file mode 100644
index fa0dd0897b53..000000000000
--- a/usr.bin/uuencode/tests/regress.in
+++ /dev/null
Binary files differ
diff --git a/usr.bin/uuencode/tests/regress.out b/usr.bin/uuencode/tests/regress.out
deleted file mode 100644
index fa0dd0897b53..000000000000
--- a/usr.bin/uuencode/tests/regress.out
+++ /dev/null
Binary files differ
diff --git a/usr.bin/uuencode/tests/regress.sh b/usr.bin/uuencode/tests/regress.sh
deleted file mode 100644
index ee6c2d606df4..000000000000
--- a/usr.bin/uuencode/tests/regress.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-# $FreeBSD$
-
-echo 1..5
-
-REGRESSION_START($1)
-
-REGRESSION_TEST(`traditional', `uuencode regress.in <${SRCDIR}/regress.in')
-REGRESSION_TEST(`base64', `uuencode -m regress.in <${SRCDIR}/regress.in')
-REGRESSION_TEST_ONE(`uudecode -p <${SRCDIR}/regress.traditional.in', `traditional')
-REGRESSION_TEST_ONE(`uudecode -p <${SRCDIR}/regress.base64.in', `base64')
-
-REGRESSION_END()
diff --git a/usr.bin/uuencode/tests/regress.traditional.in b/usr.bin/uuencode/tests/regress.traditional.in
deleted file mode 100644
index da81415a34d6..000000000000
--- a/usr.bin/uuencode/tests/regress.traditional.in
+++ /dev/null
@@ -1,95 +0,0 @@
-begin 644 regress.out
-M=![XYG<[;LZJX6VX="4_6IK%7W4DO3P.ZPE'B5^+X4^0$'UI_/]6C@%9T,2&
-M(VE$3"('^WCXHJ?W))`_NO0V6G6S"C%7&U[<9I!J\40&,A_>\0+R:A,.3KK'
-M/]"?V9$]6MR;HD3&\$V%MT0K?B3L(I<4/,=[5#1O"0&+#^MZ;J)D/)*:&F77
-M"P+P+SV6I`.716^=X4AG"G!T:!L[(!R=Z;>,8P0Q(<,X7OR`G&USW7*]@"PO
-M(PS(ZP88S7"(`H_*I/]TH-`ZBC%88-*WL_NMMRMS"Y0?*GZ@:5>KP8<;U00'
-MJRKQHKR.KCP@P@:S2?P+A#*U?+>CGI37+U4AVC]$^I,T62?M`TP7UM=R*QR[
-MD4:K6S$`"'\AM32=W-#:F1_V3ZZQ-'/89A6WU<C>-37T<S(?I16!;!0(WK<Y
-MRA69E&`TC\7\S01XIN:&I0Z0-G;!0D24X`D^IO>13\)N%;)50(Z6'>F![']+
-M5Y"285"H9VB.%`_9\/2,X[W77CJ!D_,U9SXBK#P\5UM!IYU]J-@7%MYV?=KD
-M;S)":^[UI?`N/V+LRMI`=V+4)PA@B5[NCZ<QX#C$?==_08=<)&#FXWYP?LGB
-M/H/GK@A$)=J?@6(O:%-INH0]!RKSG6:<LYT`0%QR9I?`:+)G&-B/>A3.HL33
-MZ=/.*I\QVFLZF=DKVG>9T(TE>H-'Q"!*O@4Q"TN%B>HZ&+INLL%$!\0>"LRU
-MFCG7#(UJL"V2IWX/93O1Y:I'V]%!U>(>`/%9,D%Q.V33LT8XJWR*#</&':`=
-M/R\)ZX4IR!E.WK;<+RJ$;*<N2''=Z]B3_YF#X:K;R8',8Z2[2[0/#'I'UQ\6
-MHHYQ,HT,5DF!&;*<Y2RX)W[3\QCCXATI<*O$="2:G)V`U$VC'SI?;>\N_-2Q
-MI!X]^)&8&)VGL@IL*SP37:;@*#9/R=J<`(I-7G`=L0!-LDFS!8;\]Y]Q"SPL
-MR;0[^T@X:T#8R+#<G6V-'_."8'OD.@R,[V%0)`7&@ZU&G99B`C2EKJL/7V-5
-M4M7BO1KN>%2&YK8G8)O.V.?AP@$?Q38\;[Q\`%0GM!O:*J&YK6"^:V=^X7CT
-M!V.#R^_,Y'IICT=-PI+/*':\4'Z(#=^FT`JEYNYH";A^6(#HO&M-V!IDR"JT
-MT,_D*$K3;33^J?N62#HPT9C+>%=2$K4M=BUM*A#AYHRY$O^2A+RP*/FX_-?)
-MW"+A;92OA.66QPS?*$@,"G'-=\N<W)(#-,[<W#FYPT0K#T`.;.42!%\BHN-!
-MC,O=4OB(!5%/>5D9WQ8L3<B21)F_?!Y0-AK<81,;9)YB.5'NN.Q%P^S/H$(C
-M5!/.UP79@L2P@%$#VT;*+<.O2G6&,W(R-95*J=HW:XHAX'X+O_RZK,KM23K[
-MD0)EP$O4Z6BROM0H;_?,='6(;<_61/1X[EZ)#SX5W`4J/<%W)RZ1:-4*1O%B
-M^[<.68!*;-%1F$_C`Z=R4N5D"8(,#NAN([B0+TNXE__Q;=&;]16M?\6'L_-Y
-MGF6BU3+3/;:#S\&!/.,.><I>(?J#5H/J:A>J&3X?)CWL5!AJZS:R5?-IN>:$
-M=';_73&F]-'2XQL@I;?+_L)PZ(5)CW_=@;T1?7]T94@?#OP41L3-OQ`5S*NN
-MN'ZPK$\`&.I!+@HF,9Y49<@6D>1-C3J<>E"LEW)A!(N4F),;8(V2,O_"*^GD
-M(8<($[S'1:"R%\G@-8HLHI_<ASUHU@3/V#BZ-3JX:_27TAUS[?RDD*MVI+)O
-M2.`\G<<1(4KBQY_&30PA)Q,:H1Y604#54/'QT<\Q1-33(VX;&>BD&XJ*J[X;
-MIF9O;9KGL2C0)R+B0B/MK:&1\8B(V)P&9F';:F:]#/C.*5W;!63Z+@1V+$$(
-MT&[!9B2&/XEGB3DI.1_%4@I\6F;EOA.>98^*#3:FB?KJT-AC8(486&;9$.4B
-MZ(F2;B5'_@FXMD^DR`3UN2N*XE34"6*[7.Y(Z6+"8V@XO[G83#-4O_G;)+S:
-MBU&0/+SWIT;B5JW0PD(?^K92L3BK$(',3>`QC=?6("#(</2LQ19@ONK@G(`H
-M=S(1]1D`GLH>X<+OA]2Q#-KFER6#L<SD4L<]>&]KKY''[W*.KZPQV"4%N@_G
-M:JG#!2S$(W'^<SUVF]7\`3SI'T!3\<%O#$_**BHN^J66M@+63PG1H1!F!95@
-M.'"F0@ASY;5@S4R@QQ0%G8"3#]#Y2W=VG=PN')+W(>L1_:^.JY,X.1DML+,:
-M.&)[QWH;1,Z@$MNPI)U$PQ?&K_<8K<_0L!%H0?+]+@K<O'+@F$ZF:S7=%]-?
-M!6B/9A3C%NK<!TP#W/JE"KA<OL5/]<N@&Q`UI0]Z,RP8+V&TRR,U&K1(;B6&
-MXR[R\V^TF02+]Q&Z&T2MSD?6IYKK+\IL&H_"%/K_\"7S^ZM/_I-4IXT-J<,5
-ME.B<,HS4$':E@4>^Y\U@NT&4(^(KBMP.2/,VA<^PH&O%0Z6O8W2[[?3[@DIG
-M5N1CB2!EO2D5^V(NCLZ^^$K#*<(C#]C\\2M)\QR27#9K]O(#+D3^89(Q@^O_
-M"</X"TM2;P`0-CH2]DI;,0*X8N<2`N7(S(9G@)'SW\B4^V(^FSA/*"A-BY_,
-MQ/T3C*ZW1JC*L(N)"].#W<\XG[3&7GO"U0J#%X3*81VS$L[4CER05.#W'KMB
-MQ`)/\N;F40.K;(8VBF1]QJ4?V26E\L"8:,Z;]$TT6GGCTQVQI?9*$^(O:K21
-MB31@-!IV2[*UN]-3MC^]`Z[Q6/PI!"/<(LR#/X"(M"S,HR;RJ;GWK,W12BR@
-MI(C]TU%E-:;_F4B^;HK9#O79@<.EA9C4)GA4CB$AN,?I.Q8&__ADC_=6=W#@
-M]@:+5KB+59.?EYP493U=\6ZK-W10^C3XVIFVA+A$XIB<#Y&$.8.<3?XKHE2Q
-MV(E@*XPX?;[[(JDWY_[D"VTW;].%S@S(-V,,?8U"YT,1)03Y![JF*O:WW,C$
-M:/S;(QBI'"=VP`,S3)',"2A*UJB0ZT:DB\LN..Z16#B#`=GISSCG#%A,R+^B
-M?YI!@9<MG?O*OOLQ`$6ER.9'<P7!N_O^V&@Y<6%K\>Y&MOQF0S*T":F(;:UQ
-MEY43B9#>;Z;,TN*9>PD8UHDMYE8&58#+_O=A'V%>/S2'!XV1;<>M._W)UUWP
-MO&C/56ST%YA@H.^'3T1JWUOI9X[H*\W4O.=#S13RN=B,*R?W5"5$SAJNG3_0
-M?R/IY0[4@2.NT?<8_B:IPQP4MJ>!+4?B#HXO'2>LP?`;W;\=<//I8=C+*4\T
-MMKI"AD5W[4R78TP5%2B`B5.>6@62&:T`!DQ%_I-K_.SM*U,LVHF)Q!NE*_%A
-M7'MKH@ZQ%6_0</<&,T37(+4')\&I73<DR=;L3"6[(MOY],K8Y&_WILZV`.)F
-M<HCC0WD-L)V4`ZX_NTZ1M*\&:/\JW7US>%FBDJ#^C$(0EIGQUHR_:2.<T/[4
-M]#M6>Y,KEH2VA'HO'D:=_L>W&B9D@F?%1?JK<"^Z@BSX<CP3C_R$CIMHW5.7
-MG7</R<FN7%/C4E#D+!(Z1:>@><6=^.:0A">TBNM^@ZXI^>ZCVP-:#7:ZX7@4
-MZ'$:7P3@:'$-)"0W&-#E[]DUNF4T>?GY/>%)B-#=@U4!?H:H;_6%N$^%3V-L
-MZKF+H<`&]7>7-7\4VEW>(E>"0'SDA?7EN%%@+0GJ%I/&:RW6EB$0K9U_)VHY
-MRQV8$_.),BW;OG/W)!UF=,/;@=YNEKP<;".">TM_JC3Q+0SNG/Y`^2[N:P>6
-MXB!N#C&B2&/(#'["/I801E^)`CU38=/UK0Z+I&Y[<K^-L;R.#%$-^#2NR./B
-MNTSY!F,J;U20<9WOV,6R8@^GW+J:B^"7]Z<TEI+\4V2&[`1GD;F,K05S#Y=P
-M*QG9NDXRODK2`7TRXD-[FI6NN,#*P_AY-;"74,U.L@C9W-6\@LCV%8MW?[12
-M@.>7_EI+N:D',E8@8#RS7G6+\5NP&[@$-_G)+HRF[PV.A3%%_E[QBED?E9)W
-MK<&OQ;B]@).LN"*SVH(UNCQ)'1Y?(7T'2DO[1XXZXCB*^&4-G;>[0F;!6+HH
-M\8YVXN[TCY0)L=]9+<3DP`)=6_N_J47.C;3A=\3+LNP#23,>0CVUT+FJW>8R
-MY-I\&1CQ0D.7IIT)?D$'KD';Y^LU(]OV`A`Q0Z14.NO.1+N$HB=X1DI%,UDP
-M35UO0IE@[5F+O/CI$U)9W`;`O*=>JL/L))5P4^J[);PW=5:\,T9MJ2X%"&DU
-M"_XCEH;QL:DG<(Q/_A:`S[H<T(>$%R,S-JNZQC'*J"A]6:J'0I7?U)@)KK5Z
-M>^C[8@AW"LJE2S6ZC;2#RQ%>*E4QI,8'>;$)2>;+*.*$TF?N;L&JBS)%.*1/
-MD8KU;0U_NY/Z%-$KTL&0[E2[!$&1A<A)@U[;7#]FH#V">)9V0)8C^8,JC8'D
-M_6ZN?'55'<TI%YC5Z_E5,L(8>0\EW8A(_UA!^U`G_R%.O5@-HG8)5=\,HA:5
-M/"#^=945W,^2[Z81B&5GBB=&06EY8Z/8SE$J$N,Y%6?MM]=2+58A7A;`!S<?
-M-[FSH"9CR9$O^9@4O]BI>:246T29^ZB%O_:;P[%D92EXY!\\$3/V+J"E3VU_
-MR=Z]9R&?=IW%1]=:J*KC5CO"%N]\SR'3L=1^.%\;L:(V\TBSW6*=7NF^BBN:
-M=?ZZ&(LCM(RJ40JH@[X)B^5*/_Q(@.!`%!XDM54+`RI`^-L1-P8`(!#$:[$,
-MB#=N4/0_]N:O,-_%])?U/.6X,EC;'["ZZ-BL,^_W8)XEX4FVB70/J]RI&Z<T
-M`)CS@+Z_7M6A%GDBUC)8O$)](D6OE+ZYTS@7S$O$$.6(Z3:02PKK2AV43#Z:
-M?)/"1LRF!UK!$6;U%15LB=DK^_K%%+[#W0L#K^$6%>LCY(M;`!./-MYPTH;Q
-MTF*@6H*N9:DEGJ)O)3[)4=5190Z>BX)DL,G(L^FN$E[HN,U.,_>V5,Y)1(^V
-M,.X_U2R];K$CWQ8TI18?7)QS-9L(>IR*!\3V-H6?O.HF<"7E8-SWK(115/6@
-MQL5ZDJ3)N%H^8IN^`[0\/V`6#?LL/VO:'OIA)FDY.P4`JX+EC%;HZ*E"]WV<
-MZ<EC4A31ND1L%?SY)H8?U=<=@</@Y8&7XJI4NJ"&B3]]=2(0_6A"+ZGX@+5_
-M(7;Y!N,;KF'OQUQ55;B3A\2X,C--JOZSI+NF)K\J([L%?/+#8AF[>KMAC&8F
-M5G&WG[>$>`N_04V")EXD',H2%H1:G7)^HXMIK5EK10TPAE`#H-*\LPH@DVO&
-MM8JJ"?8`'NA_:&M$3`_OJ9([U_C]XG#=\8'UA5R?Y&(_0ODNJ9B+>9*4(K-C
-MTWC'BH\H'6KBFUF!E1A6H_]X[:<ZQ'.J%J!N?,9("U?VSO'O:OU"N[8ZD`H*
-MLGXAX@3C*PVY2(F86+X+Q\&4L56*E^IF\K$)W-3AZ(V0ZOMU$F?/V.HMYZH4
-M<B^N\6M0\PO$:H8666J*@A/I]IB$L?'3$3FB>O-Y\.*E+'PQ6;$[Q$[M>#<`
-!9P``
-`
-end
diff --git a/usr.bin/uuencode/tests/regress.traditional.out b/usr.bin/uuencode/tests/regress.traditional.out
deleted file mode 100644
index ee1352f165a2..000000000000
--- a/usr.bin/uuencode/tests/regress.traditional.out
+++ /dev/null
@@ -1,95 +0,0 @@
-begin 644 regress.in
-M=![XYG<[;LZJX6VX="4_6IK%7W4DO3P.ZPE'B5^+X4^0$'UI_/]6C@%9T,2&
-M(VE$3"('^WCXHJ?W))`_NO0V6G6S"C%7&U[<9I!J\40&,A_>\0+R:A,.3KK'
-M/]"?V9$]6MR;HD3&\$V%MT0K?B3L(I<4/,=[5#1O"0&+#^MZ;J)D/)*:&F77
-M"P+P+SV6I`.716^=X4AG"G!T:!L[(!R=Z;>,8P0Q(<,X7OR`G&USW7*]@"PO
-M(PS(ZP88S7"(`H_*I/]TH-`ZBC%88-*WL_NMMRMS"Y0?*GZ@:5>KP8<;U00'
-MJRKQHKR.KCP@P@:S2?P+A#*U?+>CGI37+U4AVC]$^I,T62?M`TP7UM=R*QR[
-MD4:K6S$`"'\AM32=W-#:F1_V3ZZQ-'/89A6WU<C>-37T<S(?I16!;!0(WK<Y
-MRA69E&`TC\7\S01XIN:&I0Z0-G;!0D24X`D^IO>13\)N%;)50(Z6'>F![']+
-M5Y"285"H9VB.%`_9\/2,X[W77CJ!D_,U9SXBK#P\5UM!IYU]J-@7%MYV?=KD
-M;S)":^[UI?`N/V+LRMI`=V+4)PA@B5[NCZ<QX#C$?==_08=<)&#FXWYP?LGB
-M/H/GK@A$)=J?@6(O:%-INH0]!RKSG6:<LYT`0%QR9I?`:+)G&-B/>A3.HL33
-MZ=/.*I\QVFLZF=DKVG>9T(TE>H-'Q"!*O@4Q"TN%B>HZ&+INLL%$!\0>"LRU
-MFCG7#(UJL"V2IWX/93O1Y:I'V]%!U>(>`/%9,D%Q.V33LT8XJWR*#</&':`=
-M/R\)ZX4IR!E.WK;<+RJ$;*<N2''=Z]B3_YF#X:K;R8',8Z2[2[0/#'I'UQ\6
-MHHYQ,HT,5DF!&;*<Y2RX)W[3\QCCXATI<*O$="2:G)V`U$VC'SI?;>\N_-2Q
-MI!X]^)&8&)VGL@IL*SP37:;@*#9/R=J<`(I-7G`=L0!-LDFS!8;\]Y]Q"SPL
-MR;0[^T@X:T#8R+#<G6V-'_."8'OD.@R,[V%0)`7&@ZU&G99B`C2EKJL/7V-5
-M4M7BO1KN>%2&YK8G8)O.V.?AP@$?Q38\;[Q\`%0GM!O:*J&YK6"^:V=^X7CT
-M!V.#R^_,Y'IICT=-PI+/*':\4'Z(#=^FT`JEYNYH";A^6(#HO&M-V!IDR"JT
-MT,_D*$K3;33^J?N62#HPT9C+>%=2$K4M=BUM*A#AYHRY$O^2A+RP*/FX_-?)
-MW"+A;92OA.66QPS?*$@,"G'-=\N<W)(#-,[<W#FYPT0K#T`.;.42!%\BHN-!
-MC,O=4OB(!5%/>5D9WQ8L3<B21)F_?!Y0-AK<81,;9)YB.5'NN.Q%P^S/H$(C
-M5!/.UP79@L2P@%$#VT;*+<.O2G6&,W(R-95*J=HW:XHAX'X+O_RZK,KM23K[
-MD0)EP$O4Z6BROM0H;_?,='6(;<_61/1X[EZ)#SX5W`4J/<%W)RZ1:-4*1O%B
-M^[<.68!*;-%1F$_C`Z=R4N5D"8(,#NAN([B0+TNXE__Q;=&;]16M?\6'L_-Y
-MGF6BU3+3/;:#S\&!/.,.><I>(?J#5H/J:A>J&3X?)CWL5!AJZS:R5?-IN>:$
-M=';_73&F]-'2XQL@I;?+_L)PZ(5)CW_=@;T1?7]T94@?#OP41L3-OQ`5S*NN
-MN'ZPK$\`&.I!+@HF,9Y49<@6D>1-C3J<>E"LEW)A!(N4F),;8(V2,O_"*^GD
-M(8<($[S'1:"R%\G@-8HLHI_<ASUHU@3/V#BZ-3JX:_27TAUS[?RDD*MVI+)O
-M2.`\G<<1(4KBQY_&30PA)Q,:H1Y604#54/'QT<\Q1-33(VX;&>BD&XJ*J[X;
-MIF9O;9KGL2C0)R+B0B/MK:&1\8B(V)P&9F';:F:]#/C.*5W;!63Z+@1V+$$(
-MT&[!9B2&/XEGB3DI.1_%4@I\6F;EOA.>98^*#3:FB?KJT-AC8(486&;9$.4B
-MZ(F2;B5'_@FXMD^DR`3UN2N*XE34"6*[7.Y(Z6+"8V@XO[G83#-4O_G;)+S:
-MBU&0/+SWIT;B5JW0PD(?^K92L3BK$(',3>`QC=?6("#(</2LQ19@ONK@G(`H
-M=S(1]1D`GLH>X<+OA]2Q#-KFER6#L<SD4L<]>&]KKY''[W*.KZPQV"4%N@_G
-M:JG#!2S$(W'^<SUVF]7\`3SI'T!3\<%O#$_**BHN^J66M@+63PG1H1!F!95@
-M.'"F0@ASY;5@S4R@QQ0%G8"3#]#Y2W=VG=PN')+W(>L1_:^.JY,X.1DML+,:
-M.&)[QWH;1,Z@$MNPI)U$PQ?&K_<8K<_0L!%H0?+]+@K<O'+@F$ZF:S7=%]-?
-M!6B/9A3C%NK<!TP#W/JE"KA<OL5/]<N@&Q`UI0]Z,RP8+V&TRR,U&K1(;B6&
-MXR[R\V^TF02+]Q&Z&T2MSD?6IYKK+\IL&H_"%/K_\"7S^ZM/_I-4IXT-J<,5
-ME.B<,HS4$':E@4>^Y\U@NT&4(^(KBMP.2/,VA<^PH&O%0Z6O8W2[[?3[@DIG
-M5N1CB2!EO2D5^V(NCLZ^^$K#*<(C#]C\\2M)\QR27#9K]O(#+D3^89(Q@^O_
-M"</X"TM2;P`0-CH2]DI;,0*X8N<2`N7(S(9G@)'SW\B4^V(^FSA/*"A-BY_,
-MQ/T3C*ZW1JC*L(N)"].#W<\XG[3&7GO"U0J#%X3*81VS$L[4CER05.#W'KMB
-MQ`)/\N;F40.K;(8VBF1]QJ4?V26E\L"8:,Z;]$TT6GGCTQVQI?9*$^(O:K21
-MB31@-!IV2[*UN]-3MC^]`Z[Q6/PI!"/<(LR#/X"(M"S,HR;RJ;GWK,W12BR@
-MI(C]TU%E-:;_F4B^;HK9#O79@<.EA9C4)GA4CB$AN,?I.Q8&__ADC_=6=W#@
-M]@:+5KB+59.?EYP493U=\6ZK-W10^C3XVIFVA+A$XIB<#Y&$.8.<3?XKHE2Q
-MV(E@*XPX?;[[(JDWY_[D"VTW;].%S@S(-V,,?8U"YT,1)03Y![JF*O:WW,C$
-M:/S;(QBI'"=VP`,S3)',"2A*UJB0ZT:DB\LN..Z16#B#`=GISSCG#%A,R+^B
-M?YI!@9<MG?O*OOLQ`$6ER.9'<P7!N_O^V&@Y<6%K\>Y&MOQF0S*T":F(;:UQ
-MEY43B9#>;Z;,TN*9>PD8UHDMYE8&58#+_O=A'V%>/S2'!XV1;<>M._W)UUWP
-MO&C/56ST%YA@H.^'3T1JWUOI9X[H*\W4O.=#S13RN=B,*R?W5"5$SAJNG3_0
-M?R/IY0[4@2.NT?<8_B:IPQP4MJ>!+4?B#HXO'2>LP?`;W;\=<//I8=C+*4\T
-MMKI"AD5W[4R78TP5%2B`B5.>6@62&:T`!DQ%_I-K_.SM*U,LVHF)Q!NE*_%A
-M7'MKH@ZQ%6_0</<&,T37(+4')\&I73<DR=;L3"6[(MOY],K8Y&_WILZV`.)F
-M<HCC0WD-L)V4`ZX_NTZ1M*\&:/\JW7US>%FBDJ#^C$(0EIGQUHR_:2.<T/[4
-M]#M6>Y,KEH2VA'HO'D:=_L>W&B9D@F?%1?JK<"^Z@BSX<CP3C_R$CIMHW5.7
-MG7</R<FN7%/C4E#D+!(Z1:>@><6=^.:0A">TBNM^@ZXI^>ZCVP-:#7:ZX7@4
-MZ'$:7P3@:'$-)"0W&-#E[]DUNF4T>?GY/>%)B-#=@U4!?H:H;_6%N$^%3V-L
-MZKF+H<`&]7>7-7\4VEW>(E>"0'SDA?7EN%%@+0GJ%I/&:RW6EB$0K9U_)VHY
-MRQV8$_.),BW;OG/W)!UF=,/;@=YNEKP<;".">TM_JC3Q+0SNG/Y`^2[N:P>6
-MXB!N#C&B2&/(#'["/I801E^)`CU38=/UK0Z+I&Y[<K^-L;R.#%$-^#2NR./B
-MNTSY!F,J;U20<9WOV,6R8@^GW+J:B^"7]Z<TEI+\4V2&[`1GD;F,K05S#Y=P
-M*QG9NDXRODK2`7TRXD-[FI6NN,#*P_AY-;"74,U.L@C9W-6\@LCV%8MW?[12
-M@.>7_EI+N:D',E8@8#RS7G6+\5NP&[@$-_G)+HRF[PV.A3%%_E[QBED?E9)W
-MK<&OQ;B]@).LN"*SVH(UNCQ)'1Y?(7T'2DO[1XXZXCB*^&4-G;>[0F;!6+HH
-M\8YVXN[TCY0)L=]9+<3DP`)=6_N_J47.C;3A=\3+LNP#23,>0CVUT+FJW>8R
-MY-I\&1CQ0D.7IIT)?D$'KD';Y^LU(]OV`A`Q0Z14.NO.1+N$HB=X1DI%,UDP
-M35UO0IE@[5F+O/CI$U)9W`;`O*=>JL/L))5P4^J[);PW=5:\,T9MJ2X%"&DU
-M"_XCEH;QL:DG<(Q/_A:`S[H<T(>$%R,S-JNZQC'*J"A]6:J'0I7?U)@)KK5Z
-M>^C[8@AW"LJE2S6ZC;2#RQ%>*E4QI,8'>;$)2>;+*.*$TF?N;L&JBS)%.*1/
-MD8KU;0U_NY/Z%-$KTL&0[E2[!$&1A<A)@U[;7#]FH#V">)9V0)8C^8,JC8'D
-M_6ZN?'55'<TI%YC5Z_E5,L(8>0\EW8A(_UA!^U`G_R%.O5@-HG8)5=\,HA:5
-M/"#^=945W,^2[Z81B&5GBB=&06EY8Z/8SE$J$N,Y%6?MM]=2+58A7A;`!S<?
-M-[FSH"9CR9$O^9@4O]BI>:246T29^ZB%O_:;P[%D92EXY!\\$3/V+J"E3VU_
-MR=Z]9R&?=IW%1]=:J*KC5CO"%N]\SR'3L=1^.%\;L:(V\TBSW6*=7NF^BBN:
-M=?ZZ&(LCM(RJ40JH@[X)B^5*/_Q(@.!`%!XDM54+`RI`^-L1-P8`(!#$:[$,
-MB#=N4/0_]N:O,-_%])?U/.6X,EC;'["ZZ-BL,^_W8)XEX4FVB70/J]RI&Z<T
-M`)CS@+Z_7M6A%GDBUC)8O$)](D6OE+ZYTS@7S$O$$.6(Z3:02PKK2AV43#Z:
-M?)/"1LRF!UK!$6;U%15LB=DK^_K%%+[#W0L#K^$6%>LCY(M;`!./-MYPTH;Q
-MTF*@6H*N9:DEGJ)O)3[)4=5190Z>BX)DL,G(L^FN$E[HN,U.,_>V5,Y)1(^V
-M,.X_U2R];K$CWQ8TI18?7)QS-9L(>IR*!\3V-H6?O.HF<"7E8-SWK(115/6@
-MQL5ZDJ3)N%H^8IN^`[0\/V`6#?LL/VO:'OIA)FDY.P4`JX+EC%;HZ*E"]WV<
-MZ<EC4A31ND1L%?SY)H8?U=<=@</@Y8&7XJI4NJ"&B3]]=2(0_6A"+ZGX@+5_
-M(7;Y!N,;KF'OQUQ55;B3A\2X,C--JOZSI+NF)K\J([L%?/+#8AF[>KMAC&8F
-M5G&WG[>$>`N_04V")EXD',H2%H1:G7)^HXMIK5EK10TPAE`#H-*\LPH@DVO&
-MM8JJ"?8`'NA_:&M$3`_OJ9([U_C]XG#=\8'UA5R?Y&(_0ODNJ9B+>9*4(K-C
-MTWC'BH\H'6KBFUF!E1A6H_]X[:<ZQ'.J%J!N?,9("U?VSO'O:OU"N[8ZD`H*
-MLGXAX@3C*PVY2(F86+X+Q\&4L56*E^IF\K$)W-3AZ(V0ZOMU$F?/V.HMYZH4
-M<B^N\6M0\PO$:H8666J*@A/I]IB$L?'3$3FB>O-Y\.*E+'PQ6;$[Q$[M>#<`
-!9P``
-`
-end
diff --git a/usr.bin/uuencode/uudecode.c b/usr.bin/uuencode/uudecode.c
deleted file mode 100644
index cd97f7406cc2..000000000000
--- a/usr.bin/uuencode/uudecode.c
+++ /dev/null
@@ -1,471 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-3-Clause
- *
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#if 0
-#ifndef lint
-static const char copyright[] =
-"@(#) Copyright (c) 1983, 1993\n\
- The Regents of the University of California. All rights reserved.\n";
-#endif /* not lint */
-
-#ifndef lint
-static char sccsid[] = "@(#)uudecode.c 8.2 (Berkeley) 4/2/94";
-#endif /* not lint */
-#endif
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-/*
- * uudecode [file ...]
- *
- * create the specified file, decoding as you go.
- * used with uuencode.
- */
-#include <sys/param.h>
-#include <sys/socket.h>
-#include <sys/stat.h>
-
-#include <netinet/in.h>
-
-#include <ctype.h>
-#include <err.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <libgen.h>
-#include <pwd.h>
-#include <resolv.h>
-#include <stdbool.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-extern int main_decode(int, char *[]);
-
-static const char *infile, *outfile;
-static FILE *infp, *outfp;
-static bool base64, cflag, iflag, oflag, pflag, rflag, sflag;
-
-static void usage(void);
-static int decode(void);
-static int decode2(void);
-static int uu_decode(void);
-static int base64_decode(void);
-
-int
-main_decode(int argc, char *argv[])
-{
- int rval, ch;
-
- if (strcmp(basename(argv[0]), "b64decode") == 0)
- base64 = true;
-
- while ((ch = getopt(argc, argv, "cimo:prs")) != -1) {
- switch (ch) {
- case 'c':
- if (oflag || rflag)
- usage();
- cflag = true; /* multiple uudecode'd files */
- break;
- case 'i':
- iflag = true; /* ask before override files */
- break;
- case 'm':
- base64 = true;
- break;
- case 'o':
- if (cflag || pflag || rflag || sflag)
- usage();
- oflag = true; /* output to the specified file */
- sflag = true; /* do not strip pathnames for output */
- outfile = optarg; /* set the output filename */
- break;
- case 'p':
- if (oflag)
- usage();
- pflag = true; /* print output to stdout */
- break;
- case 'r':
- if (cflag || oflag)
- usage();
- rflag = true; /* decode raw data */
- break;
- case 's':
- if (oflag)
- usage();
- sflag = true; /* do not strip pathnames for output */
- break;
- default:
- usage();
- }
- }
- argc -= optind;
- argv += optind;
-
- if (*argv != NULL) {
- rval = 0;
- do {
- infp = fopen(infile = *argv, "r");
- if (infp == NULL) {
- warn("%s", *argv);
- rval = 1;
- continue;
- }
- rval |= decode();
- fclose(infp);
- } while (*++argv);
- } else {
- infile = "stdin";
- infp = stdin;
- rval = decode();
- }
- exit(rval);
-}
-
-static int
-decode(void)
-{
- int r, v;
-
- if (rflag) {
- /* relaxed alternative to decode2() */
- outfile = "/dev/stdout";
- outfp = stdout;
- if (base64)
- return (base64_decode());
- else
- return (uu_decode());
- }
- v = decode2();
- if (v == EOF) {
- warnx("%s: missing or bad \"begin\" line", infile);
- return (1);
- }
- for (r = v; cflag; r |= v) {
- v = decode2();
- if (v == EOF)
- break;
- }
- return (r);
-}
-
-static int
-decode2(void)
-{
- int flags, fd, mode;
- size_t n, m;
- char *p, *q;
- void *handle;
- struct passwd *pw;
- struct stat st;
- char buf[MAXPATHLEN + 1];
-
- base64 = false;
- /* search for header line */
- for (;;) {
- if (fgets(buf, sizeof(buf), infp) == NULL)
- return (EOF);
- p = buf;
- if (strncmp(p, "begin-base64 ", 13) == 0) {
- base64 = true;
- p += 13;
- } else if (strncmp(p, "begin ", 6) == 0)
- p += 6;
- else
- continue;
- /* p points to mode */
- q = strchr(p, ' ');
- if (q == NULL)
- continue;
- *q++ = '\0';
- /* q points to filename */
- n = strlen(q);
- while (n > 0 && (q[n-1] == '\n' || q[n-1] == '\r'))
- q[--n] = '\0';
- /* found valid header? */
- if (n > 0)
- break;
- }
-
- handle = setmode(p);
- if (handle == NULL) {
- warnx("%s: unable to parse file mode", infile);
- return (1);
- }
- mode = getmode(handle, 0) & 0666;
- free(handle);
-
- if (sflag) {
- /* don't strip, so try ~user/file expansion */
- p = NULL;
- pw = NULL;
- if (*q == '~')
- p = strchr(q, '/');
- if (p != NULL) {
- *p = '\0';
- pw = getpwnam(q + 1);
- *p = '/';
- }
- if (pw != NULL) {
- n = strlen(pw->pw_dir);
- if (buf + n > p) {
- /* make room */
- m = strlen(p);
- if (sizeof(buf) < n + m) {
- warnx("%s: bad output filename",
- infile);
- return (1);
- }
- p = memmove(buf + n, p, m);
- }
- q = memcpy(p - n, pw->pw_dir, n);
- }
- } else {
- /* strip down to leaf name */
- p = strrchr(q, '/');
- if (p != NULL)
- q = p + 1;
- }
- if (!oflag)
- outfile = q;
-
- /* POSIX says "/dev/stdout" is a 'magic cookie' not a special file. */
- if (pflag || strcmp(outfile, "/dev/stdout") == 0)
- outfp = stdout;
- else {
- flags = O_WRONLY | O_CREAT | O_EXCL;
- if (lstat(outfile, &st) == 0) {
- if (iflag) {
- warnc(EEXIST, "%s: %s", infile, outfile);
- return (0);
- }
- switch (st.st_mode & S_IFMT) {
- case S_IFREG:
- case S_IFLNK:
- /* avoid symlink attacks */
- if (unlink(outfile) == 0 || errno == ENOENT)
- break;
- warn("%s: unlink %s", infile, outfile);
- return (1);
- case S_IFDIR:
- warnc(EISDIR, "%s: %s", infile, outfile);
- return (1);
- default:
- if (oflag) {
- /* trust command-line names */
- flags &= ~O_EXCL;
- break;
- }
- warnc(EEXIST, "%s: %s", infile, outfile);
- return (1);
- }
- } else if (errno != ENOENT) {
- warn("%s: %s", infile, outfile);
- return (1);
- }
- if ((fd = open(outfile, flags, mode)) < 0 ||
- (outfp = fdopen(fd, "w")) == NULL) {
- warn("%s: %s", infile, outfile);
- return (1);
- }
- }
-
- if (base64)
- return (base64_decode());
- else
- return (uu_decode());
-}
-
-static int
-get_line(char *buf, size_t size)
-{
-
- if (fgets(buf, size, infp) != NULL)
- return (2);
- if (rflag)
- return (0);
- warnx("%s: %s: short file", infile, outfile);
- return (1);
-}
-
-static int
-checkend(const char *ptr, const char *end, const char *msg)
-{
- size_t n;
-
- n = strlen(end);
- if (strncmp(ptr, end, n) != 0 ||
- strspn(ptr + n, " \t\r\n") != strlen(ptr + n)) {
- warnx("%s: %s: %s", infile, outfile, msg);
- return (1);
- }
- if (fclose(outfp) != 0) {
- warn("%s: %s", infile, outfile);
- return (1);
- }
- return (0);
-}
-
-static int
-uu_decode(void)
-{
- int i, ch;
- char *p;
- char buf[MAXPATHLEN+1];
-
- /* for each input line */
- for (;;) {
- switch (get_line(buf, sizeof(buf))) {
- case 0:
- return (0);
- case 1:
- return (1);
- }
-
-#define DEC(c) (((c) - ' ') & 077) /* single character decode */
-#define IS_DEC(c) ( (((c) - ' ') >= 0) && (((c) - ' ') <= 077 + 1) )
-
-#define OUT_OF_RANGE do { \
- warnx("%s: %s: character out of range: [%d-%d]", \
- infile, outfile, ' ', 077 + ' ' + 1); \
- return (1); \
-} while (0)
-
- /*
- * `i' is used to avoid writing out all the characters
- * at the end of the file.
- */
- p = buf;
- if ((i = DEC(*p)) <= 0)
- break;
- for (++p; i > 0; p += 4, i -= 3)
- if (i >= 3) {
- if (!(IS_DEC(*p) && IS_DEC(*(p + 1)) &&
- IS_DEC(*(p + 2)) && IS_DEC(*(p + 3))))
- OUT_OF_RANGE;
-
- ch = DEC(p[0]) << 2 | DEC(p[1]) >> 4;
- putc(ch, outfp);
- ch = DEC(p[1]) << 4 | DEC(p[2]) >> 2;
- putc(ch, outfp);
- ch = DEC(p[2]) << 6 | DEC(p[3]);
- putc(ch, outfp);
- } else {
- if (i >= 1) {
- if (!(IS_DEC(*p) && IS_DEC(*(p + 1))))
- OUT_OF_RANGE;
- ch = DEC(p[0]) << 2 | DEC(p[1]) >> 4;
- putc(ch, outfp);
- }
- if (i >= 2) {
- if (!(IS_DEC(*(p + 1)) &&
- IS_DEC(*(p + 2))))
- OUT_OF_RANGE;
-
- ch = DEC(p[1]) << 4 | DEC(p[2]) >> 2;
- putc(ch, outfp);
- }
- if (i >= 3) {
- if (!(IS_DEC(*(p + 2)) &&
- IS_DEC(*(p + 3))))
- OUT_OF_RANGE;
- ch = DEC(p[2]) << 6 | DEC(p[3]);
- putc(ch, outfp);
- }
- }
- }
- switch (get_line(buf, sizeof(buf))) {
- case 0:
- return (0);
- case 1:
- return (1);
- default:
- return (checkend(buf, "end", "no \"end\" line"));
- }
-}
-
-static int
-base64_decode(void)
-{
- int n, count, count4;
- char inbuf[MAXPATHLEN + 1], *p;
- unsigned char outbuf[MAXPATHLEN * 4];
- char leftover[MAXPATHLEN + 1];
-
- leftover[0] = '\0';
- for (;;) {
- strcpy(inbuf, leftover);
- switch (get_line(inbuf + strlen(inbuf),
- sizeof(inbuf) - strlen(inbuf))) {
- case 0:
- return (0);
- case 1:
- return (1);
- }
-
- count = 0;
- count4 = -1;
- p = inbuf;
- while (*p != '\0') {
- /*
- * Base64 encoded strings have the following
- * characters in them: A-Z, a-z, 0-9 and +, / and =
- */
- if (isalnum(*p) || *p == '+' || *p == '/' || *p == '=')
- count++;
- if (count % 4 == 0)
- count4 = p - inbuf;
- p++;
- }
-
- strcpy(leftover, inbuf + count4 + 1);
- inbuf[count4 + 1] = 0;
-
- n = b64_pton(inbuf, outbuf, sizeof(outbuf));
-
- if (n < 0)
- break;
- fwrite(outbuf, 1, n, outfp);
- }
- return (checkend(inbuf, "====", "error decoding base64 input stream"));
-}
-
-static void
-usage(void)
-{
-
- (void)fprintf(stderr,
- "usage: uudecode [-cimprs] [file ...]\n"
- " uudecode [-i] -o output_file [file]\n"
- " b64decode [-cimprs] [file ...]\n"
- " b64decode [-i] -o output_file [file]\n");
- exit(1);
-}
diff --git a/usr.bin/uuencode/uuencode.c b/usr.bin/uuencode/uuencode.c
deleted file mode 100644
index f2d4b5b2b498..000000000000
--- a/usr.bin/uuencode/uuencode.c
+++ /dev/null
@@ -1,235 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-3-Clause
- *
- * Copyright (c) 1983, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#if 0
-#ifndef lint
-static const char copyright[] =
-"@(#) Copyright (c) 1983, 1993\n\
- The Regents of the University of California. All rights reserved.\n";
-#endif /* not lint */
-
-#ifndef lint
-static char sccsid[] = "@(#)uuencode.c 8.2 (Berkeley) 4/2/94";
-#endif /* not lint */
-#endif
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-/*
- * uuencode [input] output
- *
- * Encode a file so it can be mailed to a remote system.
- */
-#include <sys/param.h>
-#include <sys/socket.h>
-#include <sys/stat.h>
-
-#include <netinet/in.h>
-
-#include <err.h>
-#include <libgen.h>
-#include <resolv.h>
-#include <stdio.h>
-#include <stdbool.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-extern int main_encode(int, char *[]);
-
-static void encode(void);
-static void base64_encode(void);
-static void usage(void);
-
-static FILE *output;
-static int mode;
-static bool raw;
-static char **av;
-
-int
-main_encode(int argc, char *argv[])
-{
- struct stat sb;
- bool base64;
- int ch;
- const char *outfile;
-
- base64 = false;
- outfile = NULL;
-
- if (strcmp(basename(argv[0]), "b64encode") == 0)
- base64 = 1;
-
- while ((ch = getopt(argc, argv, "mo:r")) != -1) {
- switch (ch) {
- case 'm':
- base64 = true;
- break;
- case 'o':
- outfile = optarg;
- break;
- case 'r':
- raw = true;
- break;
- case '?':
- default:
- usage();
- }
- }
- argv += optind;
- argc -= optind;
-
- switch (argc) {
- case 2: /* optional first argument is input file */
- if (!freopen(*argv, "r", stdin) || fstat(fileno(stdin), &sb))
- err(1, "%s", *argv);
-#define RWX (S_IRWXU|S_IRWXG|S_IRWXO)
- mode = sb.st_mode & RWX;
- ++argv;
- break;
- case 1:
-#define RW (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)
- mode = RW & ~umask(RW);
- break;
- case 0:
- default:
- usage();
- }
-
- av = argv;
-
- if (outfile != NULL) {
- output = fopen(outfile, "w+");
- if (output == NULL)
- err(1, "unable to open %s for output", outfile);
- } else
- output = stdout;
- if (base64)
- base64_encode();
- else
- encode();
- if (ferror(output))
- errx(1, "write error");
- exit(0);
-}
-
-/* ENC is the basic 1 character encoding function to make a char printing */
-#define ENC(c) ((c) ? ((c) & 077) + ' ': '`')
-
-/*
- * Copy from in to out, encoding in base64 as you go along.
- */
-static void
-base64_encode(void)
-{
- /*
- * Output must fit into 80 columns, chunks come in 4, leave 1.
- */
-#define GROUPS ((80 / 4) - 1)
- unsigned char buf[3];
- char buf2[sizeof(buf) * 2 + 1];
- size_t n;
- int rv, sequence;
-
- sequence = 0;
-
- if (!raw)
- fprintf(output, "begin-base64 %o %s\n", mode, *av);
- while ((n = fread(buf, 1, sizeof(buf), stdin))) {
- ++sequence;
- rv = b64_ntop(buf, n, buf2, nitems(buf2));
- if (rv == -1)
- errx(1, "b64_ntop: error encoding base64");
- fprintf(output, "%s%s", buf2, (sequence % GROUPS) ? "" : "\n");
- }
- if (sequence % GROUPS)
- fprintf(output, "\n");
- if (!raw)
- fprintf(output, "====\n");
-}
-
-/*
- * Copy from in to out, encoding as you go along.
- */
-static void
-encode(void)
-{
- int ch, n;
- char *p;
- char buf[80];
-
- if (!raw)
- (void)fprintf(output, "begin %o %s\n", mode, *av);
- while ((n = fread(buf, 1, 45, stdin))) {
- ch = ENC(n);
- if (fputc(ch, output) == EOF)
- break;
- for (p = buf; n > 0; n -= 3, p += 3) {
- /* Pad with nulls if not a multiple of 3. */
- if (n < 3) {
- p[2] = '\0';
- if (n < 2)
- p[1] = '\0';
- }
- ch = *p >> 2;
- ch = ENC(ch);
- if (fputc(ch, output) == EOF)
- break;
- ch = ((*p << 4) & 060) | ((p[1] >> 4) & 017);
- ch = ENC(ch);
- if (fputc(ch, output) == EOF)
- break;
- ch = ((p[1] << 2) & 074) | ((p[2] >> 6) & 03);
- ch = ENC(ch);
- if (fputc(ch, output) == EOF)
- break;
- ch = p[2] & 077;
- ch = ENC(ch);
- if (fputc(ch, output) == EOF)
- break;
- }
- if (fputc('\n', output) == EOF)
- break;
- }
- if (ferror(stdin))
- errx(1, "read error");
- if (!raw)
- (void)fprintf(output, "%c\nend\n", ENC('\0'));
-}
-
-static void
-usage(void)
-{
- (void)fprintf(stderr,
-"usage: uuencode [-m] [-o outfile] [infile] remotefile\n"
-" b64encode [-o outfile] [infile] remotefile\n");
- exit(1);
-}
diff --git a/usr.bin/uuencode/uuencode.format.5 b/usr.bin/uuencode/uuencode.format.5
deleted file mode 100644
index f4032991e4d6..000000000000
--- a/usr.bin/uuencode/uuencode.format.5
+++ /dev/null
@@ -1,102 +0,0 @@
-.\" Copyright (c) 1989, 1991, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)uuencode.format.5 8.2 (Berkeley) 1/12/94
-.\" $FreeBSD$
-.\"
-.Dd January 12, 1994
-.Dt UUENCODE 5
-.Os
-.Sh NAME
-.Nm uuencode
-.Nd format of an encoded uuencode file
-.Sh DESCRIPTION
-Files output by
-.Xr uuencode 1
-consist of a header line,
-followed by a number of body lines,
-and a trailer line.
-The
-.Xr uudecode 1
-command
-will ignore any lines preceding the header or
-following the trailer.
-Lines preceding a header must not, of course,
-look like a header.
-.Pp
-The header line is distinguished by having the first
-6 characters
-.Dq begin\ \&
-(note the trailing space).
-The word
-.Em begin
-is followed by a mode (in octal),
-and a string which names the remote file.
-A space separates the three items in the header line.
-.Pp
-The body consists of a number of lines, each at most 62 characters
-long (including the trailing newline).
-These consist of a character count,
-followed by encoded characters,
-followed by a newline.
-The character count is a single printing character,
-and represents an integer, the number of bytes
-the rest of the line represents.
-Such integers are always in the range from 1 to 45 or 64 and can
-be determined by subtracting the character space (octal 40)
-from the character.
-Character 64 represents a count of zero.
-.Pp
-Groups of 3 bytes are stored in 4 characters, 6 bits per character.
-All characters are always in range from 1 to 64 and are offset by a
-space (octal 40) to make the characters printing.
-Character
-64 represents a count of zero.
-The last line may be shorter than the normal 45 bytes.
-If the size is not a multiple of 3, this fact can be determined
-by the value of the count on the last line.
-Extra null characters will be included to make the character count a multiple
-of 4.
-The body is terminated by a line with a count of zero.
-This line consists of one
-.Tn ASCII
-backquote (octal 140) character.
-.Pp
-The trailer line consists of
-.Dq end
-on a line by itself.
-.Sh SEE ALSO
-.Xr mail 1 ,
-.Xr uucp 1 ,
-.Xr uudecode 1 ,
-.Xr uuencode 1
-.Sh HISTORY
-The
-.Nm
-file format appeared in
-.Bx 4.0 .
-.\" It was named uuencode.5 prior to 4.3