-
-/*
- * viamail.c -- send multiple files in a MIME message
+/* viamail.c -- send multiple files in a MIME message
*
* This code is Copyright (c) 2002, by the authors of nmh. See the
* COPYRIGHT file in the root directory of the nmh distribution for
* complete copyright information.
*/
-#include <h/mh.h>
+#include "h/mh.h"
+#include "sendsbr.h"
+#include "sbr/m_gmprot.h"
+#include "sbr/getarguments.h"
+#include "sbr/concat.h"
+#include "sbr/smatch.h"
+#include "sbr/context_find.h"
+#include "sbr/ambigsw.h"
+#include "sbr/print_version.h"
+#include "sbr/print_help.h"
+#include "sbr/arglist.h"
+#include "sbr/error.h"
#include <fcntl.h>
-#include <h/md5.h>
-#include <h/mts.h>
-#include <h/tws.h>
-#include <h/mime.h>
-#include <h/mhparse.h>
+#include "h/mts.h"
+#include "h/tws.h"
+#include "h/mime.h"
+#include "h/mhparse.h"
+#include "h/done.h"
+#include "h/utils.h"
+#include "sbr/m_mktemp.h"
+#include "sbr/base64.h"
#define VIAMAIL_SWITCHES \
X("to mailpath", 0, TOSW) \
X("parameters arguments", 0, PARAMSW) \
X("description text", 0, DESCRIPTSW) \
X("comment text", 0, COMMENTSW) \
- X("delay seconds", 0, DELAYSW) \
X("verbose", 0, VERBSW) \
X("noverbose", 0, NVERBSW) \
X("version", 0, VERSIONSW) \
#undef X
extern int debugsw;
-extern int splitsw;
-extern int verbsw;
+extern bool verbsw;
/*
* static prototypes
*/
-static int via_mail (char *, char *, char *, char *, char *, int, char *);
+static int via_mail (char *, char *, char *, char *, char *, char *);
int
main (int argc, char **argv)
{
- int delay = 0;
char *f1 = NULL, *f2 = NULL, *f3 = NULL;
- char *f4 = NULL, *f5 = NULL, *f7 = NULL;
+ char *f4 = NULL, *f5 = NULL, *f6 = NULL;
char *cp, buf[BUFSIZ];
char **argp, **arguments;
- if (nmh_init(argv[0], 1)) { return 1; }
+ if (nmh_init(argv[0], true, false)) { return 1; }
arguments = getarguments (invo_name, argc, argv, 0);
argp = arguments;
ambigsw (cp, switches);
done (1);
case UNKWNSW:
- adios (NULL, "-%s unknown", cp);
+ die("-%s unknown", cp);
case HELPSW:
snprintf (buf, sizeof(buf), "%s [switches]", invo_name);
case TOSW:
if (!(f1 = *argp++))
- adios (NULL, "missing argument to %s", argp[-2]);
+ die("missing argument to %s", argp[-2]);
continue;
case SUBJECTSW:
if (!(f2 = *argp++))
- adios (NULL, "missing argument to %s", argp[-2]);
+ die("missing argument to %s", argp[-2]);
continue;
case PARAMSW:
if (!(f3 = *argp++))
- adios (NULL, "missing argument to %s", argp[-2]);
+ die("missing argument to %s", argp[-2]);
continue;
case DESCRIPTSW:
if (!(f4 = *argp++))
- adios (NULL, "missing argument to %s", argp[-2]);
+ die("missing argument to %s", argp[-2]);
continue;
case COMMENTSW:
if (!(f5 = *argp++))
- adios (NULL, "missing argument to %s", argp[-2]);
- continue;
- case DELAYSW:
- if (!(cp = *argp++) || *cp == '-')
- adios (NULL, "missing argument to %s", argp[-2]);
-
- /*
- * If there is an error, just reset the delay parameter
- * to -1. We will set a default delay later.
- */
- if (sscanf (cp, "%d", &delay) != 1)
- delay = -1;
+ die("missing argument to %s", argp[-2]);
continue;
case FROMSW:
- if (!(f7 = *argp++))
- adios (NULL, "missing argument to %s", argp[-2]);
+ if (!(f6 = *argp++))
+ die("missing argument to %s", argp[-2]);
continue;
case VERBSW:
- verbsw = 1;
+ verbsw = true;
continue;
case NVERBSW:
- verbsw = 0;
+ verbsw = false;
continue;
case DEBUGSW:
}
if (!f1)
- adios (NULL, "missing -viamail \"mailpath\" switch");
+ die("missing -viamail \"mailpath\" switch");
- via_mail (f1, f2, f3, f4, f5, delay, f7);
+ via_mail (f1, f2, f3, f4, f5, f6);
return 0; /* dead code to satisfy the compiler */
}
static int
via_mail (char *mailsw, char *subjsw, char *parmsw, char *descsw,
- char *cmntsw, int delay, char *fromsw)
+ char *cmntsw, char *fromsw)
{
int status, vecp;
char tmpfil[BUFSIZ], *program;
umask (~m_gmprot ());
if ((tfile = m_mktemp2(NULL, invo_name, NULL, &fp)) == NULL) {
- adios(NULL, "unable to create temporary file in %s", get_temp_dir());
+ die("unable to create temporary file in %s", get_temp_dir());
}
- strncpy (tmpfil, tfile, sizeof(tmpfil));
+ strncpy (tmpfil, tfile, sizeof(tmpfil) - 1);
if (!strchr(mailsw, '@'))
mailsw = concat (mailsw, "@", LocalName (0), NULL);
if (fstat (fileno (fp), &st) == NOTOK)
adios ("failed", "fstat of %s", tmpfil);
- if (delay < 0)
- splitsw = 10;
- else
- splitsw = delay;
-
status = 0;
vec = argsplit(postproc, &program, &vecp);