various code simplifications.
[apps/madmutt.git] / lib-mime / rfc822address.c
index cf88c95..36485d3 100644 (file)
  * please see the file GPL in the top level source directory.
  */
 
-#include <string.h>
-#include <ctype.h>
-#include <stdlib.h>
-
 #include <lib-lib/lib-lib.h>
 
 #include "mutt_idna.h"
 
 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);
-            sprintf(p, "%s@%s", addr->mailbox, host);        /* __SPRINTF_CHECKED__ */
+            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;
         }
@@ -400,15 +397,9 @@ ssize_t rfc822_write_address_single(char *buf, ssize_t buflen,
     if (!addr)
         return 0;
 
-    buflen--;                     /* save room for the terminal nul */
-
     if (addr->personal) {
         pos = rfc822_strcpy(buf, buflen, addr->personal, RFC822Specials);
-        if (pos + 2 >= buflen)
-            goto done;
-
-        buf[pos++] = ' ';
-        buf[pos++] = '<';
+        pos += m_strcpy(buf + pos, buflen - pos, " <");
     }
 
     if (addr->mailbox) {
@@ -419,26 +410,16 @@ ssize_t rfc822_write_address_single(char *buf, ssize_t buflen,
         }
 
         if (addr->personal) {
-            if (pos + 1 >= buflen)
-                goto done;
-            buf[pos++] = '>';
+            pos += m_strcpy(buf + pos, buflen - pos, ">");
         }
 
         if (addr->group) {
-            if (pos + 1 >= buflen)
-                goto done;
-            buf[pos++] = ':';
+            pos += m_strcpy(buf + pos, buflen - pos, ":");
         }
     } else {
-        if (pos + 1 >= buflen)
-            goto done;
-        buf[pos++] = ';';
+        pos += m_strcpy(buf + pos, buflen - pos, ";");
     }
 
-  done:
-    /* no need to check for length here since we already save space at the
-       beginning of this routine */
-    buf[pos] = 0;
     return pos;
 }
 
@@ -448,34 +429,23 @@ rfc822_write_address(char *buf, ssize_t buflen, address_t *addr, int display)
 {
     ssize_t pos;
 
-    buflen--;                     /* save room for the terminal nul */
     pos = m_strnlen(buf, buflen);
 
     if (pos) {
-        if (pos + 2 >= buflen)
-            goto done;
-
-        buf[pos++] = ',';
-        buf[pos++] = ' ';
+        pos += m_strcpy(buf + pos, buflen - pos, ", ");
     }
 
     for (; addr; addr = addr->next) {
-        pos += rfc822_write_address_single(buf + pos, buflen + 1 - pos,
+        pos += rfc822_write_address_single(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
                group terminator, add a comma to separate the addresses */
-            if (pos + 2 >= buflen)
-                break;
-
-            buf[pos++] = ',';
-            buf[pos++] = ' ';
+            pos += m_strcpy(buf + pos, buflen - pos, ", ");
         }
     }
 
-  done:
-    buf[pos] = '\0';
     return pos;
 }