Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 7 Apr 2016 16:12:39 +0000 (UTC)
From:      Pietro Cerutti <gahr@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r297678 - head/usr.bin/uuencode
Message-ID:  <201604071612.u37GCdn1037313@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: gahr (ports committer)
Date: Thu Apr  7 16:12:38 2016
New Revision: 297678
URL: https://svnweb.freebsd.org/changeset/base/297678

Log:
  Enhance uuencode with a -r option to produce raw output.
  
  This matches with uudecode's -r option to decode raw data without initial and
  final framing lines.
  
  $ echo Test | uuencode -mr - | uudecode -mr
  Test
  
  Approved by:	cognet
  MFC after:		1 week

Modified:
  head/usr.bin/uuencode/uuencode.1
  head/usr.bin/uuencode/uuencode.c

Modified: head/usr.bin/uuencode/uuencode.1
==============================================================================
--- head/usr.bin/uuencode/uuencode.1	Thu Apr  7 15:26:12 2016	(r297677)
+++ head/usr.bin/uuencode/uuencode.1	Thu Apr  7 16:12:38 2016	(r297678)
@@ -40,6 +40,7 @@
 .Sh SYNOPSIS
 .Nm
 .Op Fl m
+.Op Fl r 
 .Op Fl o Ar output_file
 .Op Ar file
 .Ar name
@@ -50,6 +51,7 @@
 .Op Fl i
 .Fl o Ar output_file
 .Nm b64encode
+.Op Fl r
 .Op Fl o Ar output_file
 .Op Ar file
 .Ar name
@@ -123,6 +125,8 @@ The following options are available for
 Use the Base64 method of encoding, rather than the traditional
 .Nm
 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

Modified: head/usr.bin/uuencode/uuencode.c
==============================================================================
--- head/usr.bin/uuencode/uuencode.c	Thu Apr  7 15:26:12 2016	(r297677)
+++ head/usr.bin/uuencode/uuencode.c	Thu Apr  7 16:12:38 2016	(r297678)
@@ -66,6 +66,7 @@ static void usage(void);
 
 static FILE *output;
 static int mode;
+static char raw = 0;
 static char **av;
 
 int
@@ -82,7 +83,7 @@ main(int argc, char *argv[])
 	if (strcmp(basename(argv[0]), "b64encode") == 0)
 		base64 = 1;
 
-	while ((ch = getopt(argc, argv, "mo:")) != -1) {
+	while ((ch = getopt(argc, argv, "mo:r")) != -1) {
 		switch (ch) {
 		case 'm':
 			base64 = 1;
@@ -90,6 +91,9 @@ main(int argc, char *argv[])
 		case 'o':
 			outfile = optarg;
 			break;
+		case 'r':
+			raw = 1;
+			break;
 		case '?':
 		default:
 			usage();
@@ -152,7 +156,8 @@ base64_encode(void)
 
 	sequence = 0;
 
-	fprintf(output, "begin-base64 %o %s\n", mode, *av);
+	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, (sizeof(buf2) / sizeof(buf2[0])));
@@ -162,7 +167,8 @@ base64_encode(void)
 	}
 	if (sequence % GROUPS)
 		fprintf(output, "\n");
-	fprintf(output, "====\n");
+	if (!raw)
+		fprintf(output, "====\n");
 }
 
 /*
@@ -175,7 +181,8 @@ encode(void)
 	register char *p;
 	char buf[80];
 
-	(void)fprintf(output, "begin %o %s\n", mode, *av);
+	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)
@@ -209,7 +216,8 @@ encode(void)
 	}
 	if (ferror(stdin))
 		errx(1, "read error");
-	(void)fprintf(output, "%c\nend\n", ENC('\0'));
+	if (!raw)
+		(void)fprintf(output, "%c\nend\n", ENC('\0'));
 }
 
 static void



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201604071612.u37GCdn1037313>