]> diplodocus.org Git - nmh/blobdiff - uip/replsbr.c
mhshowsbr.c: Remove else after break in iconv_start().
[nmh] / uip / replsbr.c
index 43948bfde9b027bedb196bd8df2b46730f7e8b76..9e3183e499a448aa99c144f64cfae47da48d6e6c 100644 (file)
@@ -1,6 +1,4 @@
-
-/*
- * replsbr.c -- routines to help repl along...
+/* replsbr.c -- routines to help repl along...
  *
  * This code is Copyright (c) 2002, by the authors of nmh.  See the
  * COPYRIGHT file in the root directory of the nmh distribution for
@@ -115,17 +113,6 @@ replout (FILE *inb, char *msg, char *drft, struct msgs *mp, int outputlinelen,
        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);
 
@@ -179,6 +166,24 @@ replout (FILE *inb, char *msg, char *drft, struct msgs *mp, int outputlinelen,
 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
      */
@@ -518,7 +523,7 @@ fix_addresses (char *str) {
             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;
@@ -545,12 +550,12 @@ fix_addresses (char *str) {
          * 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, '<');
-                char *angle_addr = strdup (local_part_end);
+                char *angle_addr = mh_xstrdup (local_part_end);
                 struct mailname *mp;
                 char *new_adr, *adr;
 
@@ -571,7 +576,7 @@ fix_addresses (char *str) {
                 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;
@@ -594,7 +599,7 @@ fix_addresses (char *str) {
                     free (fixed_str);
                     fixed_str = new_str;
                 } else {
-                    fixed_str = strdup (np->adr);
+                    fixed_str = mh_xstrdup (np->adr);
                 }
             }
 
@@ -608,5 +613,5 @@ fix_addresses (char *str) {
         return fixed_str;
     }
     free (fixed_str);
-    return str  ?  strdup (str)  :  NULL;
+    return str  ?  mh_xstrdup (str)  :  NULL;
 }