-
-/*
- * mts.c -- definitions for the mail transport system
+/* mts.c -- definitions for the mail transport system
*
* 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> /* for snprintf() */
-#include <h/utils.h>
+#include "h/mh.h"
+#include "escape_addresses.h"
+#include "context_find.h"
+#include "error.h"
+#include "h/utils.h"
#define nmhetcdir(file) NMHETCDIR#file
-#include <h/mts.h>
+#include "h/mts.h"
#include <pwd.h>
#include <sys/socket.h>
#include <netdb.h>
char *uucpldir = "/usr/spool/mail";
char *uucplfil = "";
-char *mmdlm1 = "\001\001\001\001\n";
-char *mmdlm2 = "\001\001\001\001\n";
-
char *spoollocking = DEFAULT_LOCKING;
/* Cache the username, fullname, and mailbox of the user */
static char username[BUFSIZ];
static char fullname[BUFSIZ];
-static char localmbox[BUFSIZ];
+static char localmbox[2*BUFSIZ+3];
/*
* MTS specific variables
{ "spoollocking", &spoollocking },
{ "uucpldir", &uucpldir },
{ "uucplfil", &uucplfil },
- { "mmdelim1", &mmdlm1 },
- { "mmdelim2", &mmdlm2 },
{ "mts", &mts_method },
{ "sendmail", &sendmail },
{ "clientname", &clientname },
/* Convert name of mts method to integer value and store it. */
void
-save_mts_method (const char *value) {
+save_mts_method (const char *value)
+{
if (! strcasecmp (value, "smtp")) {
mts_method = "smtp";
sm_mts = MTS_SMTP;
mts_method = "sendmail/pipe";
sm_mts = MTS_SENDMAIL_PIPE;
} else {
- adios (NULL, "unsupported mts selection \"%s\"", value);
+ die("unsupported mts selection \"%s\"", value);
}
}
int i, r;
char *bp;
char buffer[BUFSIZ];
- size_t len;
for (bp = buffer; *s; bp++, s++) {
if (*s != QUOTE) {
case 't': *bp = '\t'; break;
case 0: s--;
+ /* FALLTHRU */
case QUOTE:
*bp = QUOTE;
break;
}
r = ((unsigned char) *s) != '0' ? 10 : 8;
for (i = 0; isdigit ((unsigned char) *s); s++)
- i = i * r + ((unsigned char) *s) - '0';
+ i *= r + ((unsigned char) *s) - '0';
s--;
*bp = toascii (i);
break;
}
*bp = 0;
- len = strlen (buffer) + 1;
- bp = mh_xmalloc (len);
- memcpy (bp, buffer, len);
-
- return bp;
+ return mh_xstrdup(buffer);
}
/*
gethostname (buf, sizeof(buffer0) - 1);
/* now fully qualify our name */
- memset(&hints, 0, sizeof(hints));
+ ZERO(&hints);
hints.ai_flags = AI_CANONNAME;
hints.ai_family = PF_UNSPEC;
if (getaddrinfo(buf, NULL, &hints, &res) == 0) {
/* If there's a Local-Mailbox profile component, try to extract
the username from it. But don't try very hard, this assumes
the very simple User Name <user@name.com> form.
- Note that post(8) and whom(1) use context_foil (), so they
- won't see the profile component. */
+ Note that post(8) uses context_foil(), so it won't see the profile
+ component. */
if ((np = context_find("Local-Mailbox")) != NULL) {
char *left_angle_bracket = strchr (np, '<');
char *at_sign = strchr (np, '@');
/* The $SIGNATURE environment variable overrides the GECOS field's idea of
your real name. If SIGNATURE isn't set, use the Signature profile
setting if it exists.
- Note that post(8) and whom(1) use context_foil (), so they
- won't see the profile component. */
+ Note that post(8) uses context_foil(), so it won't see the profile
+ component. */
if ((cp = getenv ("SIGNATURE")) && *cp)
strncpy (fullname, cp, sizeof(fullname));
else if ((cp = context_find("Signature")))