X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=lib-mime%2Frfc822address.c;h=c6b12ab7d750927025ff707a81fbdc06cda94179;hp=36485d39e98ab0975a9d4652aae84667ed1705dd;hb=cfd5f411041c7ef44087b032751792fadc74586d;hpb=22116d7063ab4d7de33946d74ab8b9cbc0f3f6ef diff --git a/lib-mime/rfc822address.c b/lib-mime/rfc822address.c index 36485d3..c6b12ab 100644 --- a/lib-mime/rfc822address.c +++ b/lib-mime/rfc822address.c @@ -145,7 +145,7 @@ static const char *parse_comment(const char *s, static_buf *buf) case ')': level--; if (!level) - return s; + return s + 1; break; case '\\': @@ -389,8 +389,8 @@ rfc822_strcpy(char *buf, ssize_t buflen, const char *p, const char *specials) } } -ssize_t rfc822_write_address_single(char *buf, ssize_t buflen, - address_t *addr, int display) +ssize_t +rfc822_addrcpy(char *buf, ssize_t buflen, address_t *addr, int display) { ssize_t pos = 0; @@ -403,21 +403,18 @@ ssize_t rfc822_write_address_single(char *buf, ssize_t buflen, } if (addr->mailbox) { - if (!display) { - pos += m_strcpy(buf + pos, buflen - pos, addr->mailbox); - } else { - pos += m_strcpy(buf + pos, buflen - pos, mutt_addr_for_display(addr)); - } + pos += m_strcpy(buf + pos, buflen - pos, + display ? mutt_addr_for_display(addr) : addr->mailbox); if (addr->personal) { - pos += m_strcpy(buf + pos, buflen - pos, ">"); + pos += m_strputc(buf + pos, buflen - pos, '>'); } if (addr->group) { - pos += m_strcpy(buf + pos, buflen - pos, ":"); + pos += m_strputc(buf + pos, buflen - pos, ':'); } } else { - pos += m_strcpy(buf + pos, buflen - pos, ";"); + pos += m_strputc(buf + pos, buflen - pos, ';'); } return pos; @@ -425,19 +422,15 @@ ssize_t rfc822_write_address_single(char *buf, ssize_t buflen, /* note: it is assumed that `buf' is nul terminated! */ ssize_t -rfc822_write_address(char *buf, ssize_t buflen, address_t *addr, int display) +rfc822_addrcat(char *buf, ssize_t buflen, address_t *addr, int display) { - ssize_t pos; + ssize_t pos = m_strnlen(buf, buflen); - pos = m_strnlen(buf, buflen); - - if (pos) { + if (pos) pos += m_strcpy(buf + pos, buflen - pos, ", "); - } for (; addr; addr = addr->next) { - pos += rfc822_write_address_single(buf + pos, buflen - pos, - addr, display); + pos += rfc822_addrcpy(buf + pos, buflen - pos, addr, display); if (!addr->group && addr->next && addr->next->mailbox) { /* if there is another address, and its not a group mailbox name or