X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=uip%2Fsendsbr.c;h=08dc7666ec4e19d929d9ea991d6ff11af311a820;hb=d00b170aa19a82a22bf55516f2cdb33e26deca0c;hp=3eff75d97f803cba60fea318a43a26ac2649d390;hpb=c4d932d08940f689b39b654a714f9ef3657690a9;p=mmh diff --git a/uip/sendsbr.c b/uip/sendsbr.c index 3eff75d..08dc766 100644 --- a/uip/sendsbr.c +++ b/uip/sendsbr.c @@ -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++) {