1.\" $OpenBSD: uuencode.1,v 1.23 2010/09/29 07:44:57 jmc Exp $ 2.\" $FreeBSD: uuencode.1,v 1.26 2003/03/18 14:24:47 fanf Exp $ 3.\" 4.\" Copyright (c) 1980, 1990, 1993 5.\" The Regents of the University of California. All rights reserved. 6.\" 7.\" Redistribution and use in source and binary forms, with or without 8.\" modification, are permitted provided that the following conditions 9.\" are met: 10.\" 1. Redistributions of source code must retain the above copyright 11.\" notice, this list of conditions and the following disclaimer. 12.\" 2. Redistributions in binary form must reproduce the above copyright 13.\" notice, this list of conditions and the following disclaimer in the 14.\" documentation and/or other materials provided with the distribution. 15.\" 3. Neither the name of the University nor the names of its contributors 16.\" may be used to endorse or promote products derived from this software 17.\" without specific prior written permission. 18.\" 19.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 20.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 23.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 25.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 26.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 27.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 28.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 29.\" SUCH DAMAGE. 30.\" 31.\" @(#)uuencode.1 8.1 (Berkeley) 6/6/93 32.\" $FreeBSD$ 33.\" 34.Dd $Mdocdate: September 29 2010 $ 35.Dt UUENCODE 1 36.Os 37.Sh NAME 38.Nm uuencode , 39.Nm uudecode , 40.Nm b64encode , 41.Nm b64decode 42.Nd encode/decode a binary file 43.Sh SYNOPSIS 44.Nm uuencode 45.Op Fl m 46.Op Fl o Ar output_file 47.Op Ar file 48.Ar name 49.Nm uudecode 50.Op Fl cimprs 51.Op Ar 52.Nm uudecode 53.Op Fl i 54.Fl o Ar output_file 55.Op Ar file 56.Pp 57.Nm b64encode 58.Op Fl o Ar output_file 59.Op Ar file 60.Ar name 61.Nm b64decode 62.Op Fl ciprs 63.Op Ar 64.Nm b64decode 65.Op Fl i 66.Fl o Ar output_file 67.Op Ar file 68.Sh DESCRIPTION 69The 70.Nm uuencode 71and 72.Nm uudecode 73utilities are used to transmit binary files over transmission mediums 74that do not support formats other than printable 75.Tn ASCII 76data. 77.Nm b64encode 78and 79.Nm b64decode 80are equivalent to running 81.Nm uuencode 82and 83.Nm uudecode 84respectively with the 85.Fl m 86flag specified. 87.Pp 88.Nm uuencode 89reads 90.Ar file 91(or by default, the standard input) and writes an encoded version 92to the standard output, or to 93.Ar output_file 94if it has been specified. 95The encoding uses only printing 96.Tn ASCII 97characters and includes the 98mode of the file and the operand 99.Ar name 100for use by 101.Nm uudecode . 102.Pp 103.Nm uudecode 104transforms 105.Dq uuencoded 106files (or by default, the standard input) into the original form. 107The resulting file is named either 108.Ar name 109or (depending on options passed to 110.Nm uudecode ) 111.Ar output_file 112and will have the mode of the original file except that set-user-ID 113and execute bits are not retained. 114.Nm uudecode 115ignores any leading and trailing lines. 116.Pp 117The options for 118.Nm uuencode 119are as follows: 120.Bl -tag -width ident 121.It Fl m 122Use the Base64 method of encoding, rather than the traditional 123.Nm 124algorithm. 125.It Fl o Ar output_file 126Output to 127.Ar output_file 128instead of standard output. 129.El 130.Pp 131The options for 132.Nm uudecode 133are as follows: 134.Bl -tag -width ident 135.It Fl c 136Decode more than one uuencoded file from 137.Ar file 138if possible. 139.It Fl i 140Do not overwrite files. 141.It Fl m 142When used with the 143.Fl r 144flag, decode Base64 input instead of traditional 145.Nm 146input. 147Without 148.Fl r 149it has no effect. 150.It Fl o Ar output_file 151Output to 152.Ar output_file 153instead of any pathname contained in the input data. 154.It Fl p 155Decode 156.Ar file 157and write output to standard output. 158.It Fl r 159Decode raw (or broken) input which is missing the initial and 160possibly the final framing lines. 161The input is assumed to be in the traditional 162.Nm 163encoding, but if the 164.Fl m 165flag is used, or if the utility is invoked as 166.Nm b64decode , 167then the input is assumed to be in Base64 format. 168.It Fl s 169Do not strip output pathname to base filename. 170By default 171.Nm uudecode 172deletes any prefix ending with the last slash '/' for security 173reasons. 174.El 175.Sh EXIT STATUS 176The 177.Nm uuencode 178and 179.Nm uudecode 180utilities exit 0 on success, 181and \*(Gt0 if an error occurs. 182.Sh EXAMPLES 183The following example packages up a source tree, compresses it, 184uuencodes it and mails it to a user on another system. 185When 186.Nm uudecode 187is run on the target system, the file 188.Pa src_tree.tar.Z 189will be created which may then be uncompressed and extracted 190into the original tree. 191.Bd -literal -offset indent 192$ tar cf - src_tree | compress | \e 193uuencode src_tree.tar.Z | mail user@example.com 194.Ed 195.Pp 196The following example unpacks all uuencoded 197files from your mailbox into your current working directory. 198.Bd -literal -offset indent 199$ uudecode -c \*(Lt $MAIL 200.Ed 201.Pp 202The following example extracts a compressed tar 203archive from your mailbox 204.Bd -literal -offset indent 205$ uudecode -o /dev/stdout \*(Lt $MAIL | zcat | tar xfv - 206.Ed 207.Sh SEE ALSO 208.Xr basename 1 , 209.Xr compress 1 , 210.Xr mail 1 , 211.Xr uuencode 5 212.Sh STANDARDS 213The 214.Nm uudecode 215and 216.Nm uuencode 217utilities are compliant with the 218.St -p1003.1-2008 219specification. 220.Pp 221The flags 222.Op Fl ciprs 223are extensions to that specification. 224.Pp 225The use of the 226.Fl o 227flag for 228.Nm uuencode 229and the 230.Fl m 231flag for 232.Nm uudecode 233are also extensions to that specification. 234.Sh HISTORY 235The 236.Nm uudecode 237and 238.Nm 239utilities appeared in 240.Bx 4.0 . 241.Sh BUGS 242Files encoded using the traditional algorithm are expanded by 35% 243(3 bytes become 4 plus control information). 244