]> diplodocus.org Git - nmh/blobdiff - uip/replsbr.c
man/*.man: Fix some multi-word .B invocations.
[nmh] / uip / replsbr.c
index 43948bfde9b027bedb196bd8df2b46730f7e8b76..aff059a28c259767792c96e4668ef1300ceeb4a3 100644 (file)
@@ -115,17 +115,6 @@ replout (FILE *inb, char *msg, char *drft, struct msgs *mp, int outputlinelen,
        if (cptr)
            cptr->c_name = mh_xstrdup("");
     }
        if (cptr)
            cptr->c_name = mh_xstrdup("");
     }
-    /* set up the "fcc" pseudo-component */
-    if (fcc) {
-       cptr = fmt_findcomp ("fcc");
-       if (cptr)
-           cptr->c_text = mh_xstrdup(fcc);
-    }
-    if ((cp = getenv("USER"))) {
-       cptr = fmt_findcomp ("user");
-       if (cptr)
-           cptr->c_text = mh_xstrdup(cp);
-    }
     if (!ccme)
        ismymbox (NULL);
 
     if (!ccme)
        ismymbox (NULL);
 
@@ -179,6 +168,24 @@ replout (FILE *inb, char *msg, char *drft, struct msgs *mp, int outputlinelen,
 finished:
     m_getfld_state_destroy (&gstate);
 
 finished:
     m_getfld_state_destroy (&gstate);
 
+    /* set up the "fcc" pseudo-component */
+    cptr = fmt_findcomp ("fcc");
+    if (cptr) {
+       mh_xfree(cptr->c_text);
+       if (fcc)
+           cptr->c_text = mh_xstrdup(fcc);
+       else
+           cptr->c_text = NULL;
+    }
+    cptr = fmt_findcomp ("user");
+    if (cptr) {
+       mh_xfree(cptr->c_text);
+       if ((cp = getenv("USER")))
+           cptr->c_text = mh_xstrdup(cp);
+       else
+           cptr = NULL;
+    }
+
     /*
      * if there's a "Subject" component, strip any "Re:"s off it
      */
     /*
      * if there's a "Subject" component, strip any "Re:"s off it
      */
@@ -518,7 +525,7 @@ fix_addresses (char *str) {
             struct mailname *mp;
 
             NEW(adr_nodep);
             struct mailname *mp;
 
             NEW(adr_nodep);
-            adr_nodep->adr = strdup (cp);
+            adr_nodep->adr = mh_xstrdup (cp);
             adr_nodep->escape_local_part = 0;
             adr_nodep->fixed = 0;
             adr_nodep->next = NULL;
             adr_nodep->escape_local_part = 0;
             adr_nodep->fixed = 0;
             adr_nodep->next = NULL;
@@ -545,12 +552,12 @@ fix_addresses (char *str) {
          * Walk the list and try to fix broken addresses.
          */
         for (np = adrs; np; np = np->next) {
          * Walk the list and try to fix broken addresses.
          */
         for (np = adrs; np; np = np->next) {
-            char *display_name = strdup (np->adr);
+            char *display_name = mh_xstrdup (np->adr);
             size_t len = strlen (display_name);
 
             if (np->escape_local_part) {
                 char *local_part_end = strrchr (display_name, '<');
             size_t len = strlen (display_name);
 
             if (np->escape_local_part) {
                 char *local_part_end = strrchr (display_name, '<');
-                char *angle_addr = strdup (local_part_end);
+                char *angle_addr = mh_xstrdup (local_part_end);
                 struct mailname *mp;
                 char *new_adr, *adr;
 
                 struct mailname *mp;
                 char *new_adr, *adr;
 
@@ -571,7 +578,7 @@ fix_addresses (char *str) {
                 free (angle_addr);
                 free (new_adr);
                 free (np->adr);
                 free (angle_addr);
                 free (new_adr);
                 free (np->adr);
-                np->adr = strdup (adr);
+                np->adr = mh_xstrdup (adr);
 
                 /* Need to flush getname() */
                 while ((cp = getname (""))) continue;
 
                 /* Need to flush getname() */
                 while ((cp = getname (""))) continue;
@@ -594,7 +601,7 @@ fix_addresses (char *str) {
                     free (fixed_str);
                     fixed_str = new_str;
                 } else {
                     free (fixed_str);
                     fixed_str = new_str;
                 } else {
-                    fixed_str = strdup (np->adr);
+                    fixed_str = mh_xstrdup (np->adr);
                 }
             }
 
                 }
             }
 
@@ -608,5 +615,5 @@ fix_addresses (char *str) {
         return fixed_str;
     }
     free (fixed_str);
         return fixed_str;
     }
     free (fixed_str);
-    return str  ?  strdup (str)  :  NULL;
+    return str  ?  mh_xstrdup (str)  :  NULL;
 }
 }