X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=sendlib.c;h=0f676b901b55b1ce75f53470afa277ba0bb118b0;hp=8c3d68c87ee1bb39a74576bdd094408344726557;hb=fc854762626c5e2dce8c5618860a882934ec81d2;hpb=f3cbb9f51357972f6e74244494236a41dc4d84cd diff --git a/sendlib.c b/sendlib.c index 8c3d68c..0f676b9 100644 --- a/sendlib.c +++ b/sendlib.c @@ -1212,16 +1212,17 @@ BODY *mutt_make_file_attach (const char *path) static int get_toplevel_encoding (BODY * a) { - int e = ENC7BIT; + int e = ENC7BIT; - for (; a; a = a->next) { - if (a->encoding == ENCBINARY) - return (ENCBINARY); - else if (a->encoding == ENC8BIT) - e = ENC8BIT; - } + for (; a; a = a->next) { + if (a->encoding == ENCBINARY) + return ENCBINARY; + + if (a->encoding == ENC8BIT) + e = ENC8BIT; + } - return (e); + return e; } BODY *mutt_make_multipart (BODY * b) @@ -1271,41 +1272,40 @@ char *mutt_make_date (char *s, ssize_t len) /* wrapper around mutt_write_address() so we can handle very large recipient lists without needing a huge temporary buffer in memory */ -void mutt_write_address_list (address_t * adr, FILE * fp, int linelen, - int display) +void +mutt_write_address_list(address_t *addr, FILE *fp, int linelen, int display) { - address_t *tmp; - char buf[LONG_STRING]; - int count = 0; - int len; + int first = 1; + + while (addr) { + char buf[LONG_STRING]; + int len; + + len = rfc822_write_address_single(buf, ssizeof(buf), addr, display); + + if (!first) { + if (linelen + len > 74) { + fputs("\n\t", fp); + linelen = 8; /* tab is usually about 8 spaces... */ + } else + if (addr->mailbox) { + fputc(' ', fp); + linelen++; + } + } + first = 0; - while (adr) { - tmp = adr->next; - adr->next = NULL; - buf[0] = 0; - rfc822_write_address (buf, sizeof (buf), adr, display); - len = m_strlen(buf); - if (count && linelen + len > 74) { - fputs ("\n\t", fp); - linelen = len + 8; /* tab is usually about 8 spaces... */ - } - else { - if (count && adr->mailbox) { - fputc (' ', fp); - linelen++; - } - linelen += len; - } - fputs (buf, fp); - adr->next = tmp; - if (!adr->group && adr->next && adr->next->mailbox) { - linelen++; - fputc (',', fp); + linelen += len + 1; + fputs(buf, fp); + + if (!addr->group && addr->next && addr->next->mailbox) { + fputc(',', fp); + linelen++; + } + + addr = addr->next; } - adr = adr->next; - count++; - } - fputc ('\n', fp); + fputc ('\n', fp); } /* need to write the list in reverse because they are stored in reverse order @@ -1359,7 +1359,6 @@ static int edit_header(int mode, const char *s) * anonymous remailer chains. * */ - int mutt_write_rfc822_header (FILE * fp, ENVELOPE * env, BODY * attach, int mode, int privacy) { @@ -1888,7 +1887,7 @@ static int mutt_invoke_sendmail (address_t * from, /* the sender */ args = add_option(args, &argslen, &argsmax, "-B8BITMIME"); if (option (OPTENVFROM)) { - address_t *f = NULL; + address_t *f = EnvFrom; if (EnvFrom) f = EnvFrom; else if (from && !from->next) @@ -1914,7 +1913,7 @@ static int mutt_invoke_sendmail (address_t * from, /* the sender */ } #endif - if (argslen == argsmax) + if (argslen >= argsmax) p_realloc(&args, ++argsmax); args[argslen++] = NULL; @@ -1926,14 +1925,14 @@ static int mutt_invoke_sendmail (address_t * from, /* the sender */ if (childout) { struct stat st; - if (stat (childout, &st) == 0 && st.st_size > 0) - mutt_do_pager (_("Output of the delivery process"), childout, 0, - NULL); + if (!stat(childout, &st) && st.st_size > 0) + mutt_do_pager(_("Output of the delivery process"), childout, 0, + NULL); } } - } - else + } else { unlink (childout); + } p_delete(&childout); p_delete(&path); @@ -1968,38 +1967,31 @@ int mutt_invoke_mta (address_t * from, /* the sender */ /* For postponing (!final) do the necessary encodings only */ void mutt_prepare_envelope (ENVELOPE * env, int final) { - char buffer[LONG_STRING]; - if (final) { if (env->bcc && !(env->to || env->cc)) { /* some MTA's will put an Apparently-To: header field showing the Bcc: * recipients if there is no To: or Cc: field, so attempt to suppress * it by using an empty To: field. */ - env->to = address_new (); + env->to = address_new(); env->to->group = 1; - env->to->next = address_new (); - - buffer[0] = 0; - rfc822_strcpy(buffer, sizeof(buffer), "undisclosed-recipients", - RFC822Specials); - - env->to->mailbox = m_strdup(buffer); + env->to->next = address_new(); + env->to->mailbox = m_strdup("undisclosed-recipients"); } - mutt_set_followup_to (env); + mutt_set_followup_to(env); - if (!env->message_id && MsgIdFormat && *MsgIdFormat) - env->message_id = mutt_gen_msgid (); + if (!env->message_id && !m_strisempty(MsgIdFormat)) + env->message_id = mutt_gen_msgid(); } /* Take care of 8-bit => 7-bit conversion. */ - rfc2047_encode_adrlist (env->to, "To"); - rfc2047_encode_adrlist (env->cc, "Cc"); - rfc2047_encode_adrlist (env->bcc, "Bcc"); - rfc2047_encode_adrlist (env->from, "From"); - rfc2047_encode_adrlist (env->mail_followup_to, "Mail-Followup-To"); - rfc2047_encode_adrlist (env->reply_to, "Reply-To"); + rfc2047_encode_adrlist(env->to, "To"); + rfc2047_encode_adrlist(env->cc, "Cc"); + rfc2047_encode_adrlist(env->bcc, "Bcc"); + rfc2047_encode_adrlist(env->from, "From"); + rfc2047_encode_adrlist(env->mail_followup_to, "Mail-Followup-To"); + rfc2047_encode_adrlist(env->reply_to, "Reply-To"); if (env->subject) #ifdef USE_NNTP @@ -2064,8 +2056,8 @@ static int _mutt_bounce_message (FILE * fp, HEADER * h, address_t * to, fseeko (fp, h->offset, 0); fprintf (f, "Resent-From: %s", resent_from); fprintf (f, "\nResent-%s", mutt_make_date (date, sizeof (date))); - if (MsgIdFormat && *MsgIdFormat) - fprintf (f, "Resent-Message-ID: %s\n", mutt_gen_msgid ()); + if (!m_strisempty(MsgIdFormat)) + fprintf (f, "Resent-Message-ID: %s\n", mutt_gen_msgid()); fputs ("Resent-To: ", f); mutt_write_address_list (to, f, 11, 0); mutt_copy_header (fp, h, f, ch_flags, NULL);