[bug #4302] errno is not always an extern int
[mmh] / uip / replsbr.c
index 57eb6cd..a7616d3 100644 (file)
@@ -3,6 +3,10 @@
  * replsbr.c -- routines to help repl along...
  *
  * $Id$
+ *
+ * This code is Copyright (c) 2002, by the authors of nmh.  See the
+ * COPYRIGHT file in the root directory of the nmh distribution for
+ * complete copyright information.
  */
 
 #include <h/mh.h>
@@ -72,14 +76,16 @@ replout (FILE *inb, char *msg, char *drft, struct msgs *mp, int outputlinelen,
     register char **nxtbuf;
     register char **ap;
     register struct comp **savecomp;
-    int        char_read = 0, format_len;
+    int        char_read = 0, format_len, mask;
     char name[NAMESZ], *scanl, *cp;
     FILE *out;
 
-    umask(~m_gmprot());
+    mask = umask(~m_gmprot());
     if ((out = fopen (drft, "w")) == NULL)
        adios (drft, "unable to create");
 
+    umask(mask);
+
     /* get new format string */
     cp = new_fs (form, NULL, NULL);
     format_len = strlen (cp);
@@ -160,13 +166,14 @@ replout (FILE *inb, char *msg, char *drft, struct msgs *mp, int outputlinelen,
                                tmpbuf = *nxtbuf++;
                            } else {
                                i = strlen (cp = cptr->c_text) - 1;
-                               if (cp[i] == '\n')
+                               if (cp[i] == '\n') {
                                    if (cptr->c_type & CT_ADDR) {
                                        cp[i] = '\0';
                                        cp = add (",\n\t", cp);
                                    } else {
                                        cp = add ("\t", cp);
                                    }
+                               }
                                cptr->c_text = add (tmpbuf, cp);
                            }
                            while (state == FLDPLUS) {
@@ -252,7 +259,7 @@ finished:
 
     /* return dynamically allocated buffers */
     free (scanl);
-    for (nxtbuf = compbuffers, i = ncomps; cptr = *savecomp++; nxtbuf++, i--)
+    for (nxtbuf = compbuffers, i = ncomps; (cptr = *savecomp++); nxtbuf++, i--)
        free (cptr->c_text);    /* if not nxtbuf, nxtbuf already freed */
     while ( i-- > 0)
         free (*nxtbuf++);      /* free unused nxtbufs */
@@ -334,7 +341,7 @@ formataddr (char *orig, char *str)
     }
 
     /* concatenate all the new addresses onto 'buf' */
-    for (isgroup = 0; cp = getname (str); ) {
+    for (isgroup = 0; (cp = getname (str)); ) {
        if ((mp = getm (cp, dfhost, dftype, AD_NAME, error)) == NULL) {
            snprintf (baddr, sizeof(baddr), "\t%s -- %s\n", cp, error);
            badaddrs = add (baddr, badaddrs);