Added -messageid switch to send(1) and post(8). This allows selection
[mmh] / uip / sendsbr.c
index 09126c2..3865258 100644 (file)
@@ -35,8 +35,8 @@ char *distfile = NULL;
 
 static jmp_buf env;
 
-static char    body_file_name[MAXPATHLEN + 1];         /* name of temporary file for body content */
-static char    composition_file_name[MAXPATHLEN + 1];  /* name of mhbuild composition temporary file */
+static char    body_file_name[PATH_MAX + 1];           /* name of temporary file for body content */
+static char    composition_file_name[PATH_MAX + 1];    /* name of mhbuild composition temporary file */
 static int     field_size;                             /* size of header field buffer */
 static char    *field;                                 /* header field buffer */
 static FILE    *draft_file;                            /* draft file pointer */
@@ -186,12 +186,13 @@ static    int
 attach(char *attachment_header_field_name, char *draft_file_name,
        int attachformat)
 {
-    char               buf[MAXPATHLEN + 6];    /* miscellaneous buffer */
+    char               buf[PATH_MAX + 6];      /* miscellaneous buffer */
     int                        c;                      /* current character for body copy */
     int                        has_attachment;         /* draft has at least one attachment */
     int                        has_body;               /* draft has a message body */
     int                        length;                 /* length of attachment header field name */
     char               *p;                     /* miscellaneous string pointer */
+    FILE               *fp;                    /* pointer for mhn.defaults */
 
     /*
      * Open up the draft file.
@@ -301,6 +302,11 @@ attach(char *attachment_header_field_name, char *draft_file_name,
      * that specify attachments.  Add a mhbuild MIME composition file for each.
      */
 
+    if ((fp = fopen (p = etcpath ("mhn.defaults"), "r"))) {
+       readconfig ((struct node **) NULL, fp, p, 0);
+       fclose(fp);
+    }
+
     rewind(draft_file);
 
     while (get_line() != EOF && *field != '\0' && *field != '-') {
@@ -380,7 +386,7 @@ make_mime_composition_file_entry(char *file_name, int attachformat)
 {
     int                        binary;                 /* binary character found flag */
     int                        c;                      /* current character */
-    char               cmd[MAXPATHLEN + 6];    /* file command buffer */
+    char               cmd[PATH_MAX + 6];      /* file command buffer */
     char               *content_type;          /* mime content type */
     FILE               *fp;                    /* content and pipe file pointer */
     struct     node    *np;                    /* context scan node pointer */
@@ -450,7 +456,7 @@ make_mime_composition_file_entry(char *file_name, int attachformat)
         (void)fprintf(composition_file, "#%s; name=\"%s\"; x-unix-mode=0%.3ho",
             content_type, ((p = strrchr(file_name, '/')) == (char *)0) ? file_name : p + 1, (unsigned short)(st.st_mode & 0777));
 
-        if (strlen(file_name) > MAXPATHLEN) {
+        if (strlen(file_name) > PATH_MAX) {
             clean_up_temporary_files();
             adios((char *)0, "attachment file name `%s' too long.", file_name);
         }
@@ -496,10 +502,12 @@ make_mime_composition_file_entry(char *file_name, int attachformat)
         } else {
             /* Suppress Content-Id, insert simple Content-Disposition
                and Content-Description with filename. */
+            p = strrchr(file_name, '/');
             (void) fprintf (composition_file,
-                            "#%1$s; name=\"%2$s\" <> [%2$s]{attachment}",
+                            "#%s; name=\"%s\" <> [%s]{attachment}",
                             content_type,
-                            ((p = strrchr(file_name, '/')) == (char *)0) ? file_name : p + 1);
+                            (p == (char *)0) ? file_name : p + 1,
+                            (p == (char *)0) ? file_name : p + 1);
         }
 
         break;
@@ -513,10 +521,12 @@ make_mime_composition_file_entry(char *file_name, int attachformat)
         } else {
             /* Suppress Content-Id, insert Content-Disposition with
                modification date and Content-Description wtih filename. */
+            p = strrchr(file_name, '/');
             (void) fprintf (composition_file,
-                            "#%1$s; name=\"%2$s\" <>[%2$s]{attachment; modification-date=\"%3$s\"}",
+                            "#%s; name=\"%s\" <>[%s]{attachment; modification-date=\"%s\"}",
                             content_type,
-                            ((p = strrchr(file_name, '/')) == (char *)0) ? file_name : p + 1,
+                            (p == (char *)0) ? file_name : p + 1,
+                            (p == (char *)0) ? file_name : p + 1,
                             dtime (&st.st_mtime, 0));
         }
 
@@ -668,8 +678,7 @@ splitmsg (char **vec, int vecp, char *drft, struct stat *st, int delay)
        vec[vecp++] = "-queued";
 
     time (&clock);
-    snprintf (msgid, sizeof(msgid), "<%d.%ld@%s>",
-               (int) getpid(), (long) clock, LocalName());
+    snprintf (msgid, sizeof(msgid), "%s", message_id (clock, 0));
 
     fseek (in, start, SEEK_SET);
     for (partno = 1; partno <= nparts; partno++) {
@@ -771,11 +780,10 @@ splitmsg (char **vec, int vecp, char *drft, struct stat *st, int delay)
  */
 
 static int
-sendaux (char **vec, int vecp, char *volatile drft, struct stat *st)
+sendaux (char **vec, int vecp, char *drft, struct stat *st)
 {
     pid_t child_id;
-    int i, status;
-    volatile int fd, fd2;
+    int i, status, fd, fd2;
     char backup[BUFSIZ], buf[BUFSIZ];
 
     fd = pushsw ? tmp_fd () : NOTOK;