Added default_content_type argument to
[mmh] / uip / sendsbr.c
index 3eff75d..08dc766 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 */
@@ -63,7 +63,7 @@ static int sendaux (char **, int, char *, struct stat *);
 static int     attach(char *, char *, int);
 static void    clean_up_temporary_files(void);
 static int     get_line(void);
-static void    make_mime_composition_file_entry(char *, int);
+static void    make_mime_composition_file_entry(char *, int, char *);
 
 
 /*
@@ -186,7 +186,7 @@ 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 */
@@ -292,10 +292,13 @@ attach(char *attachment_header_field_name, char *draft_file_name,
 
     /*
      * Add a mhbuild MIME composition file line for the body if there was one.
+     *  Set the default content type to text/plain so that mhbuild takes care
+     *  of any necessary encoding.
      */
 
     if (has_body)
-       make_mime_composition_file_entry(body_file_name, attachformat);
+       make_mime_composition_file_entry(body_file_name, attachformat,
+                                        "text/plain");
 
     /*
      * Now, go back to the beginning of the draft file and look for header fields
@@ -314,7 +317,10 @@ attach(char *attachment_header_field_name, char *draft_file_name,
            for (p = field + length + 1; *p == ' ' || *p == '\t'; p++)
                ;
 
-           make_mime_composition_file_entry(p, attachformat);
+           /* Don't set the default content type so take
+              make_mime_composition_file_entry() will try to infer it
+              from the file type. */
+           make_mime_composition_file_entry(p, attachformat, 0);
        }
     }
 
@@ -382,18 +388,19 @@ get_line(void)
 }
 
 static void
-make_mime_composition_file_entry(char *file_name, int attachformat)
+make_mime_composition_file_entry(char *file_name, int attachformat,
+                                 char *default_content_type)
 {
     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 */
     char               *p;                     /* miscellaneous string pointer */
     struct     stat    st;                     /* file status buffer */
 
-    content_type = (char *)0;
+    content_type = default_content_type;
 
     /*
      * Check the file name for a suffix.  Scan the context for that suffix on a
@@ -456,7 +463,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);
         }
@@ -678,8 +685,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(1));
+    snprintf (msgid, sizeof(msgid), "%s", message_id (clock, 0));
 
     fseek (in, start, SEEK_SET);
     for (partno = 1; partno <= nparts; partno++) {