maddr, mhdr: requote display names when needed

pull/120/head
Leah Neukirchen 6 years ago
parent b4df5b006b
commit bcd258a8c8

@ -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);
}

@ -58,6 +58,29 @@ headerall(struct message *msg)
blaze822_free(msg);
}
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
print_addresses(char *s)
{
@ -74,10 +97,12 @@ print_addresses(char *s)
if (Hflag && addr)
printf("%s\t", curfile);
if (disp && addr)
printf("%s <%s>\n", disp, addr);
else if (addr)
if (disp && addr) {
print_quoted(disp);
printf(" <%s>\n", addr);
} else if (addr) {
printf("%s\n", addr);
}
}
}

Loading…
Cancel
Save