From a644a709e45c37107441e9d48dc3a31dc66f0579 Mon Sep 17 00:00:00 2001 From: Eric Allman Date: Thu, 11 May 1995 19:29:35 -0800 Subject: [PATCH] add /try and ${macro} syntaxes to -bt mode; eliminate ? SCCS-vsn: usr.sbin/sendmail/src/main.c 8.105 --- usr/src/usr.sbin/sendmail/src/main.c | 46 +++++++++++++++++++++++----- 1 file changed, 38 insertions(+), 8 deletions(-) diff --git a/usr/src/usr.sbin/sendmail/src/main.c b/usr/src/usr.sbin/sendmail/src/main.c index e2000eb040..f2417bc012 100644 --- a/usr/src/usr.sbin/sendmail/src/main.c +++ b/usr/src/usr.sbin/sendmail/src/main.c @@ -13,7 +13,7 @@ static char copyright[] = #endif /* not lint */ #ifndef lint -static char sccsid[] = "@(#)main.c 8.104 (Berkeley) %G%"; +static char sccsid[] = "@(#)main.c 8.105 (Berkeley) %G%"; #endif /* not lint */ #define _DEFINE @@ -1561,6 +1561,8 @@ testmodeline(line, e) register char *p; char *q; auto char *delimptr; + int mid; + ADDRESS a; extern bool invalidaddr(); extern char *crackaddr(); @@ -1569,17 +1571,16 @@ testmodeline(line, e) case '#': return; - case '?': /* try crackaddr */ - q = crackaddr(&line[1]); - xputs(q); - printf("\n"); - return; - case '.': /* config-style settings */ switch (line[1]) { case 'D': - define(line[2], newstr(&line[3]), e); + p = strchr(line, '\n'); + if (p != NULL) + *p = '\0'; + mid = macid(&line[2], &delimptr); + if (mid != '\0') + define(mid, newstr(delimptr), e); break; case 'C': @@ -1655,6 +1656,20 @@ testmodeline(line, e) } return; + case '$': + mid = macid(&line[1], NULL); + if (mid == '\0') + return; + p = macvalue(mid, e); + if (p == NULL) + printf("Undefined\n"); + else + { + xputs(p); + printf("\n"); + } + return; + case '/': /* miscellaneous commands */ p = strchr(line, '\n'); if (p != NULL) @@ -1687,6 +1702,21 @@ testmodeline(line, e) printf("No MX code compiled in\n"); #endif } + else if (strcasecmp(&line[1], "try") == 0) + { + q = crackaddr(p); + printf("Cracked address = "); + xputs(q); + printf("\n"); + if (parseaddr(p, &a, RF_COPYNONE, '\0', NULL, e) == NULL) + printf("Cannot parse\n"); + else if (a.q_host != NULL && a.q_host[0] != '\0') + printf("mailer %s, host %s, user %s\n", + a.q_mailer->m_name, a.q_host, a.q_user); + else + printf("mailer %s, user %s\n", + a.q_mailer->m_name, a.q_user); + } else { printf("Unknown test command %s\n", line); -- 2.20.1