/*
+ * Copyright notice from original mutt:
* Copyright (C) 1996-2002 Michael R. Elkins <me@mutt.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
+ *
+ * This file is part of mutt-ng, see http://www.muttng.org/.
+ * It's licensed under the GNU General Public License,
+ * please see the file GPL in the top level source directory.
*/
#define _SENDLIB_C 1
#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 <string.h>
#include <stdlib.h>
#include <unistd.h>
}
/* 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;
}
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);
}
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;
}
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);
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);
}
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);
}
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 */
}
while ((p = strtok (p, " \t\n"))) {
sze = mutt_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
-
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));
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);
}
}
/* Add a vanity header */
- fprintf (fp, "User-Agent: mutt-ng %s (%s)\n", MUTT_VERSION, os);
+ fprintf (fp, "User-Agent: mutt-ng/%s (%s)\n", MUTT_VERSION, os);
}
return (ferror (fp) == 0 ? 0 : -1);
break;
case 'O':
snprintf (tmp, sizeof (tmp), "%lo", (unsigned long) now);
- safe_strncat (buf, len, tmp, strlen (tmp));
+ safe_strncat (buf, len, tmp, mutt_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, mutt_strlen (tmp));
break;
case 'P':
snprintf (tmp, sizeof (tmp), "%c", MsgIdPfx);
break;
case 'r':
snprintf (tmp, sizeof (tmp), "%u", (unsigned int) rand ());
- safe_strncat (buf, len, tmp, strlen (tmp));
+ safe_strncat (buf, len, tmp, mutt_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, mutt_strlen (tmp));
break;
case 's':
snprintf (tmp, sizeof (tmp), "%02d", tm->tm_sec);
break;
case 'T':
snprintf (tmp, sizeof (tmp), "%u", (unsigned int) now);
- safe_strncat (buf, len, tmp, strlen (tmp));
+ safe_strncat (buf, len, tmp, mutt_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, mutt_strlen (tmp));
break;
case 'Y':
snprintf (tmp, sizeof (tmp), "%04d", tm->tm_year + 1900); /* this will break in the year 10000 ;-) */
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) - mutt_strlen (fqdn) - 4; /* the 4 characters are '<', '@', '>' and '\0' */
mutt_gen_localpart (localpart, localpart_length, MsgIdFormat);
mutt_set_followup_to (env);
- if (!env->message_id)
+ if (!env->message_id && MsgIdFormat && *MsgIdFormat)
env->message_id = mutt_gen_msgid ();
}
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);
}
if (dup) {
- dprint (2, (debugfile, "mutt_remove_duplicates: Removing %s\n",
- addr->mailbox));
+ debug_print (2, ("Removing %s\n", addr->mailbox));
*last = addr->next;
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);
}
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? */