X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=sendlib.c;h=4c5219e38441c77e1ec7e58b5e6a93801b892f1b;hp=f5bbd845bf3107e2825a882ed021cc2c35e9fada;hb=61c6367b9a56cf1b8180debf8a77af7300407504;hpb=3766db5f849cea008b1cd3d532c712aeb17aa062 diff --git a/sendlib.c b/sendlib.c index f5bbd84..4c5219e 100644 --- a/sendlib.c +++ b/sendlib.c @@ -231,7 +231,8 @@ static void encode_base64 (fgetconv_t * fc, FILE * fout, int istext) fputc ('\n', fout); } -static void encode_8bit (fgetconv_t * fc, FILE * fout, int istext) +static void encode_8bit (fgetconv_t * fc, FILE * fout, + int istext __attribute__ ((unused))) { int ch; @@ -395,7 +396,7 @@ int mutt_write_mime_body (BODY * a, FILE * f) #undef write_as_text_part fgetconv_close (&fc); - fclose (fpin); + m_fclose(&fpin); return (ferror (f) ? -1 : 0); } @@ -885,7 +886,7 @@ int mutt_lookup_mime_type (BODY * att, const char *path) p = NULL; } } - fclose (f); + m_fclose(&f); } } @@ -918,7 +919,7 @@ void mutt_message_to_7bit (BODY * a, FILE * fp) a->offset = 0; if (stat (a->filename, &sb) == -1) { mutt_perror ("stat"); - fclose (fpin); + m_fclose(&fpin); } a->length = sb.st_size; } @@ -946,9 +947,9 @@ cleanup: p_delete(&line); if (fpin && !fp) - fclose (fpin); + m_fclose(&fpin); if (fpout) - fclose (fpout); + m_fclose(&fpout); else return; @@ -995,7 +996,7 @@ static void transform_to_7bit (BODY * a, FILE * fpin) } s.fpin = fpin; mutt_decode_attachment (a, &s); - fclose (s.fpout); + m_fclose(&s.fpout); a->d_filename = a->filename; a->filename = m_strdup(buff); a->unlink = 1; @@ -1112,8 +1113,8 @@ BODY *mutt_make_message_attach (CONTEXT * ctx, HEADER * hdr, int attach_msg) return (NULL); } - mutt_mktemp (buffer); - if ((fp = safe_fopen (buffer, "w+")) == NULL) + fp = m_tempfile(buffer, sizeof(buffer), NONULL(Tempdir), NULL); + if (!fp) return NULL; body = body_new(); @@ -1167,7 +1168,7 @@ BODY *mutt_make_message_attach (CONTEXT * ctx, HEADER * hdr, int attach_msg) mutt_update_encoding (body); body->parts = body->hdr->content; - fclose (fp); + m_fclose(&fp); return (body); } @@ -1307,31 +1308,22 @@ void mutt_write_address_list (address_t * adr, FILE * fp, int linelen, fputc ('\n', fp); } -/* arbitrary number of elements to grow the array by */ -#define REF_INC 16 - -#define TrimRef 10 - /* need to write the list in reverse because they are stored in reverse order * when parsed to speed up threading */ -void mutt_write_references (string_list_t * r, FILE * f) +void mutt_write_references(string_list_t *r, FILE *f) { - string_list_t **ref = NULL; - int refcnt = 0, refmax = 0; + string_list_t *refs[10]; + int i; - for (; (TrimRef == 0 || refcnt < TrimRef) && r; r = r->next) { - if (refcnt == refmax) - p_realloc(&ref, refmax += REF_INC); - ref[refcnt++] = r; - } - - while (refcnt-- > 0) { - fputc (' ', f); - fputs (ref[refcnt]->data, f); - } + p_clear(refs, countof(refs)); + for (i = 0; i < countof(refs) && r; r = r->next) { + refs[i++] = r; + } - p_delete(&ref); + while (i-- > 0) { + fprintf(f, " %s", refs[i]->data); + } } static int edit_header(int mode, const char *s) @@ -1571,12 +1563,6 @@ const char *mutt_fqdn (short may_hide_host) return p; } -/* normalized character (we're stricter than RFC2822, 3.6.4) */ -static char mutt_normalized_char(char c) -{ - return (isalnum(c) || strchr(".!#$%&'*+-/=?^_`{|}~", c)) ? c : '.'; -} - static void mutt_gen_localpart(char *buf, unsigned int len, const char *fmt) { #define APPEND_FMT(fmt, arg) \ @@ -1604,7 +1590,8 @@ static void mutt_gen_localpart(char *buf, unsigned int len, const char *fmt) int c = *fmt++; if (c != '%') { - APPEND_BYTE(mutt_normalized_char(c)); + /* normalized character (we're stricter than RFC2822, 3.6.4) */ + APPEND_BYTE((isalnum(c) || strchr(".!#$%&'*+-/=?^_`{|}~", c)) ? c : '.'); continue; } @@ -1656,7 +1643,6 @@ static void mutt_gen_localpart(char *buf, unsigned int len, const char *fmt) break; default: /* invalid formats are replaced by '.' */ APPEND_BYTE('.'); - m_strncat(buf, len, ".", 1); } } @@ -1668,19 +1654,19 @@ static void mutt_gen_localpart(char *buf, unsigned int len, const char *fmt) static char *mutt_gen_msgid (void) { - char buf[SHORT_STRING]; - char localpart[SHORT_STRING]; - const char *fqdn; + char buf[SHORT_STRING]; + char localpart[SHORT_STRING]; + const char *fqdn; - if (!(fqdn = mutt_fqdn(0))) - fqdn = NONULL(Hostname); + if (!(fqdn = mutt_fqdn(0))) + fqdn = NONULL(Hostname); - mutt_gen_localpart(localpart, sizeof(localpart), MsgIdFormat); - snprintf(buf, sizeof(buf), "<%s@%s>", localpart, fqdn); - return m_strdup(buf); + mutt_gen_localpart(localpart, sizeof(localpart), MsgIdFormat); + snprintf(buf, sizeof(buf), "<%s@%s>", localpart, fqdn); + return m_strdup(buf); } -static RETSIGTYPE alarm_handler (int sig) +static RETSIGTYPE alarm_handler (int sig __attribute__ ((unused))) { SigAlrm = 1; } @@ -1862,7 +1848,7 @@ static int mutt_invoke_sendmail (address_t * from, /* the sender */ mutt_FormatString (cmd, sizeof (cmd), NONULL (Inews), nntp_format_str, 0, 0); - if (!*cmd) { + if (m_strisempty(cmd)) { i = nntp_post (msg); unlink (msg); return i; @@ -2085,7 +2071,7 @@ static int _mutt_bounce_message (FILE * fp, HEADER * h, address_t * to, mutt_copy_header (fp, h, f, ch_flags, NULL); fputc ('\n', f); mutt_copy_bytes (fp, f, h->content->length); - fclose (f); + m_fclose(&f); ret = mutt_invoke_mta(env_from, to, NULL, NULL, tempfile, h->content->encoding == ENC8BIT); @@ -2231,11 +2217,9 @@ int mutt_write_fcc (const char *path, HEADER * hdr, const char *msgid, fputc ('\n', msg->fp); } -#ifdef MIXMASTER /* (postponement) if the mail is to be sent through a mixmaster * chain, save that information */ - if (post && hdr->chain && hdr->chain) { string_list_t *p; @@ -2245,7 +2229,6 @@ int mutt_write_fcc (const char *path, HEADER * hdr, const char *msgid, fputc ('\n', msg->fp); } -#endif if (tempfp) { char sasha[LONG_STRING]; @@ -2265,7 +2248,7 @@ int mutt_write_fcc (const char *path, HEADER * hdr, const char *msgid, fflush (tempfp); if (ferror (tempfp)) { - fclose (tempfp); + m_fclose(&tempfp); unlink (tempfile); mx_commit_message (msg, &f); /* XXX - really? */ mx_close_message (&msg); @@ -2283,7 +2266,7 @@ int mutt_write_fcc (const char *path, HEADER * hdr, const char *msgid, /* copy the body and clean up */ rewind (tempfp); r = mutt_copy_stream (tempfp, msg->fp); - if (fclose (tempfp) != 0) + if (m_fclose(&tempfp) != 0) r = -1; /* if there was an error, leave the temp version */ if (!r)