Change LocalName() to take an argument (about whether or not to use
authorKen Hornstein <kenh@pobox.com>
Sat, 4 Feb 2012 04:43:53 +0000 (23:43 -0500)
committerKen Hornstein <kenh@pobox.com>
Sat, 4 Feb 2012 04:43:53 +0000 (23:43 -0500)
local hostname versus entry in mts.conf).

12 files changed:
h/mts.h
h/prototypes.h
mts/smtp/hosts.c
mts/smtp/smtp.c
sbr/addrsbr.c
sbr/mts.c
uip/mhbuildsbr.c
uip/mhlsbr.c
uip/mhparse.c
uip/post.c
uip/sendsbr.c
uip/viamail.c

diff --git a/h/mts.h b/h/mts.h
index 2d2aa95..a8d795f 100644 (file)
--- a/h/mts.h
+++ b/h/mts.h
@@ -6,7 +6,7 @@
 /*
  * Local and UUCP Host Name
  */
-char *LocalName(void);
+char *LocalName(int);
 char *SystemName(void);
 
 /*
index 12124cd..11db40d 100644 (file)
@@ -133,7 +133,7 @@ int strncasecmp (const char *s1, const char *s2, size_t n);
  * some prototypes for address parsing system
  * (others are in addrsbr.h)
  */
-char *LocalName(void);
+char *LocalName(int);
 char *SystemName(void);
 char *OfficialName(char *);
 
index 29ac6d8..94a22d5 100644 (file)
@@ -48,8 +48,8 @@ OfficialName (char *name)
     *q = '\0';
     q = site;
 
-    if (!mh_strcasecmp (LocalName(), site))
-       return LocalName();
+    if (!mh_strcasecmp (LocalName(1), site))
+       return LocalName(1);
 
     memset(&hints, 0, sizeof(hints));
     hints.ai_flags = AI_CANONNAME;
index ee98dce..faca17a 100644 (file)
@@ -216,7 +216,7 @@ smtp_init (char *client, char *server, char *port, int watch, int verbose,
        if (clientname) {
            client = clientname;
        } else {
-           client = LocalName();       /* no clientname -> LocalName */
+           client = LocalName(1);      /* no clientname -> LocalName */
        }
     }
 
@@ -475,7 +475,7 @@ sendmail_init (char *client, char *server, int watch, int verbose,
        if (clientname)
            client = clientname;
        else
-           client = LocalName();       /* no clientname -> LocalName */
+           client = LocalName(1);      /* no clientname -> LocalName */
     }
 
     /*
index 07bc810..8a468bb 100644 (file)
@@ -145,7 +145,7 @@ getm (char *str, char *dfhost, int dftype, int wanthost, char *eresult)
     }
 
     if (dfhost == NULL) {
-       dfhost = LocalName ();
+       dfhost = LocalName (0);
        dftype = LOCALHOST;
     }
 
@@ -202,10 +202,10 @@ getm (char *str, char *dfhost, int dftype, int wanthost, char *eresult)
     }
 
     if (wanthost == AD_NHST)
-       mp->m_type = !mh_strcasecmp (LocalName (), mp->m_host)
+       mp->m_type = !mh_strcasecmp (LocalName (0), mp->m_host)
            ? LOCALHOST : NETHOST;
     else
-       mp->m_type = mh_strcasecmp (LocalName(), mp->m_host) ?  NETHOST : LOCALHOST;
+       mp->m_type = mh_strcasecmp (LocalName(0), mp->m_host) ?  NETHOST : LOCALHOST;
 
 got_host: ;
     if (route)
@@ -327,7 +327,7 @@ getlocaladdr(void)
 
     return username;
 
-    domain = LocalName();
+    domain = LocalName(0);
 
     snprintf_return = snprintf (addr, sizeof(addr), "%s@%s", username, domain);
 
@@ -419,7 +419,7 @@ ismymbox (struct mailname *np)
     
     switch (np->m_type) {
        case NETHOST:
-           len = strlen (cp = LocalName ());
+           len = strlen (cp = LocalName (0));
            if (!uprf (np->m_host, cp) || np->m_host[len] != '.')
                break;
            goto local_test;
index 834579d..451a9b2 100644 (file)
--- a/sbr/mts.c
+++ b/sbr/mts.c
@@ -78,7 +78,7 @@ char *sendmail = SENDMAILPATH;
  * SMTP/POP stuff
  */
 char *clientname = NULL;
