X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=lib-mime%2Frfc822.c;h=9009d4072ba0df7d843e1dc9149ea1faa6fff876;hb=3a63661c35d4b5f93501efab7e5478386ad02565;hp=22e54a46c15b2ba80cab16ac050162c991d9db48;hpb=7a368b3670a90656b2e0e724ed3efd79221f3d31;p=apps%2Fmadmutt.git diff --git a/lib-mime/rfc822.c b/lib-mime/rfc822.c index 22e54a4..9009d40 100644 --- a/lib-mime/rfc822.c +++ b/lib-mime/rfc822.c @@ -37,8 +37,6 @@ #include "mutt_idna.h" -const char RFC822Specials[] = "@.,:;<>[]\\\"()"; - void address_wipe(address_t *addr) { p_delete(&addr->personal); @@ -180,7 +178,7 @@ static const char *parse_quote(const char *s, static_buf *buf) return NULL; } -#define is_special(x) strchr(RFC822Specials,x) +const char RFC822Specials[] = "@.,:;<>[]\\\"()"; static const char *next_phrase(const char *s, static_buf *buf) { @@ -189,13 +187,13 @@ static const char *next_phrase(const char *s, static_buf *buf) return parse_quote(s + 1, buf); } - if (is_special(*s)) { + if (strchr(RFC822Specials, *s)) { stbuf_append(buf, *s); return s + 1; } while (*s) { - if (ISSPACE(*s) || is_special(*s)) + if (ISSPACE(*s) || strchr(RFC822Specials, *s)) break; stbuf_append(buf, *s++); } @@ -210,7 +208,7 @@ parse_mailboxdomain(const char *s, const char *nonspecial, static_buf *mbox, while (*s) { s = skipspaces(s); - if (!strchr(nonspecial, *s) && is_special(*s)) + if (!strchr(nonspecial, *s) && strchr(RFC822Specials, *s)) return s; if (*s == '(') { @@ -452,22 +450,19 @@ rfc822_write_address(char *buf, ssize_t buflen, address_t *addr, int display) buf[pos++] = ' '; } - while (addr) { + for (; addr; addr = addr->next) { pos += rfc822_write_address_single(buf + pos, buflen + 1 - pos, addr, display); - /* if there is another address, and its not a group mailbox name or - group terminator, add a comma to separate the addresses */ + if (!addr->group && addr->next && addr->next->mailbox) { + /* if there is another address, and its not a group mailbox name or + group terminator, add a comma to separate the addresses */ if (pos + 2 >= buflen) - goto done; - if (!buflen) - goto done; + break; buf[pos++] = ','; buf[pos++] = ' '; } - - addr = addr->next; } done: