]> diplodocus.org Git - nmh/blobdiff - uip/mhbuild.c
lock_file.c: close(2) file descriptor on failure, avoiding leak.
[nmh] / uip / mhbuild.c
index 8684c70fd116bf4e6073051d25cf018b3c2b0905..3b17f356d925a319c6ffed22c64629e0334f5e98 100644 (file)
@@ -1,6 +1,4 @@
-
-/*
- * mhbuild.c -- expand/translate MIME composition files
+/* mhbuild.c -- expand/translate MIME composition files
  *
  * This code is Copyright (c) 2002, by the authors of nmh.  See the
  * COPYRIGHT file in the root directory of the nmh distribution for
  *
  * This code is Copyright (c) 2002, by the authors of nmh.  See the
  * COPYRIGHT file in the root directory of the nmh distribution for
 #include <h/mhparse.h>
 #include <h/mhcachesbr.h>
 #include <h/utils.h>
 #include <h/mhparse.h>
 #include <h/mhcachesbr.h>
 #include <h/utils.h>
+#include "sbr/m_maildir.h"
+#include "sbr/m_mktemp.h"
+#include "mhfree.h"
+#include "mhoutsbr.h"
 
 #define MHBUILD_SWITCHES \
     X("auto", 0, AUTOSW) \
 
 #define MHBUILD_SWITCHES \
     X("auto", 0, AUTOSW) \
@@ -56,11 +58,11 @@ DEFINE_SWITCH_ENUM(MHBUILD);
 DEFINE_SWITCH_ARRAY(MHBUILD, switches);
 #undef X
 
 DEFINE_SWITCH_ARRAY(MHBUILD, switches);
 #undef X
 
-/* 8bit is Email Address Internationalization. */
+/* utf-8 is for Email Address Internationalization, using SMTPUTF8. */
 #define MIMEENCODING_SWITCHES \
     X("base64", 0, BASE64SW) \
     X("quoted-printable", 0, QUOTEDPRINTSW) \
 #define MIMEENCODING_SWITCHES \
     X("base64", 0, BASE64SW) \
     X("quoted-printable", 0, QUOTEDPRINTSW) \
-    X("8bit", 0, EIGHTBITSW) \
+    X("utf-8", 0, UTF8SW) \
 
 #define X(sw, minchars, id) id,
 DEFINE_SWITCH_ENUM(MIMEENCODING);
 
 #define X(sw, minchars, id) id,
 DEFINE_SWITCH_ENUM(MIMEENCODING);
@@ -70,12 +72,6 @@ DEFINE_SWITCH_ENUM(MIMEENCODING);
 DEFINE_SWITCH_ARRAY(MIMEENCODING, encodingswitches);
 #undef X
 
 DEFINE_SWITCH_ARRAY(MIMEENCODING, encodingswitches);
 #undef X
 
-/* mhcachesbr.c */
-extern int rcachesw;
-extern int wcachesw;
-extern char *cache_public;
-extern char *cache_private;
-
 int debugsw = 0;
 
 int listsw   = 0;
 int debugsw = 0;
 
 int listsw   = 0;
@@ -93,10 +89,6 @@ static int unlink_outfile = 0;
 
 static void unlink_done (int) NORETURN;
 
 
 static void unlink_done (int) NORETURN;
 
-/* mhbuildsbr.c */
-int output_message (CT, char *);
-int output_message_fp (CT, FILE *, char*);
-
 
 int
 main (int argc, char **argv)
 
 int
 main (int argc, char **argv)
@@ -114,7 +106,7 @@ main (int argc, char **argv)
     int header_encoding = CE_UNKNOWN;
     size_t n;
 
     int header_encoding = CE_UNKNOWN;
     size_t n;
 
-    if (nmh_init(argv[0], 1)) { return 1; }
+    if (nmh_init(argv[0], 2)) { return 1; }
 
     done=unlink_done;
 
 
     done=unlink_done;
 
@@ -125,8 +117,7 @@ main (int argc, char **argv)
        if (cp[0] == '-' && cp[1] == '\0') {
            if (compfile)
                adios (NULL, "cannot specify both standard input and a file");
        if (cp[0] == '-' && cp[1] == '\0') {
            if (compfile)
                adios (NULL, "cannot specify both standard input and a file");
-           else
-               compfile = cp;
+            compfile = cp;
            listsw = 0;         /* turn off -list if using standard in/out */
            verbosw = 0;        /* turn off -verbose listings */
            break;
            listsw = 0;         /* turn off -list if using standard in/out */
            verbosw = 0;        /* turn off -verbose listings */
            break;
@@ -169,9 +160,9 @@ main (int argc, char **argv)
            do_cache: ;
                if (!(cp = *argp++) || *cp == '-')
                    adios (NULL, "missing argument to %s", argp[-2]);
            do_cache: ;
                if (!(cp = *argp++) || *cp == '-')
                    adios (NULL, "missing argument to %s", argp[-2]);
-               switch (*icachesw = smatch (cp, caches)) {
+               switch (*icachesw = smatch (cp, cache_policy)) {
                case AMBIGSW:
                case AMBIGSW:
-                   ambigsw (cp, caches);
+                   ambigsw (cp, cache_policy);
                    done (1);
                case UNKWNSW:
                    adios (NULL, "%s unknown", cp);
                    done (1);
                case UNKWNSW:
                    adios (NULL, "%s unknown", cp);
@@ -246,7 +237,7 @@ main (int argc, char **argv)
                case QUOTEDPRINTSW:
                    header_encoding = CE_QUOTED;
                    break;
                case QUOTEDPRINTSW:
                    header_encoding = CE_QUOTED;
                    break;
-               case EIGHTBITSW:
+               case UTF8SW:
                    header_encoding = CE_8BIT;
                    break;
                default:
                    header_encoding = CE_8BIT;
                    break;
                default:
@@ -290,8 +281,7 @@ main (int argc, char **argv)
        }
        if (compfile)
            adios (NULL, "only one composition file allowed");
        }
        if (compfile)
            adios (NULL, "only one composition file allowed");
-       else
-           compfile = cp;
+        compfile = cp;
     }
 
     /*
     }
 
     /*
@@ -299,7 +289,7 @@ main (int argc, char **argv)
      */
     if ((cp = getenv ("MHBUILD"))) {
        if ((fp = fopen (cp, "r"))) {
      */
     if ((cp = getenv ("MHBUILD"))) {
        if ((fp = fopen (cp, "r"))) {
-           readconfig ((struct node **) 0, fp, cp, 0);
+           readconfig(NULL, fp, cp, 0);
            fclose (fp);
        } else {
            admonish ("", "unable to read $MHBUILD profile (%s)", cp);
            fclose (fp);
        } else {
            admonish ("", "unable to read $MHBUILD profile (%s)", cp);
@@ -310,7 +300,7 @@ main (int argc, char **argv)
      * Read the standard profile setup
      */
     if ((fp = fopen (cp = etcpath ("mhn.defaults"), "r"))) {
      * Read the standard profile setup
      */
     if ((fp = fopen (cp = etcpath ("mhn.defaults"), "r"))) {
-       readconfig ((struct node **) 0, fp, cp, 0);
+       readconfig(NULL, fp, cp, 0);
        fclose (fp);
     }
 
        fclose (fp);
     }
 
@@ -434,7 +424,7 @@ main (int argc, char **argv)
 }
 
 
 }
 
 
-static void
+static void NORETURN
 unlink_done (int status)
 {
     /*
 unlink_done (int status)
 {
     /*