]> diplodocus.org Git - nmh/blobdiff - uip/mhparse.c
Merge branch 'tmpfiles'
[nmh] / uip / mhparse.c
index 9489a8e4c01840ac64bb3c8dc459998954ecd0e7..5e35cbbf5c77e49881765681d17453a38e766914 100644 (file)
@@ -28,6 +28,12 @@ extern int wcachesw; /* mhcachesbr.c */
 
 int checksw = 0;       /* check Content-MD5 field */
 
+/*
+ * Directory to place temp files.  This must
+ * be set before these routines are called.
+ */
+char *tmp;
+
 /*
  * These are for mhfixmsg to:
  * 1) Instruct parser not to detect invalid Content-Transfer-Encoding
@@ -194,11 +200,11 @@ parse_mime (char *file)
     if ((is_stdin = !(strcmp (file, "-")))) {
         char *tfile = m_mktemp2(NULL, invo_name, NULL, &fp);
         if (tfile == NULL) {
-            advise("mhparse", "unable to create temporary file in %s",
-                  get_temp_dir());
+            advise("mhparse", "unable to create temporary file");
             return NULL;
         }
        file = add (tfile, NULL);
+       chmod (file, 0600);
 
        while (fgets (buffer, sizeof(buffer), stdin))
            fputs (buffer, fp);
@@ -1646,12 +1652,7 @@ openBase64 (CT ct, char **file)
     }
 
     if (*file == NULL) {
-       char *tempfile;
-       if ((tempfile = m_mktemp2(NULL, invo_name, NULL, NULL)) == NULL) {
-           adios(NULL, "unable to create temporary file in %s",
-                 get_temp_dir());
-       }
-       ce->ce_file = add (tempfile, NULL);
+       ce->ce_file = add (m_mktemp(tmp, NULL, NULL), NULL);
        ce->ce_unlink = 1;
     } else {
        ce->ce_file = add (*file, NULL);
@@ -1885,12 +1886,7 @@ openQuoted (CT ct, char **file)
     }
 
     if (*file == NULL) {
-       char *tempfile;
-       if ((tempfile = m_mktemp2(NULL, invo_name, NULL, NULL)) == NULL) {
-           adios(NULL, "unable to create temporary file in %s",
-                 get_temp_dir());
-       }
-       ce->ce_file = add (tempfile, NULL);
+       ce->ce_file = add (m_mktemp(tmp, NULL, NULL), NULL);
        ce->ce_unlink = 1;
     } else {
        ce->ce_file = add (*file, NULL);
@@ -2114,12 +2110,7 @@ open7Bit (CT ct, char **file)
     }
 
     if (*file == NULL) {
-       char *tempfile;
-       if ((tempfile = m_mktemp2(NULL, invo_name, NULL, NULL)) == NULL) {
-           adios(NULL, "unable to create temporary file in %s",
-                 get_temp_dir());
-       }
-       ce->ce_file = add (tempfile, NULL);
+       ce->ce_file = add (m_mktemp(tmp, NULL, NULL), NULL);
        ce->ce_unlink = 1;
     } else {
        ce->ce_file = add (*file, NULL);
@@ -2508,14 +2499,8 @@ openFTP (CT ct, char **file)
        ce->ce_file = add (*file, NULL);
     else if (caching)
        ce->ce_file = add (cachefile, NULL);
-    else {
-       char *tempfile;
-       if ((tempfile = m_mktemp2(NULL, invo_name, NULL, NULL)) == NULL) {
-           adios(NULL, "unable to create temporary file in %s",
-                 get_temp_dir());
-       }
-       ce->ce_file = add (tempfile, NULL);
-    }
+    else
+       ce->ce_file = add (m_mktemp(tmp, NULL, NULL), NULL);
 
     if ((ce->ce_fp = fopen (ce->ce_file, "w+")) == NULL) {
        content_error (ce->ce_file, ct, "unable to fopen for reading/writing");
@@ -2703,12 +2688,7 @@ openMail (CT ct, char **file)
     }
 
     if (*file == NULL) {
-       char *tempfile;
-       if ((tempfile = m_mktemp2(NULL, invo_name, NULL, NULL)) == NULL) {
-           adios(NULL, "unable to create temporary file in %s",
-                 get_temp_dir());
-       }
-       ce->ce_file = add (tempfile, NULL);
+       ce->ce_file = add (m_mktemp(tmp, NULL, NULL), NULL);
        ce->ce_unlink = 1;
     } else {
        ce->ce_file = add (*file, NULL);
@@ -2801,14 +2781,8 @@ openURL (CT ct, char **file)
        ce->ce_file = add(*file, NULL);
     else if (caching)
        ce->ce_file = add(cachefile, NULL);
-    else {
-       char *tempfile;
-       if ((tempfile = m_mktemp2(NULL, invo_name, NULL, NULL)) == NULL) {
-           adios(NULL, "unable to create temporary file in %s",
-                 get_temp_dir());
-       }
-       ce->ce_file = add (tempfile, NULL);
-    }
+    else
+       ce->ce_file = add(m_mktemp(tmp, NULL, NULL), NULL);
 
     if ((ce->ce_fp = fopen(ce->ce_file, "w+")) == NULL) {
        content_error(ce->ce_file, ct, "unable to fopen for read/writing");