** to their "official" represenations.
**
** To summarize, when we're all done, here's what MH knows about the address:
-** type: local, uucp, or network
+** type: local or network
** host: not locally defaulted, not explicitly expanded
** everything else
*/
struct mailname *
getm(char *str, char *dfhost, int dftype, int wanthost, char *eresult)
{
- char *pp;
struct mailname *mp;
if (err[0]) {
mp->m_mbox = getcpy(mbox);
mp->m_host = getcpy(host);
} else {
- if ((pp = strchr(mbox, '!'))) {
- *pp++ = '\0';
- mp->m_mbox = getcpy(pp);
- mp->m_host = getcpy(mbox);
- mp->m_type = UUCPHOST;
+ mp->m_nohost = 1;
+ mp->m_mbox = getcpy(mbox);
+ if (route == NULL && dftype == LOCALHOST) {
+ mp->m_host = NULL;
+ mp->m_type = dftype;
} else {
- mp->m_nohost = 1;
- mp->m_mbox = getcpy(mbox);
- if (route == NULL && dftype == LOCALHOST) {
- mp->m_host = NULL;
- mp->m_type = dftype;
- } else {
- mp->m_host = route ? NULL : getcpy(dfhost);
- mp->m_type = route ? NETHOST : dftype;
- }
+ mp->m_host = route ? NULL : getcpy(dfhost);
+ mp->m_type = route ? NETHOST : dftype;
}
goto got_host;
}
if (mp->m_nohost)
strncpy(addr, mp->m_mbox ? mp->m_mbox : "", sizeof(addr));
- else if (mp->m_type != UUCPHOST)
+ else
snprintf(addr, sizeof(addr), mp->m_host ? "%s%s@%s" : "%s%s",
empty(mp->m_path), empty(mp->m_mbox), mp->m_host);
- else
- snprintf(addr, sizeof(addr), "%s!%s", mp->m_host, mp->m_mbox);
if (mp->m_pers || mp->m_path) {
if (mp->m_note)
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))