Added more include directories to fix building in another directory.
[mmh] / uip / mhbuild.c
index 0fb5315..fde4a1d 100644 (file)
@@ -32,16 +32,12 @@ static struct swit switches[] = {
 #define VERBSW  0
        { "verbose", 0 },
 #define NVERBSW  1
-       { "noverbose", 0 },
-#define CONTENTIDSW  2
-       { "contentid", 0 },
-#define NCONTENTIDSW  3
-       { "nocontentid", 0 },
-#define VERSIONSW  4
-       { "version", 0 },
-#define HELPSW  5
+       { "noverbose", 2 },
+#define VERSIONSW  2
+       { "Version", 0 },
+#define HELPSW  3
        { "help", 0 },
-#define DEBUGSW  6
+#define DEBUGSW  4
        { "debug", -5 },
        { NULL, 0 }
 };
@@ -87,8 +83,6 @@ static CT build_mime(char *);
 int debugsw = 0;
 int verbosw = 0;
 
-int contentidsw = 1;
-
 /*
 ** Temporary files
 */
@@ -117,15 +111,13 @@ main(int argc, char **argv)
        char *cp, buf[BUFSIZ];
        char buffer[BUFSIZ], *compfile = NULL;
        char **argp, **arguments;
-       CT ct, cts[2];
+       CT ct;
        FILE *fp = NULL;
        FILE *fp_out = NULL;
 
        done = unlink_done;
 
-#ifdef LOCALE
        setlocale(LC_ALL, "");
-#endif
        invo_name = mhbasename(argv[0]);
 
        /* read user profile/context */
@@ -159,13 +151,6 @@ main(int argc, char **argv)
                                print_version(invo_name);
                                done(1);
 
-                       case CONTENTIDSW:
-                               contentidsw = 1;
-                               continue;
-                       case NCONTENTIDSW:
-                               contentidsw = 0;
-                               continue;
-
                        case VERBSW:
                                verbosw++;
                                continue;
@@ -235,8 +220,6 @@ main(int argc, char **argv)
 
                /* build the content structures for MIME message */
                ct = build_mime(infile);
