X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=lib-mime%2Frfc822address.c;h=c6b12ab7d750927025ff707a81fbdc06cda94179;hp=ad4e117c46fa9fe2994a582146666039a448ea11;hb=16534e98723674fa391e3fc29d2a07ce419c13dd;hpb=fc854762626c5e2dce8c5618860a882934ec81d2 diff --git a/lib-mime/rfc822address.c b/lib-mime/rfc822address.c index ad4e117..c6b12ab 100644 --- a/lib-mime/rfc822address.c +++ b/lib-mime/rfc822address.c @@ -32,11 +32,12 @@ void rfc822_qualify(address_t *addr, const char *host) { - char *p; + if (!host) + return; for (; addr; addr = addr->next) { if (!addr->group && addr->mailbox && !strchr(addr->mailbox, '@')) { - p = p_new(char, m_strlen(addr->mailbox) + m_strlen(host) + 2); + char *p = p_new(char, m_strlen(addr->mailbox) + m_strlen(host) + 2); sprintf(p, "%s@%s", addr->mailbox, host); p_delete(&addr->mailbox); addr->mailbox = p; @@ -144,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 '\\': @@ -388,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; @@ -402,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; @@ -424,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