about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--man/mmime.15
-rw-r--r--mmime.c9
2 files changed, 11 insertions, 3 deletions
diff --git a/man/mmime.1 b/man/mmime.1
index 30daa0b..c772166 100644
--- a/man/mmime.1
+++ b/man/mmime.1
@@ -7,6 +7,7 @@
 .Sh SYNOPSIS
 .Nm
 .Op Fl c | Fl r
+.Op Fl t Ar content-type
 <
 .Ar message
 .Sh DESCRIPTION
@@ -37,6 +38,10 @@ or with status 0 else.
 Raw mode: don't expand MIME parts in the body, generate a
 .Sq Li text/plain
 message.
+.It Fl t Ar content-type
+Override Content-Type for the toplevel part.
+Defaults to
+.Sq Li multipart/mixed .
 .El
 .Sh EXIT STATUS
 .Ex -std
diff --git a/mmime.c b/mmime.c
index 2d474cb..b229310 100644
--- a/mmime.c
+++ b/mmime.c
@@ -18,6 +18,7 @@
 
 static int cflag;
 static int rflag;
+static char *tflag = "multipart/mixed";
 
 int gen_b64(uint8_t *s, off_t size)
 {
@@ -320,7 +321,7 @@ gen_build()
 					printf("Content-Transfer-Encoding: quoted-printable\n\n");
 
 				} else {
-					printf("Content-Type: multipart/mixed; boundary=\"%s\"\n", sep);
+					printf("Content-Type: %s; boundary=\"%s\"\n", tflag, sep);
 					printf("\n");
 					printf("This is a multipart message in MIME format.\n");
 				}
@@ -423,13 +424,15 @@ main(int argc, char *argv[])
 	srand48(time(0) ^ getpid());
 
 	int c;
-	while ((c = getopt(argc, argv, "cr")) != -1)
+	while ((c = getopt(argc, argv, "crt:")) != -1)
 		switch(c) {
 		case 'r': rflag = 1; break;
 		case 'c': cflag = 1; break;
+		case 't': tflag = optarg; break;
 		default:
 		usage:
-			fprintf(stderr, "Usage: mmime [-c|-r] < message\n");
+			fprintf(stderr,
+"Usage: mmime [-c|-r] [-t CONTENT-TYPE] < message\n");
 			exit(1);
 		}