diff options
-rw-r--r-- | man/mmime.1 | 12 | ||||
-rw-r--r-- | mmime.c | 22 |
2 files changed, 27 insertions, 7 deletions
diff --git a/man/mmime.1 b/man/mmime.1 index c772166..abca61d 100644 --- a/man/mmime.1 +++ b/man/mmime.1 @@ -21,12 +21,18 @@ mail from standard input, extending, wrapping, and encoding the header as neccessary, and replacing body lines looking like .Pp -.D1 Li # Ns Ar type Pa filename +.D1 Li # Ns Ar content Ns Li / Ns Ar type Ns Oo Ns Li # Ns Ar content-disposition Oc Pa path Ns Oo Li > Ns Ar filename Oc .Pp with a MIME part having Content-Type -.Ar type +.Ar content/type consisting of the contents of -.Pa filename . +.Pa path . +.Ar content-disposition +is optional and defaults to +.Sq attachment . +.Ar filename +is optional and defaults to the basename of +.Ar path . .Pp The options are as follows: .Bl -tag -width Ds diff --git a/mmime.c b/mmime.c index 0dbadfb..e8f58da 100644 --- a/mmime.c +++ b/mmime.c @@ -115,7 +115,7 @@ basenam(const char *s) } static void -gen_attachment(const char *filename) +gen_attachment(const char *filename, char *content_disposition) { const char *s = filename; int quote = 0; @@ -128,12 +128,12 @@ gen_attachment(const char *filename) } // filename SHOULD be an atom if possible - printf("Content-Disposition: attachment; filename=%s%s%s\n", + printf("Content-Disposition: %s; filename=%s%s%s\n", content_disposition, quote ? "\"" : "", filename, quote ? "\"" : ""); return; rfc2231: - printf("Content-Disposition: attachment"); + printf("Content-Disposition: %s", content_disposition); int i = 0; int d = 0; @@ -162,6 +162,20 @@ gen_file(char *file, char *ct) uint8_t *content; off_t size; + char *cd = "attachment"; + char *s = strchr(ct, '#'); + if (s) { + *s = 0; + cd = s + 1; + } + + const char *filename = basenam(file); + s = strchr(file, '>'); + if (s) { + *s = 0; + filename = s + 1; + } + int r = slurp(file, (char **)&content, &size); if (r != 0) { fprintf(stderr, "mmime: error attaching file '%s': %s\n", @@ -191,7 +205,7 @@ gen_file(char *file, char *ct) bithigh++; } - gen_attachment(basenam(file)); + gen_attachment(filename, cd); if (bitlow == 0 && bithigh == 0 && maxlinelen <= 78 && content[size-1] == '\n') { |