commit 750ea4da07d585a299d1990b717f94507df1b8cd
parent 663b4a4e04b5cd4d54704c2feedac4ded122abc1
Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Thu, 23 Aug 2018 14:15:24 +0200
sfeed_mbox: improvements
- don't output content and HTML mail anymore: this is very insecure for most
mail clients.
- improve Content-Type utf-8 encoding header (use the more common form).
- improve line-endings at the end of the data.
Diffstat:
2 files changed, 2 insertions(+), 58 deletions(-)
diff --git a/sfeed_mbox.1 b/sfeed_mbox.1
@@ -23,16 +23,12 @@ If no
.Ar file
parameters are specified and so the data is read from stdin the feed name
is empty.
-Lines starting with "From " will be mangled in the mboxrd-style.
The mbox data can be further processed by tools like
.Xr procmail 1
or
.Xr fdm 1
for example.
See the README file for some useful examples.
-.Sh FORMAT
-Depending on the original content\-type the mail will be formatted as
-plain-text (text/plain) or HTML (text/html).
.Sh CUSTOM HEADERS
To make further filtering simpler some custom headers are set:
.Bl -tag -width Ds
diff --git a/sfeed_mbox.c b/sfeed_mbox.c
@@ -70,47 +70,6 @@ murmur3_32(const char *key, uint32_t len, uint32_t seed)
return hash;
}
-/* Unescape / decode fields printed by string_print_encoded()
- * "\\" to "\", "\t", to TAB, "\n" to newline. Unrecognised escape sequences
- * are ignored: "\z" etc. Mangle "From " in mboxrd style (always prefix >). */
-static void
-printcontent(const char *s, FILE *fp)
-{
- if (!strncmp(s, "From ", 5))
- fputc('>', fp);
-
-read:
- for (; *s; s++) {
- switch (*s) {
- case '\\':
- switch (*(++s)) {
- case '\0': return; /* ignore */
- case '\\': fputc('\\', fp); break;
- case 't': fputc('\t', fp); break;
- case 'n':
- fputc('\n', fp);
- for (s++; *s == '>'; s++)
- fputc('>', fp);
- /* escape "From ", mboxrd-style. */
- if (!strncmp(s, "From ", 5))
- fputc('>', fp);
- goto read;
- }
- break;
- case '\n':
- fputc((int)*s, fp);
- for (s++; *s == '>'; s++)
- fputc('>', fp);
- /* escape "From ", mboxrd-style. */
- if (!strncmp(s, "From ", 5))
- fputc('>', fp);
- goto read;
- default:
- fputc((int)*s, fp);
- }
- }
-}
-
static void
printfeed(FILE *fp, const char *feedname)
{
@@ -148,22 +107,11 @@ printfeed(FILE *fp, const char *feedname)
fields[FieldUnixTimestamp][0] ? "." : "",
murmur3_32(line, (size_t)linelen, seed),
feedname);
- printf("Content-Type: text/%s; charset=UTF-8\n", fields[FieldContentType]);
+ printf("Content-Type: text/plain; charset=\"utf-8\"\n");
printf("Content-Transfer-Encoding: binary\n");
printf("X-Feedname: %s\n\n", feedname);
- if (!strcmp(fields[FieldContentType], "html")) {
- fputs("<p>Link: <a href=\"", stdout);
- xmlencode(fields[FieldLink], stdout);
- fputs("\">", stdout);
- fputs(fields[FieldLink], stdout);
- fputs("</a></p>\n\n", stdout);
- printcontent(fields[FieldContent], stdout);
- } else {
- printf("Link: %s\n\n", fields[FieldLink]);
- printcontent(fields[FieldContent], stdout);
- }
- fputs("\n\n", stdout);
+ printf("%s\n\n", fields[FieldLink]);
}
}