The branch main has been updated by pstef:

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

commit aad4fd5495895bf1aa501037bb1e5df4e116a018
Author:     Piotr Pawel Stefaniak <ps...@freebsd.org>
AuthorDate: 2022-04-15 13:25:30 +0000
Commit:     Piotr Pawel Stefaniak <ps...@freebsd.org>
CommitDate: 2022-04-24 06:20:27 +0000

    Add a quoted-printable encoder/decoder
    
    As an example:
    printf 'We don=27t know what to do with other=20worlds.=0D=0A' \
    | bintrans qp -u
    
    Differential Revision:  https://reviews.freebsd.org/D34933
    
    Reviewed by:    debdrup (manpage)
---
 usr.bin/bintrans/Makefile                           |  2 +-
 usr.bin/bintrans/bintrans.1                         | 13 +++++++++++++
 usr.bin/bintrans/bintrans.c                         | 12 +++++++++---
 usr.bin/bintrans/{mmencode.c => quoted-printable.c} | 16 ++++++++++++----
 4 files changed, 35 insertions(+), 8 deletions(-)

diff --git a/usr.bin/bintrans/Makefile b/usr.bin/bintrans/Makefile
index 49acec470d76..a83c820bd660 100644
--- a/usr.bin/bintrans/Makefile
+++ b/usr.bin/bintrans/Makefile
@@ -4,7 +4,7 @@
 .include <src.opts.mk>
 
 PROG=  bintrans
-SRCS=  bintrans.c uuencode.c uudecode.c
+SRCS=  bintrans.c uuencode.c uudecode.c quoted-printable.c
 MAN=   bintrans.1 uuencode.format.5
 LINKS+=        ${BINDIR}/bintrans ${BINDIR}/uuencode
 LINKS+=        ${BINDIR}/bintrans ${BINDIR}/b64encode
diff --git a/usr.bin/bintrans/bintrans.1 b/usr.bin/bintrans/bintrans.1
index f489eb6fc258..24ce553d94e7 100644
--- a/usr.bin/bintrans/bintrans.1
+++ b/usr.bin/bintrans/bintrans.1
@@ -225,6 +225,19 @@ Wrap encoded output after
 .Nm
 is a generic utility that can run
 any of the aforementioned encoders and decoders.
+It can also run algorithms that are not available
+through a dedicated program:
+.Pp
+.Nm qp
+is a quoted-printable converter
+and accepts the following options:
+.Bl -tag -width ident
+.It Fl u
+Decode.
+.It Fl o Ar output_file
+Output to
+.Ar output_file
+instead of standard output.
 .Sh EXAMPLES
 The following example packages up a source tree, compresses it,
 uuencodes it and mails it to a user on another system.
diff --git a/usr.bin/bintrans/bintrans.c b/usr.bin/bintrans/bintrans.c
index 435f982ac520..04b3b10d84c8 100644
--- a/usr.bin/bintrans/bintrans.c
+++ b/usr.bin/bintrans/bintrans.c
@@ -38,6 +38,7 @@ extern int    main_decode(int, char *[]);
 extern int     main_encode(int, char *[]);
 extern int     main_base64_decode(const char *);
 extern int     main_base64_encode(const char *, const char *);
+extern int     main_quotedprintable(int, char*[]);
 
 static int     search(const char *const);
 static void    usage_base64(bool);
@@ -45,7 +46,7 @@ static void   version_base64(void);
 static void    base64_encode_or_decode(int, char *[]);
 
 enum coders {
-       uuencode, uudecode, b64encode, b64decode, base64
+       uuencode, uudecode, b64encode, b64decode, base64, qp
 };
 
 int
@@ -71,11 +72,15 @@ main(int argc, char *argv[])
        case base64:
                base64_encode_or_decode(argc, argv);
                break;
+       case qp:
+               main_quotedprintable(argc, argv);
+               break;
        default:
                (void)fprintf(stderr,
                    "usage: %1$s <uuencode | uudecode> ...\n"
                    "       %1$s <b64encode | b64decode> ...\n"
-                   "       %1$s <base64> ...\n",
+                   "       %1$s <base64> ...\n"
+                   "       %1$s <qp> ...\n",
                    progname);
                exit(EX_USAGE);
        }
@@ -90,7 +95,8 @@ search(const char *const progname)
                DESIGNATE(uudecode),
                DESIGNATE(b64encode),
                DESIGNATE(b64decode),
-               DESIGNATE(base64)
+               DESIGNATE(base64),
+               DESIGNATE(qp)
        };
 
        for (size_t i = 0; i < nitems(known); i++)
diff --git a/usr.bin/bintrans/mmencode.c b/usr.bin/bintrans/quoted-printable.c
similarity index 95%
rename from usr.bin/bintrans/mmencode.c
rename to usr.bin/bintrans/quoted-printable.c
index a391f4d7e1d4..b0e35509a2d9 100644
--- a/usr.bin/bintrans/mmencode.c
+++ b/usr.bin/bintrans/quoted-printable.c
@@ -18,6 +18,8 @@ WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES.
 #include <string.h>
 #include <ctype.h>
 
+extern int     main_quotedprintable(int, char *[]);
+
 static int
 PendingBoundary(char *s, char **Boundaries, int *BoundaryCt)
 {
@@ -211,8 +213,15 @@ fromqp(FILE *infile, FILE *outfile, char **boundaries, int 
*boundaryct)
        }
 }
 
+static void
+usage(void)
+{
+       fprintf(stderr,
+          "usage: bintrans qp [-u] [-o outputfile] [file name]\n");
+}
+
 int
-main(int argc, char *argv[])
+main_quotedprintable(int argc, char *argv[])
 {
        int i;
        bool encode = true;
@@ -224,7 +233,7 @@ main(int argc, char *argv[])
                        switch (argv[i][1]) {
                        case 'o':
                                if (++i >= argc) {
-                                       fprintf(stderr, "mimencode: -o requires 
a file name.\n");
+                                       fprintf(stderr, "qp: -o requires a file 
name.\n");
                                        exit(EXIT_FAILURE);
                                }
                                fpo = fopen(argv[i], "w");
@@ -237,8 +246,7 @@ main(int argc, char *argv[])
                                encode = false;
                                break;
                        default:
-                               fprintf(stderr,
-                                  "Usage: mmencode [-u] [-o outputfile] [file 
name]\n");
+                               usage();
                                exit(EXIT_FAILURE);
                        }
                } else {

Reply via email to