X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=sendlib.c;h=cade3dcec2e571ec0e999a6af666370646bcf9b2;hp=4c410cf56bae84c0e22defbea5c82cdf9cf1eabb;hb=8405d0fd3a83943d112b4a180cea3fc318a28a01;hpb=c3e57678c8be193fc137854020f3a90887be97c9 diff --git a/sendlib.c b/sendlib.c index 4c410cf..cade3dc 100644 --- a/sendlib.c +++ b/sendlib.c @@ -19,13 +19,17 @@ #include "rfc2231.h" #include "mx.h" #include "mime.h" -#include "mailbox.h" #include "copy.h" #include "pager.h" #include "charset.h" #include "mutt_crypt.h" #include "mutt_idna.h" +#include "lib/mem.h" +#include "lib/str.h" +#include "lib/intl.h" +#include "lib/debug.h" + #include #include #include @@ -183,11 +187,11 @@ static void encode_quoted (FGETCONV * fc, FILE * fout, int istext) } /* Escape lines that begin with/only contain "the message separator". */ - if (linelen == 4 && !mutt_strncmp ("From", line, 4)) { + if (linelen == 4 && !safe_strncmp ("From", line, 4)) { strfcpy (line, "=46rom", sizeof (line)); linelen = 6; } - else if (linelen == 4 && !mutt_strncmp ("from", line, 4)) { + else if (linelen == 4 && !safe_strncmp ("from", line, 4)) { strfcpy (line, "=66rom", sizeof (line)); linelen = 6; } @@ -358,7 +362,7 @@ int mutt_write_mime_header (BODY * a, FILE * f) fprintf (f, "Content-Type: %s/%s", TYPE (a), a->subtype); if (a->parameter) { - len = 25 + mutt_strlen (a->subtype); /* approximate len. of content-type */ + len = 25 + safe_strlen (a->subtype); /* approximate len. of content-type */ for (p = a->parameter; p; p = p->next) { char *tmp; @@ -384,7 +388,7 @@ int mutt_write_mime_header (BODY * a, FILE * f) FREE (&tmp); - tmplen = mutt_strlen (buffer) + mutt_strlen (p->attribute) + 1; + tmplen = safe_strlen (buffer) + safe_strlen (p->attribute) + 1; if (len + tmplen + 2 > 76) { fputs ("\n\t", f); @@ -453,9 +457,7 @@ int mutt_write_mime_body (BODY * a, FILE * f) if (a->type == TYPEMULTIPART) { /* First, find the boundary to use */ if (!(p = mutt_get_parameter ("boundary", a->parameter))) { - dprint (1, - (debugfile, - "mutt_write_mime_body(): no boundary parameter found!\n")); + debug_print (1, ("no boundary parameter found!\n")); mutt_error _("No boundary parameter found! [report this error]"); return (-1); @@ -477,15 +479,13 @@ int mutt_write_mime_body (BODY * a, FILE * f) /* This is pretty gross, but it's the best solution for now... */ if ((WithCrypto & APPLICATION_PGP) && a->type == TYPEAPPLICATION - && mutt_strcmp (a->subtype, "pgp-encrypted") == 0) { + && safe_strcmp (a->subtype, "pgp-encrypted") == 0) { fputs ("Version: 1\n", f); return 0; } if ((fpin = fopen (a->filename, "r")) == NULL) { - dprint (1, - (debugfile, "write_mime_body: %s no longer exists!\n", - a->filename)); + debug_print (1, ("%s no longer exists!\n", a->filename)); mutt_error (_("%s no longer exists!"), a->filename); return -1; } @@ -823,7 +823,7 @@ static size_t convert_file_from_to (FILE * file, for (c = tocodes, i = 0; c; c = c1 ? c1 + 1 : 0, i++) { if ((c1 = strchr (c, ':')) == c) continue; - tcode[i] = mutt_substrdup (c, c1); + tcode[i] = str_substrdup (c, c1); } ret = (size_t) (-1); @@ -832,7 +832,7 @@ static size_t convert_file_from_to (FILE * file, for (c = fromcodes; c; c = c1 ? c1 + 1 : 0) { if ((c1 = strchr (c, ':')) == c) continue; - fcode = mutt_substrdup (c, c1); + fcode = str_substrdup (c, c1); ret = convert_file_to (file, fcode, ncodes, (const char **) tcode, &cn, info); @@ -895,8 +895,7 @@ CONTENT *mutt_get_content_info (const char *fname, BODY * b) } if ((fp = fopen (fname, "r")) == NULL) { - dprint (1, (debugfile, "mutt_get_content_info: %s: %s (errno %d).\n", - fname, strerror (errno), errno)); + debug_print (1, ("%s: %s (errno %d).\n", fname, strerror (errno), errno)); return (NULL); } @@ -959,7 +958,7 @@ int mutt_lookup_mime_type (BODY * att, const char *path) type = TYPEOTHER; cur_sze = 0; - szf = mutt_strlen (path); + szf = safe_strlen (path); for (count = 0; count < 3; count++) { /* @@ -971,16 +970,13 @@ int mutt_lookup_mime_type (BODY * att, const char *path) snprintf (buf, sizeof (buf), "%s/.mime.types", NONULL (Homedir)); break; case 1: - strfcpy (buf, SYSCONFDIR "/mime.types", sizeof (buf)); + strfcpy (buf, SYSCONFDIR "/muttng-mime.types", sizeof (buf)); break; case 2: strfcpy (buf, PKGDATADIR "/mime.types", sizeof (buf)); break; default: - dprint (1, - (debugfile, - "mutt_lookup_mime_type: Internal error, count = %d.\n", - count)); + debug_print (1, ("Internal error, count = %d.\n", count)); goto bye; /* shouldn't happen */ } @@ -1002,9 +998,9 @@ int mutt_lookup_mime_type (BODY * att, const char *path) /* cycle through the file extensions */ while ((p = strtok (p, " \t\n"))) { - sze = mutt_strlen (p); + sze = safe_strlen (p); if ((sze > cur_sze) && (szf >= sze) && - (mutt_strcasecmp (path + szf - sze, p) == 0 + (safe_strcasecmp (path + szf - sze, p) == 0 || ascii_strcasecmp (path + szf - sze, p) == 0) && (szf == sze || path[szf - @@ -1022,7 +1018,7 @@ int mutt_lookup_mime_type (BODY * att, const char *path) for (q = p; *q && !ISSPACE (*q); q++); - mutt_substrcpy (subtype, p, q, sizeof (subtype)); + str_substrcpy (subtype, p, q, sizeof (subtype)); if ((type = mutt_check_mime_type (ct)) == TYPEOTHER) strfcpy (xtype, ct, sizeof (xtype)); @@ -1040,8 +1036,8 @@ bye: if (type != TYPEOTHER || *xtype != '\0') { att->type = type; - mutt_str_replace (&att->subtype, subtype); - mutt_str_replace (&att->xtype, xtype); + str_replace (&att->subtype, subtype); + str_replace (&att->xtype, xtype); } return (type); @@ -1469,7 +1465,7 @@ void mutt_write_address_list (ADDRESS * adr, FILE * fp, int linelen, adr->next = NULL; buf[0] = 0; rfc822_write_address (buf, sizeof (buf), adr, display); - len = mutt_strlen (buf); + len = safe_strlen (buf); if (count && linelen + len > 74) { fputs ("\n\t", fp); linelen = len + 8; /* tab is usually about 8 spaces... */ @@ -1713,7 +1709,7 @@ static void encode_headers (LIST * h) rfc2047_encode_string (&tmp); safe_realloc (&h->data, - mutt_strlen (h->data) + 2 + mutt_strlen (tmp) + 1); + safe_strlen (h->data) + 2 + safe_strlen (tmp) + 1); sprintf (h->data + i, ": %s", NONULL (tmp)); /* __SPRINTF_CHECKED__ */ @@ -1787,11 +1783,11 @@ static void mutt_gen_localpart (char *buf, unsigned int len, char *fmt) break; case 'O': snprintf (tmp, sizeof (tmp), "%lo", (unsigned long) now); - safe_strncat (buf, len, tmp, strlen (tmp)); + safe_strncat (buf, len, tmp, safe_strlen (tmp)); break; case 'p': snprintf (tmp, sizeof (tmp), "%u", (unsigned int) getpid ()); - safe_strncat (buf, len, tmp, strlen (tmp)); + safe_strncat (buf, len, tmp, safe_strlen (tmp)); break; case 'P': snprintf (tmp, sizeof (tmp), "%c", MsgIdPfx); @@ -1800,11 +1796,11 @@ static void mutt_gen_localpart (char *buf, unsigned int len, char *fmt) break; case 'r': snprintf (tmp, sizeof (tmp), "%u", (unsigned int) rand ()); - safe_strncat (buf, len, tmp, strlen (tmp)); + safe_strncat (buf, len, tmp, safe_strlen (tmp)); break; case 'R': snprintf (tmp, sizeof (tmp), "%x", (unsigned int) rand ()); - safe_strncat (buf, len, tmp, strlen (tmp)); + safe_strncat (buf, len, tmp, safe_strlen (tmp)); break; case 's': snprintf (tmp, sizeof (tmp), "%02d", tm->tm_sec); @@ -1812,11 +1808,11 @@ static void mutt_gen_localpart (char *buf, unsigned int len, char *fmt) break; case 'T': snprintf (tmp, sizeof (tmp), "%u", (unsigned int) now); - safe_strncat (buf, len, tmp, strlen (tmp)); + safe_strncat (buf, len, tmp, safe_strlen (tmp)); break; case 'X': snprintf (tmp, sizeof (tmp), "%x", (unsigned int) now); - safe_strncat (buf, len, tmp, strlen (tmp)); + safe_strncat (buf, len, tmp, safe_strlen (tmp)); break; case 'Y': snprintf (tmp, sizeof (tmp), "%04d", tm->tm_year + 1900); /* this will break in the year 10000 ;-) */ @@ -1844,16 +1840,12 @@ char *mutt_gen_msgid (void) char buf[SHORT_STRING]; char localpart[SHORT_STRING]; unsigned int localpart_length; - time_t now; - struct tm *tm; const char *fqdn; - now = time (NULL); - tm = gmtime (&now); if (!(fqdn = mutt_fqdn (0))) fqdn = NONULL (Hostname); - localpart_length = sizeof (buf) - strlen (fqdn) - 4; /* the 4 characters are '<', '@', '>' and '\0' */ + localpart_length = sizeof (buf) - safe_strlen (fqdn) - 4; /* the 4 characters are '<', '@', '>' and '\0' */ mutt_gen_localpart (localpart, localpart_length, MsgIdFormat); @@ -2178,9 +2170,9 @@ int mutt_invoke_mta (ADDRESS * from, /* the sender */ string. */ char *mutt_append_string (char *a, const char *b) { - size_t la = mutt_strlen (a); + size_t la = safe_strlen (a); - safe_realloc (&a, la + mutt_strlen (b) + 1); + safe_realloc (&a, la + safe_strlen (b) + 1); strcpy (a + la, b); /* __STRCPY_CHECKED__ */ return (a); } @@ -2208,7 +2200,7 @@ char *mutt_quote_string (const char *s) char *r, *pr; size_t rlen; - rlen = mutt_strlen (s) + 3; + rlen = safe_strlen (s) + 3; pr = r = (char *) safe_malloc (rlen); *pr++ = '"'; while (*s) { @@ -2250,7 +2242,7 @@ void mutt_prepare_envelope (ENVELOPE * env, int final) mutt_set_followup_to (env); - if (!env->message_id) + if (!env->message_id && MsgIdFormat && *MsgIdFormat) env->message_id = mutt_gen_msgid (); } @@ -2325,7 +2317,8 @@ static int _mutt_bounce_message (FILE * fp, HEADER * h, ADDRESS * to, fseek (fp, h->offset, 0); fprintf (f, "Resent-From: %s", resent_from); fprintf (f, "\nResent-%s", mutt_make_date (date, sizeof (date))); - fprintf (f, "Resent-Message-ID: %s\n", mutt_gen_msgid ()); + if (MsgIdFormat && *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); @@ -2394,8 +2387,7 @@ ADDRESS *mutt_remove_duplicates (ADDRESS * addr) } if (dup) { - dprint (2, (debugfile, "mutt_remove_duplicates: Removing %s\n", - addr->mailbox)); + debug_print (2, ("Removing %s\n", addr->mailbox)); *last = addr->next; @@ -2440,10 +2432,7 @@ int mutt_write_fcc (const char *path, HEADER * hdr, const char *msgid, set_noconv_flags (hdr->content, 1); if (mx_open_mailbox (path, M_APPEND | M_QUIET, &f) == NULL) { - dprint (1, - (debugfile, - "mutt_write_fcc(): unable to open mailbox %s in append-mode, aborting.\n", - path)); + debug_print (1, ("unable to open mailbox %s in append-mode, aborting.\n", path)); return (-1); } @@ -2558,8 +2547,7 @@ int mutt_write_fcc (const char *path, HEADER * hdr, const char *msgid, fflush (tempfp); if (ferror (tempfp)) { - dprint (1, - (debugfile, "mutt_write_fcc(): %s: write failed.\n", tempfile)); + debug_print (1, ("%s: write failed.\n", tempfile)); fclose (tempfp); unlink (tempfile); mx_commit_message (msg, &f); /* XXX - really? */