-               cts[0] = ct;
-               cts[1] = NULL;
 
                /* output MIME message to this temporary file */
                strncpy(outfile, m_mktemp(invo_name, NULL, &fp_out),
@@ -270,8 +253,6 @@ main(int argc, char **argv)
 
        /* build the content structures for MIME message */
        ct = build_mime(compfile);
-       cts[0] = ct;
-       cts[1] = NULL;
 
        /* output MIME message to this temporary file */
        strncpy(outfile, m_mktemp2(compfile, invo_name, NULL, &fp_out),
@@ -283,14 +264,14 @@ main(int argc, char **argv)
        fclose(fp_out);
 
        /* Rename composition draft */
-       snprintf(buffer, sizeof(buffer), "%s.orig", m_backup(compfile));
+       snprintf(buffer, sizeof(buffer), "%s.orig", compfile);
        if (rename(compfile, buffer) == NOTOK) {
-               adios(compfile, "unable to rename comp draft %s to", buffer);
+               adios(buffer, "unable to rename draft %s to", compfile);
        }
 
        /* Rename output file to take its place */
        if (rename(outfile, compfile) == NOTOK) {
-               advise(outfile, "unable to rename output %s to", compfile);
+               advise(compfile, "unable to rename output %s to", outfile);
                rename(buffer, compfile);
                done(1);
        }
@@ -803,8 +784,8 @@ call_init:
                                adios(NULL, "sorry, \"#%s/%s\" isn't supported", ci->ci_type, ci->ci_subtype);
                        }
 use_forw:
-                       adios(NULL, "use \"#forw [+folder] [msgs]\" instead of \"#%s/%s\"", ci->ci_type, ci->ci_subtype);
-                       /* NOTREACHED */
+                       admonish(NULL, "use \"#forw [+folder] [msgs]\" instead of \"#%s/%s\"", ci->ci_type, ci->ci_subtype);
+                       /* FALL */
 
                default:
                        if ((ct->c_ctinitfnx = s2i->si_init))
@@ -1258,10 +1239,10 @@ static int
 scan_content(CT ct)
 {
        int len;
-       int check8bit = 0, contains8bit = 0;  /* check if contains 8bit data */
-       int checklinelen = 0, linelen = 0;  /* check for long lines */
-       int checkboundary = 0, boundaryclash = 0; /* check if clashes with multipart boundary   */
-       int checklinespace = 0, linespace = 0;  /* check if any line ends with space */
+       int check8bit = 0, contains8bit = 0;
+       int checklinelen = 0, linelen = 0;
+       int checkboundary = 0, boundaryclash = 0;
+       int checklinespace = 0, linespace = 0;  /* trailing whitespace */
        unsigned char *cp = NULL, buffer[BUFSIZ];
        struct text *t = NULL;
        FILE *in = NULL;
@@ -1316,13 +1297,6 @@ scan_content(CT ct)
                }
                break;
 
-       case CT_APPLICATION:
-               check8bit = 1;
-               checklinelen = 1;
-               checklinespace = 1;
-               checkboundary = 1;
-               break;
-
        case CT_MESSAGE:
                check8bit = 0;
                checklinelen = 0;
@@ -1330,13 +1304,10 @@ scan_content(CT ct)
                checkboundary = 1;
                break;
 
+       case CT_APPLICATION:
        case CT_AUDIO:
        case CT_IMAGE:
        case CT_VIDEO:
-               /*
-               ** Don't check anything for these types,
-               ** since we are forcing use of base64.
-               */
                check8bit = 0;
                checklinelen = 0;
                checklinespace = 0;
@@ -1353,9 +1324,6 @@ scan_content(CT ct)
                len = strlen(prefix);
 
                while (fgets(buffer, sizeof(buffer) - 1, in)) {
-                       /*
-                       ** Check for 8bit data.
-                       */
                        if (check8bit) {
                                for (cp = buffer; *cp; cp++) {
                                        if (!isascii(*cp)) {
@@ -1366,17 +1334,11 @@ scan_content(CT ct)
                                }
                        }
 
-                       /*
-                       ** Check line length.
-                       */
                        if (checklinelen && (strlen(buffer) > CPERLIN + 1)) {
                                linelen = 1;
                                checklinelen = 0;  /* no need to keep checking */
                        }
 
-                       /*
-                       ** Check if line ends with a space.
-                       */
                        if (checklinespace &&
                                        (cp = buffer + strlen(buffer) - 2) >
                                        buffer && isspace(*cp)) {
@@ -1445,24 +1407,19 @@ scan_content(CT ct)
                        ct->c_encoding = CE_7BIT;
                break;
 
-       case CT_APPLICATION:
-               /* For application type, use base64, except when postscript */
-               if (contains8bit || linelen || linespace)
-                       ct->c_encoding = (ct->c_subtype ==
-                                       APPLICATION_POSTSCRIPT) ?
-                                       CE_QUOTED : CE_BASE64;
-               else
-                       ct->c_encoding = CE_7BIT;
-               break;
-
        case CT_MESSAGE:
                ct->c_encoding = CE_7BIT;
                break;
 
+       case CT_APPLICATION:
        case CT_AUDIO:
        case CT_IMAGE:
        case CT_VIDEO:
-               /* For audio, image, and video contents, just use base64 */
+               /*
+               ** Forcing use of base64, because these types likely
+               ** contain binary data and NUL bytes. Don't care about
+               ** files that would be clean.
+               */
                ct->c_encoding = CE_BASE64;
                break;
        }
@@ -1553,9 +1510,9 @@ build_headers(CT ct)
        add_header(ct, np, vp);
 
        /*
-       ** output the Content-ID, unless disabled by -nocontentid
+       ** output the Content-ID
        */
-       if (contentidsw && ct->c_id) {
+       if (ct->c_id) {
                np = getcpy(ID_FIELD);
                vp = concat(" ", ct->c_id, NULL);
                add_header(ct, np, vp);