-
-/*
- * mhbuildsbr.c -- routines to expand/translate MIME composition files
+/* mhbuildsbr.c -- routines to expand/translate MIME composition files
*
* This code is Copyright (c) 2002, by the authors of nmh. See the
* COPYRIGHT file in the root directory of the nmh distribution for
#include <h/md5.h>
#include <h/mts.h>
#include <h/tws.h>
+#include <h/fmt_scan.h>
#include <h/mime.h>
#include <h/mhparse.h>
#include <h/utils.h>
+#include "../sbr/m_mktemp.h"
+#include "../sbr/message_id.h"
+#include "../sbr/mime_type.h"
+#include "mhfree.h"
+#include "mhshowsbr.h"
#ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
extern int rfc934sw;
extern int contentidsw;
-/* cache policies */
-extern int rcachesw; /* mhcachesbr.c */
-extern int wcachesw; /* mhcachesbr.c */
-
static char prefix[] = "----- =_aaaaaaaaaa";
struct attach_list {
struct convert_list *next;
} convert_list;
-/*
- * Maximum size of URL token in message/external-body
- */
-
-#define MAXURLTOKEN 40
-
/* mhmisc.c */
void content_error (char *, CT, char *, ...);
/* mhcachesbr.c */
int find_cache (CT, int, int *, char *, char *, int);
-/* mhfree.c */
-extern CT *cts;
-void freects_done (int) NORETURN;
-void free_ctinfo (CT);
-void free_encoding (CT, int);
-
/*
* static prototypes
*/
int header_encoding, size_t maxunencoded, int verbose)
{
int compnum, state;
- char buf[BUFSIZ], name[NAMESZ];
+ char buf[NMH_BUFSIZ], name[NAMESZ];
char *cp, *np, *vp;
struct multipart *m;
struct part **pp;
case BODY:
fseek (in, (long) (-strlen (buf)), SEEK_CUR);
- /* fall through */
+ break;
case FILEEOF:
break;
}
/*
- * We initally assume we will find multiple contents in the
+ * We initially assume we will find multiple contents in the
* draft. So create a multipart/mixed content to hold everything.
* We can remove this later, if it is not needed.
*/
CT p;
if (user_content (in, buf, &p, infile) == DONE) {
- admonish (NULL, "ignoring spurious #end");
+ inform("ignoring spurious #end, continuing...");
continue;
}
if (!p)
{
int extrnal, vrsn;
char *cp, **ap;
- char buffer[BUFSIZ];
+ char buffer[NMH_BUFSIZ];
struct multipart *m;
struct part **pp;
struct stat st;
ct->c_encoding = CE_7BIT;
goto call_init;
}
- /* else fall... */
+ /* FALLTHRU */
case CT_MULTIPART:
adios (NULL, "it doesn't make sense to define an in-line %s content",
ct->c_type == CT_MESSAGE ? "message" : "multipart");
/* else, use the current folder */
if (!folder)
- folder = add (getfolder (1), NULL);
+ folder = mh_xstrdup(getfolder(1));
if (!(mp = folder_read (folder, 0)))
adios (NULL, "unable to read folder %s", folder);
pp = &part->mp_next;
part->mp_part = p;
}
- admonish (NULL, "premature end-of-file, missing #end");
+ inform("premature end-of-file, missing #end, continuing...");
return OK;
}
if (listsw) {
ct->c_end = (partnum = strlen (prefix) + 2) + 2;
if (ct->c_rfc934)
- ct->c_end += 1;
+ ct->c_end++;
for (part = m->mp_parts; part; part = part->mp_next)
ct->c_end += part->mp_part->c_end + partnum;
case 'F':
/* %f, and stdout is not-redirected */
xstdout = 1;
- /* and fall... */
+ /* FALLTHRU */
case 'f':
/*
*/
if (checksw) {
np = mh_xstrdup(MD5_FIELD);
- vp = calculate_digest (ct, (ct->c_encoding == CE_QUOTED) ? 1 : 0);
+ vp = calculate_digest (ct, ct->c_encoding == CE_QUOTED);
add_header (ct, np, vp);
}
/*
* Parse the Content-Type. get_ctinfo() parses MIME parameters, but
- * since we're just feeding it a MIME type we have to add those ourself.
+ * since we're just feeding it a MIME type we have to add those ourselves.
* Map that to a valid content-type label and call any initialization
* function.
*/
if (strcasecmp(ct->c_ctinfo.ci_subtype, "external-body") == 0)
adios(NULL, "external-body messages must be specified "
"by mhbuild directives");
- /* Fall through */
+ /* FALLTHRU */
default:
/*
if (cp && strcasecmp (cp, "attachment") &&
strcasecmp (cp, "inline")) {
- admonish (NULL, "configuration problem: %s-disposition-%s%s%s "
- "specifies '%s' but only 'attachment' and 'inline' are "
- "allowed", invo_name,
- ct->c_ctinfo.ci_type,
- ct->c_ctinfo.ci_subtype ? "/" : "",
- ct->c_ctinfo.ci_subtype ? ct->c_ctinfo.ci_subtype : "",
- cp);
+ inform("configuration problem: %s-disposition-%s%s%s specifies "
+ "'%s' but only 'attachment' and 'inline' are allowed, "
+ "continuing...", invo_name,
+ ct->c_ctinfo.ci_type,
+ ct->c_ctinfo.ci_subtype ? "/" : "",
+ FENDNULL(ct->c_ctinfo.ci_subtype),
+ cp);
}
if (!cp)
/*
* Set text content charset if it was unspecified. contains8bit
- * selctions:
+ * selections:
* 0: content does not contain 8-bit characters
* 1: content contains 8-bit characters
* -1: ignore content and use user's locale to determine charset
/* reply_file is used to pass the output of the convert. */
reply_file = getcpy (m_mktemp2 (NULL, invo_name, NULL, NULL));
convert_command =
- concat (convert, " ", argstring ? argstring : "", " >", reply_file,
+ concat (convert, " ", FENDNULL(argstring), " >", reply_file,
NULL);
/* Convert here . . . */
if ((status = show_content_aux (ct, 0, convert_command, NULL, NULL)) !=
OK) {
- admonish (NULL, "store of %s content failed", type);
+ inform("store of %s content failed, continuing...", type);
}
free (convert_command);
if (extract_headers (reply_ct, reply_file, &reply_fp) == NOTOK) {
free (reply_file);
- admonish (NULL,
- "failed to extract headers from convert output in %s",
- reply_file);
+ inform("failed to extract headers from convert output in %s, "
+ "continuing...", reply_file);
return;
}
if ((fd = open (reply_file, O_RDONLY)) == NOTOK ||
scan_input (fd, &eightbit) == NOTOK) {
free (reply_file);
- admonish (NULL, "failed to read %s", reply_file);
+ inform("failed to read %s, continuing...", reply_file);
return;
}
(void) close (fd);
n = strlen (buffer);
if (get_ctinfo (buffer + 14, ct, 0) != OK) {
- admonish (NULL, "unable to get content info for reply");
+ inform("unable to get content info for reply, continuing...");
goto failed_to_extract_ct;
}