X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=sbr%2Faddrsbr.c;h=a829c1db3295d0baaaff6cc5a33a31d5bd60ff22;hp=df81839d4e5c259e58e3dd2908d05004a315bda5;hb=205e60873e26bb542945dc2c48d7385af84ba120;hpb=714b5c530ece27ea2835a313013f5b770163403c diff --git a/sbr/addrsbr.c b/sbr/addrsbr.c index df81839..a829c1d 100644 --- a/sbr/addrsbr.c +++ b/sbr/addrsbr.c @@ -17,48 +17,16 @@ ** addresses. The routines in sbr/addrsbr.c associate semantics with those ** addresses. ** -** If #ifdef DUMB is in effect, a full 822-style parser is called -** for syntax recongition. This breaks each address into its components. -** Note however that no semantics are assumed about the parts or their -** totality. This means that implicit hostnames aren't made explicit, -** and explicit hostnames aren't expanded to their "official" represenations. -** -** If DUMB is not in effect, then this module does some -** high-level thinking about what the addresses are. -** -** 1. for MMDF systems: -** -** string%@ -> string -** -** 2. for non-MMDF systems: -** -** string@host. -> host!string -** -** 3. for any system, an address interpreted relative to the local host: -** -** string@ -> string -** -** For cases (1) and (3) above, the leftmost host is extracted. If it's not -** present, the local host is used. If the tests above fail, the address is -** considered to be a real 822-style address. -** -** If an explicit host is not present, then MH checks for a bang to indicate -** an explicit UUCP-style address. If so, this is noted. If not, the host is -** defaulted, typically to the local host. The lack of an explict host is -** also noted. -** -** If an explicit 822-style host is present, then MH checks to see if it -** can expand this to the official name for the host. If the hostname is -** unknown, the address is so typed. +** A full 822-style parser is called for syntax recongition. This breaks +** each address into its components. Note however that no semantics are +** assumed about the parts or their totality. This means that implicit +** hostnames aren't made explicit, and explicit hostnames aren't expanded +** to their "official" represenations. ** ** To summarize, when we're all done, here's what MH knows about the address: -** -** DUMB - type: local, uucp, or network -** host: not locally defaulted, not explicitly expanded -** everything else -** -** other - type: local, uucp, network, unknown -** everything else +** type: local, uucp, or network +** host: not locally defaulted, not explicitly expanded +** everything else */ @@ -72,14 +40,8 @@ static char *note = NULL; static char err[BUFSIZ]; static char adr[BUFSIZ]; - -extern boolean username_extension_masquerading; /* defined in mts.c */ - - -/* -** external prototypes -*/ -char *getusername(void); +/* static prototype */ +char *OfficialName(char *); char * @@ -113,9 +75,6 @@ getm(char *str, char *dfhost, int dftype, int wanthost, char *eresult) { char *pp; struct mailname *mp; -#ifndef DUMB - char *dp; -#endif /* not DUMB */ if (err[0]) { if (eresult) @@ -183,13 +142,10 @@ getm(char *str, char *dfhost, int dftype, int wanthost, char *eresult) } else { mp->m_nohost = 1; mp->m_mbox = getcpy(mbox); -#ifdef DUMB if (route == NULL && dftype == LOCALHOST) { mp->m_host = NULL; mp->m_type = dftype; - } else -#endif /* DUMB */ - { + } else { mp->m_host = route ? NULL : getcpy(dfhost); mp->m_type = route ? NETHOST : dftype; } @@ -200,26 +156,8 @@ getm(char *str, char *dfhost, int dftype, int wanthost, char *eresult) if (wanthost == AD_NHST) mp->m_type = !mh_strcasecmp(LocalName(), mp->m_host) ? LOCALHOST : NETHOST; -#ifdef DUMB else mp->m_type = mh_strcasecmp(LocalName(), mp->m_host) ? NETHOST : LOCALHOST; -#else /* not DUMB */ - else - if (pp = OfficialName(mp->m_host)) { - got_real_host: ; - free (mp->m_host); - mp->m_host = getcpy(pp); - mp->m_type = mh_strcasecmp(LocalName(), mp->m_host) ? NETHOST : LOCALHOST; - } else { - if (dp = strchr(mp->m_host, '.')) { - *dp = NULL; - if (pp = OfficialName(mp->m_host)) - goto got_real_host; - *dp = '.'; - } - mp->m_type = BADHOST; - } -#endif /* not DUMB */ got_host: ; if (route) @@ -267,18 +205,12 @@ adrformat(struct mailname *mp) static char addr[BUFSIZ]; static char buffer[BUFSIZ]; -#ifdef DUMB if (mp->m_nohost) strncpy(addr, mp->m_mbox ? mp->m_mbox : "", sizeof(addr)); - else -#endif /* DUMB */ - -#ifndef BANG - if (mp->m_type != UUCPHOST) + else if (mp->m_type != UUCPHOST) snprintf(addr, sizeof(addr), mp->m_host ? "%s%s@%s" : "%s%s", empty(mp->m_path), empty(mp->m_mbox), mp->m_host); else -#endif /* not BANG */ snprintf(addr, sizeof(addr), "%s!%s", mp->m_host, mp->m_mbox); if (mp->m_pers || mp->m_path) { @@ -368,8 +300,8 @@ ismymbox(struct mailname *np) } } if (oops) - advise(NULL, "please fix the %s: entry in your %s file", - "alternate-mailboxes", mh_profile); + advise(NULL, "please fix the profile entry %s", + "alternate-mailboxes"); } } @@ -377,23 +309,23 @@ ismymbox(struct mailname *np) return 0; switch (np->m_type) { - case NETHOST: - len = strlen(cp = LocalName()); - if (!uprf(np->m_host, cp) || np->m_host[len] != '.') - break; - goto local_test; - - case UUCPHOST: - if (mh_strcasecmp(np->m_host, SystemName())) - break; /* fall */ - case LOCALHOST: -local_test: ; - if (!mh_strcasecmp(np->m_mbox, mq.m_mbox)) - return 1; + case NETHOST: + len = strlen(cp = LocalName()); + if (!uprf(np->m_host, cp) || np->m_host[len] != '.') break; + goto local_test; - default: - break; + case UUCPHOST: + if (mh_strcasecmp(np->m_host, SystemName())) + break; /* fall */ + case LOCALHOST: +local_test: ; + if (!mh_strcasecmp(np->m_mbox, mq.m_mbox)) + return 1; + break; + + default: + break; } /* @@ -408,22 +340,22 @@ local_test: ; < (i = strlen(pp = mp->m_mbox))) continue; switch (mp->m_type & W_MBOX) { - case W_NIL: - if (mh_strcasecmp(cp, pp)) - continue; - break; - case W_MBEG: - if (mh_strcasecmp(cp + len - i, pp)) - continue; - break; - case W_MEND: - if (!uprf(cp, pp)) - continue; - break; - case W_MBEG | W_MEND: - if (stringdex(pp, cp) < 0) - continue; - break; + case W_NIL: + if (mh_strcasecmp(cp, pp)) + continue; + break; + case W_MBEG: + if (mh_strcasecmp(cp + len - i, pp)) + continue; + break; + case W_MEND: + if (!uprf(cp, pp)) + continue; + break; + case W_MBEG | W_MEND: + if (stringdex(pp, cp) < 0) + continue; + break; } if (mp->m_nohost) @@ -434,22 +366,22 @@ local_test: ; < (i = strlen(pp = mp->m_host))) continue; switch (mp->m_type & W_HOST) { - case W_NIL: - if (mh_strcasecmp(cp, pp)) - continue; - break; - case W_HBEG: - if (mh_strcasecmp (cp + len - i, pp)) - continue; - break; - case W_HEND: - if (!uprf(cp, pp)) - continue; - break; - case W_HBEG | W_HEND: - if (stringdex(pp, cp) < 0) - continue; - break; + case W_NIL: + if (mh_strcasecmp(cp, pp)) + continue; + break; + case W_HBEG: + if (mh_strcasecmp (cp + len - i, pp)) + continue; + break; + case W_HEND: + if (!uprf(cp, pp)) + continue; + break; + case W_HBEG | W_HEND: + if (stringdex(pp, cp) < 0) + continue; + break; } return 1; } @@ -469,7 +401,6 @@ local_test: ; ** everything is a valid host, and let SendMail worry about it. */ -#include #include