-char *servers    = "localhost \01localnet";
+char *servers    = "localhost";
 char *pophost    = "";
 
 /*
@@ -238,34 +238,45 @@ tailor_value (unsigned char *s)
 
 /*
  * Get the fully qualified name of the local host.
+ *
+ * If flag is 0, then use anything out of mts.conf (like localname).
+ * If flag is 1, then only use the "proper" local hostname.
  */
 
 char *
-LocalName (void)
+LocalName (int flag)
 {
-    static char buffer[BUFSIZ] = "";
+    static char buffer0[BUFSIZ] = "";
+    static char buffer1[BUFSIZ] = "";
+    static char *buffer[] = { buffer0, buffer1 };
+    char *buf;
     struct addrinfo hints, *res;
 
+    if (flag < 0 || flag > 1)
+       return NULL;
+
+    buf = buffer[flag];
+
     /* check if we have cached the local name */
-    if (buffer[0])
-       return buffer;
+    if (buf[0])
+       return buf;
 
     mts_init ("mts");
 
     /* check if the mts.conf file specifies a "localname" */
-    if (*localname) {
-       strncpy (buffer, localname, sizeof(buffer));
+    if (*localname && flag == 0) {
+       strncpy (buf, localname, sizeof(buffer0));
     } else {
-       memset(buffer, 0, sizeof(buffer));
+       memset(buffer, 0, sizeof(buffer0));
        /* first get our local name */
-       gethostname (buffer, sizeof(buffer) - 1);
+       gethostname (buf, sizeof(buffer0) - 1);
        /* now fully qualify our name */
 
        memset(&hints, 0, sizeof(hints));
        hints.ai_flags = AI_CANONNAME;
        hints.ai_family = PF_UNSPEC;
-       if (getaddrinfo(buffer, NULL, &hints, &res) == 0) {
-           strncpy(buffer, res->ai_canonname, sizeof(buffer) - 1);
+       if (getaddrinfo(buf, NULL, &hints, &res) == 0) {
+           strncpy(buf, res->ai_canonname, sizeof(buffer0) - 1);
            freeaddrinfo(res);
        }
     }
@@ -275,11 +286,11 @@ LocalName (void)
      * we append that now.  This should rarely be needed.
      */
     if (*localdomain) {
-       strcat (buffer, ".");
-       strcat (buffer, localdomain);
+       strcat (buf, ".");
+       strcat (buf, localdomain);
     }
 
-    return buffer;
+    return buf;
 }
 
 
index 2a3f899..c349bf8 100644 (file)
@@ -859,7 +859,7 @@ set_id (CT ct, int top)
     if (clock == 0) {
        time (&clock);
        snprintf (msgid, sizeof(msgid), "<%d.%ld.%%d@%s>\n",
-               (int) getpid(), (long) clock, LocalName());
+               (int) getpid(), (long) clock, LocalName(1));
        partno = 0;
        msgfmt = getcpy(msgid);
     }
index eef0937..6bfbade 100644 (file)
@@ -1096,7 +1096,7 @@ mcomp_format (struct mcomp *c1, struct mcomp *c2)
            if ((c1->c_flags & FACEDFLT) && c2->c_face == NULL) {
                char   *h, *o;
                if ((h = mp->m_host) == NULL)
-                   h = LocalName ();
+                   h = LocalName (0);
                if ((o = OfficialName (h)))
                    h = o;
                c2->c_face = concat ("address ", h, " ", mp->m_mbox,
@@ -1503,7 +1503,7 @@ face_format (struct mcomp *c1)
        if ((mp = getm (cp, NULL, 0, AD_NAME, NULL))) {
            char *h, *o;
            if ((h = mp->m_host) == NULL)
-               h = LocalName ();
+               h = LocalName (0);
            if ((o = OfficialName (h)))
                h = o;
            c1->c_face = concat ("address ", h, " ", mp->m_mbox, NULL);
index e151062..5b48483 100644 (file)
@@ -2554,7 +2554,8 @@ openFTP (CT ct, char **file)
 
     if (e->eb_flags) {
        user = "anonymous";
-       snprintf (buffer, sizeof(buffer), "%s@%s", getusername (), LocalName ());
+       snprintf (buffer, sizeof(buffer), "%s@%s", getusername (),
+                 LocalName (1));
        pass = buffer;
     } else {
        ruserpass (e->eb_site, &username, &password);
index dcd563b..580d3d1 100644 (file)
@@ -869,7 +869,7 @@ start_headers (void)
     time (&tclock);
 
     strncpy (from, getlocaladdr(), sizeof(from));
-    strncpy (myhost, LocalName (), sizeof(myhost));
+    strncpy (myhost, LocalName (0), sizeof(myhost));
 
     for (cp = myhost; *cp; cp++)
        *cp = uptolow (*cp);
@@ -908,7 +908,7 @@ finish_headers (FILE *out)
            fprintf (out, "Date: %s\n", dtime (&tclock, 0));
            if (msgid)
                fprintf (out, "Message-ID: <%d.%ld@%s>\n",
-                       (int) getpid (), (long) tclock, LocalName ());
+                       (int) getpid (), (long) tclock, LocalName (1));
            if (msgflags & MFRM) {
                /* There was already a From: in the draft.  Don't add one. */
                if (!draft_from_masquerading)
@@ -943,7 +943,7 @@ finish_headers (FILE *out)
            fprintf (out, "Resent-Date: %s\n", dtime (&tclock, 0));
            if (msgid)
                fprintf (out, "Resent-Message-ID: <%d.%ld@%s>\n",
-                       (int) getpid (), (long) tclock, LocalName ());
+                       (int) getpid (), (long) tclock, LocalName (1));
            if (msgflags & MRFM) {
                /* There was already a Resent-From: in draft.  Don't add one. */
                if (!draft_from_masquerading)
@@ -1197,7 +1197,7 @@ make_bcc_file (int dashstuff)
     fprintf (out, "Date: %s\n", dtime (&tclock, 0));
     if (msgid)
        fprintf (out, "Message-ID: <%d.%ld@%s>\n",
-               (int) getpid (), (long) tclock, LocalName ());
+               (int) getpid (), (long) tclock, LocalName (1));
     if (msgflags & MFRM) {
       /* There was already a From: in the draft.  Don't add one. */
       if (!draft_from_masquerading)
index f216e95..04d6ea9 100644 (file)
@@ -669,7 +669,7 @@ splitmsg (char **vec, int vecp, char *drft, struct stat *st, int delay)
 
     time (&clock);
     snprintf (msgid, sizeof(msgid), "<%d.%ld@%s>",
-               (int) getpid(), (long) clock, LocalName());
+               (int) getpid(), (long) clock, LocalName(1));
 
     fseek (in, start, SEEK_SET);
     for (partno = 1; partno <= nparts; partno++) {
index 2e1c51c..49bbdf4 100644 (file)
@@ -185,7 +185,7 @@ via_mail (char *mailsw, char *subjsw, char *parmsw, char *descsw,
     strncpy (tmpfil, tfile, sizeof(tmpfil));
 
     if (!strchr(mailsw, '@'))
-       mailsw = concat (mailsw, "@", LocalName (), NULL);
+       mailsw = concat (mailsw, "@", LocalName (0), NULL);
     fprintf (fp, "To: %s\n", mailsw);
 
     if (subjsw)
@@ -193,7 +193,7 @@ via_mail (char *mailsw, char *subjsw, char *parmsw, char *descsw,
 
     if (fromsw) {
        if (!strchr(fromsw, '@'))
-           fromsw = concat (fromsw, "@", LocalName (), NULL);
+           fromsw = concat (fromsw, "@", LocalName (0), NULL);
        fprintf (fp, "From: %s\n", fromsw);
     }