From bcd258a8c87234d3c8b606dfeb608155e3d23a0d Mon Sep 17 00:00:00 2001 From: Leah Neukirchen Date: Wed, 23 May 2018 16:24:48 +0200 Subject: maddr, mhdr: requote display names when needed --- maddr.c | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) (limited to 'maddr.c') diff --git a/maddr.c b/maddr.c index d8ac123..3e43eca 100644 --- a/maddr.c +++ b/maddr.c @@ -13,6 +13,29 @@ static char defaulthflags[] = "from:sender:reply-to:to:cc:bcc:" "resent-from:resent-sender:resent-to:resent-cc:resent-bcc:"; static char *hflag = defaulthflags; +void +print_quoted(char *s) +{ + char *t; + + for (t = s; *t; t++) + if ((unsigned char)*t < 32 || strchr("()<>[]:;@\\,.\"", *t)) + goto quote; + + printf("%s", s); + return; + +quote: + putchar('"'); + for (t = s; *t; t++) { + if (*t == '"' || *t == '\\') + putchar('\\'); + putchar(*t); + } + putchar('"'); + +} + void addr(char *file) { @@ -41,10 +64,12 @@ addr(char *file) if (disp && addr && strcmp(disp, addr) == 0) disp = 0; if (disp && addr) { - if (aflag) + if (aflag) { printf("%s\n", addr); - else - printf("%s <%s>\n", disp, addr); + } else { + print_quoted(disp); + printf(" <%s>\n", addr); + } } else if (addr) { printf("%s\n", addr); } -- cgit 1.4.1