X("nocontentid", 0, NCONTENTIDSW) \
X("headerencoding encoding-algorithm", 0, HEADERENCSW) \
X("autoheaderencoding", 0, AUTOHEADERENCSW) \
+ X("maxunencoded", 0, MAXUNENCSW) \
X("version", 0, VERSIONSW) \
X("help", 0, HELPSW) \
X("debug", -5, DEBUGSW) \
DEFINE_SWITCH_ARRAY(MIMEENCODING, encodingswitches);
#undef X
-/* mhbuildsbr.c */
-extern char *tmp; /* directory to place temp files */
-
/* mhcachesbr.c */
extern int rcachesw;
extern int wcachesw;
main (int argc, char **argv)
{
int sizesw = 1, headsw = 1, directives = 1, autobuild = 0, dist = 0;
+ size_t maxunencoded = MAXTEXTPERLN;
int *icachesw;
char *cp, buf[BUFSIZ];
char buffer[BUFSIZ], *compfile = NULL;
FILE *fp_out = NULL;
int header_encoding = CE_UNKNOWN;
- done=unlink_done;
-
- setlocale(LC_ALL, "");
- invo_name = r1bindex (argv[0], '/');
+ if (nmh_init(argv[0], 1)) { return 1; }
- /* read user profile/context */
- context_read();
+ done=unlink_done;
arguments = getarguments (invo_name, argc, argv, 1);
argp = arguments;
header_encoding = CE_UNKNOWN;
continue;
+ case MAXUNENCSW:
+ if (!(cp = *argp++) || *cp == '-')
+ adios (NULL, "missing argument to %s", argp[-2]);
+ if ((maxunencoded = atoi(cp)) < 1)
+ adios (NULL, "Invalid argument for %s: %s", argp[-2], cp);
+ if (maxunencoded > 998)
+ adios (NULL, "limit of -maxunencoded is 998");
+ continue;
+
case VERBSW:
verbosw++;
continue;
cache_private = ".cache";
cache_private = getcpy (m_maildir (cache_private));
- /*
- * Check for storage directory. If defined, we
- * will store temporary files there. Else we
- * store them in standard nmh directory.
- */
- if ((cp = context_find (nmhstorage)) && *cp)
- tmp = concat (cp, "/", invo_name, NULL);
- else
- tmp = add (m_maildir (invo_name), NULL);
-
if (!context_find ("path"))
free (path ("./", TFOLDER));
* Process the composition file from standard input.
*/
if (compfile[0] == '-' && compfile[1] == '\0') {
+ if ((cp = m_mktemp2(NULL, invo_name, NULL, &fp)) == NULL) {
+ adios(NULL, "unable to create temporary file in %s",
+ get_temp_dir());
+ }
+
/* copy standard input to temporary file */
- strncpy (infile, m_mktemp(invo_name, NULL, &fp), sizeof(infile));
+ strncpy (infile, cp, sizeof(infile));
while (fgets (buffer, BUFSIZ, stdin))
fputs (buffer, fp);
fclose (fp);
unlink_infile = 1;
/* build the content structures for MIME message */
- ct = build_mime (infile, autobuild, dist, directives, header_encoding);
+ ct = build_mime (infile, autobuild, dist, directives, header_encoding,
+ maxunencoded);
/*
* If ct == NULL, that means that -auto was set and a MIME version
free_content (ct);
}
- unlink (infile);
+ (void) m_unlink (infile);
unlink_infile = 0;
done (0);
*/
/* build the content structures for MIME message */
- ct = build_mime (compfile, autobuild, dist, directives, header_encoding);
+ ct = build_mime (compfile, autobuild, dist, directives, header_encoding,
+ maxunencoded);
/*
* If ct == NULL, that means -auto was set and we found a MIME version
cts[1] = NULL;
/* output MIME message to this temporary file */
- strncpy(outfile, m_mktemp2(compfile, invo_name, NULL, &fp_out),
- sizeof(outfile));
+ if ((cp = m_mktemp2(compfile, invo_name, NULL, &fp_out)) == NULL) {
+ adios(NULL, "unable to create temporary file in %s", get_temp_dir());
+ }
+ strncpy(outfile, cp, sizeof(outfile));
unlink_outfile = 1;
/* output the message */
* temporary files.
*/
if (unlink_infile)
- unlink (infile);
+ (void) m_unlink (infile);
if (unlink_outfile)
- unlink (outfile);
+ (void) m_unlink (outfile);
exit (status);
}