📄 post.c
字号:
else {#endif X400#ifdef SENDMTS mbox = auxformat (lp, 0); host = NULL;#endif SENDMTS#ifdef X400 }#endif X400 (void) sprintf (addr, "%s!%s", lp -> m_host, lp -> m_mbox); break; default: mbox = lp -> m_mbox; host = lp -> m_host; (void) sprintf (addr, "%s at %s", lp -> m_mbox, lp -> m_host); break; } chkadr (); /* XXX */#ifdef MMDFMTS if (rp_isbad (retval = mm_waend ())) die (NULLCP, "problem ending addresses [%s]\n", rp_valstr (retval));#endif MMDFMTS#ifdef X400 if (mts_arg == X400MTS) { if (rp_isbad (retval = x400s_waend (note))) die (NULLCP, "problem ending addresses; %s", rp_string (retval)); } else#endif X400#ifdef SENDMTS if (rp_isbad (retval = sm_waend ())) die (NULLCP, "problem ending addresses; %s", rp_string (retval));#endif SENDMTS if ((fd = encipher (mbox, host, reason)) == NOTOK) die (NULLCP, "%s: %s", addr, reason); do_text ("temporary file", fd); (void) close (fd); (void) fflush (stdout);#ifdef MMDFMTS (void) mm_sbend (); (void) mm_end (OK);#endif MMDFMTS#ifdef X400 if (mts_arg == X400MTS) (void) x400s_end (DONE); else#endif X400#ifdef SENDMTS (void) sm_end (DONE);#endif SENDMTS sigoff ();}#endif TMA/* */#ifndef MHMTSstatic do_addresses (bccque, talk)#else MHMTSstatic do_addresses (file, fd, ud, bccque, talk)register char *file;int fd, ud;#endif MHMTSint bccque, talk;{ int retval;#ifndef BERK int state;#endif not BERK register struct mailname *lp;#ifndef BERK state = 0;#endif not BERK for (lp = localaddrs.m_next; lp; lp = lp -> m_next) if (lp -> m_bcc ? bccque : !bccque) {#ifndef BERK if (talk && !state) printf (" -- Local Recipients --\n");#endif not BERK#ifndef MHMTS do_an_address (lp, talk, 0);#else MHMTS localmail (lp, talk, fd);#endif MHMTS#ifndef BERK state++;#endif not BERK }#ifndef BERK state = 0;#endif not BERK for (lp = uuaddrs.m_next; lp; lp = lp -> m_next) if (lp -> m_bcc ? bccque : !bccque) {#ifndef BERK if (talk && !state) printf (" -- UUCP Recipients --\n");#endif not BERK#ifndef MHMTS do_an_address (lp, talk, 0);#else MHMTS uucpmail (lp, talk, ud != NOTOK ? ud : fd, ud == NOTOK);#endif MHMTS#ifndef BERK state++;#endif not BERK }#ifndef BERK state = 0;#endif not BERK for (lp = netaddrs.m_next; lp; lp = lp -> m_next) if (lp -> m_bcc ? bccque : !bccque) {#ifndef BERK if (talk && !state) printf (" -- Network Recipients --\n");#endif not BERK#ifndef MHMTS do_an_address (lp, talk, 0);#else MHMTS netmail (talk, fd, bccque);#endif MHMTS#ifndef BERK state++;#endif not BERK }/* */ chkadr ();#ifdef MMDFMTS if (rp_isbad (retval = mm_waend ())) die (NULLCP, "problem ending addresses [%s]\n", rp_valstr (retval));#endif MMDFMTS#ifdef X400 if (mts_arg == X400MTS) { if (rp_isbad (retval = x400s_waend (note))) die (NULLCP, "problem ending addresses; %s", rp_string (retval)); } else#endif X400#ifdef SENDMTS if (rp_isbad (retval = sm_waend ())) die (NULLCP, "problem ending addresses; %s", rp_string (retval));#endif SENDMTS}/* */#ifndef MHMTSstatic do_text (file, fd)register char *file;int fd;{ int retval, state; char buf[BUFSIZ];#ifdef MMDFMTS struct rp_bufstruct reply;#endif MMDFMTS (void) lseek (fd, 0L, 0); while ((state = read (fd, buf, sizeof buf)) > 0)#ifdef MMDFMTS if (rp_isbad (mm_wtxt (buf, state))) die (NULLCP, "problem writing text [%s]\n", rp_valstr (retval));#endif MMDFMTS#ifdef X400 if (mts_arg == X400MTS) { if (rp_isbad (retval = x400s_wtxt (buf, state))) die (NULLCP, "problem writing text; %s\n", rp_string (retval)); } else#endif X400#ifdef SENDMTS if (rp_isbad (retval = sm_wtxt (buf, state))) die (NULLCP, "problem writing text; %s\n", rp_string (retval));#endif SENDMTS if (state == NOTOK) die (file, "problem reading from");#ifdef MMDFMTS if (rp_isbad (retval = mm_wtend ())) die (NULLCP, "problem ending text [%s]\n", rp_valstr (retval)); if (rp_isbad (retval = mm_rrply (&reply, &state))) die (NULLCP, "problem getting submission status [%s]\n", rp_valstr (retval)); switch (rp_gval (reply.rp_val)) { case RP_OK: case RP_MOK: break; case RP_NO: die (NULLCP, "you lose; %s", reply.rp_line); case RP_NDEL: die (NULLCP, "no delivery occurred; %s", reply.rp_line); case RP_AGN: die (NULLCP, "try again later; %s", reply.rp_line); case RP_NOOP: die (NULLCP, "nothing done; %s", reply.rp_line); default: die (NULLCP, "unexpected response;\n\t[%s] -- %s", rp_valstr (reply.rp_val), reply.rp_line); }#endif MMDFMTS#ifdef X400 if (mts_arg == X400MTS) retval = x400s_wtend (); else#endif X400#ifdef SENDMTS retval = sm_wtend ();#endif SENDMTS#if defined (X400) || defined (SENDMTS) switch (retval) { case RP_OK: break; case RP_NO: case RP_NDEL: die (NULLCP, "posting failed; %s", rp_string (retval)); default: die (NULLCP, "unexpected response; %s", rp_string (retval)); }#endif defined (X400) || defined (SENDMTS)}#endif not MHMTS/* MTS-SPECIFIC INTERACTION */#ifdef MMDFMTS#ifndef TMA/* ARGSUSED */#endif TMAstatic do_an_address (lp, talk, tma)register struct mailname *lp;int talk, tma;{ int len, retval; register char *mbox, *host, *text, *path; char addr[BUFSIZ];#ifdef TMA char reason[BUFSIZ];#endif TMA struct rp_bufstruct reply; switch (lp -> m_type) { case LOCALHOST: mbox = lp -> m_mbox; host = LocalName (); (void) strcpy (addr, mbox); break; case UUCPHOST: #ifdef MF mbox = concat (lp -> m_host, "!", lp -> m_mbox, NULLCP); host = UucpChan (); (void) strcpy (addr, mbox); break;#else MF fprintf (talk ? stdout : stderr, " %s!%s: %s\n", lp -> m_host, lp -> m_mbox, "not supported; UUCP address"); unkadr++; (void) fflush (stdout); return;#endif MF default: /* let MMDF decide if the host is bad */ mbox = lp -> m_mbox; host = lp -> m_host; (void) sprintf (addr, "%s at %s", mbox, host); break; }#ifdef TMA if ((!whomsw || checksw) && tma && seekaddr (mbox, host, reason) == NOTOK) { fprintf (talk ? stdout : stderr, " %s%s: %s\n", addr, "[TMA]", reason); unkadr++; }#endif TMA if (talk) printf (" %s%s", addr, whomsw && lp -> m_bcc ? "[BCC]" : ""); if (whomsw && !checksw) { (void) putchar ('\n'); return; } if (talk) printf (": "); (void) fflush (stdout);/* */#ifdef MMDFII if (lp -> m_path) path = concat (lp -> m_path, mbox, "@", host, NULLCP); else#endif MMDFII path = NULLCP; if (rp_isbad (retval = mm_wadr (path ? NULLCP : host, path ? path : mbox)) || rp_isbad (retval = mm_rrply (&reply, &len))) die (NULLCP, "problem submitting address [%s]", rp_valstr (retval)); switch (rp_gval (reply.rp_val)) { case RP_AOK: if (talk) printf ("address ok\n"); (void) fflush (stdout); return;#ifdef RP_DOK case RP_DOK: if (talk) printf ("nameserver timeout - queued for checking\n"); (void) fflush (stdout); return;#endif RP_DOK case RP_NO: text = "you lose"; break;#ifdef RP_NS case RP_NS: text = "temporary nameserver failure"; break;#endif RP_NS case RP_USER: case RP_NDEL: text = "not deliverable"; break; case RP_AGN: text = "try again later"; break; case RP_NOOP: text = "nothing done"; break; default: if (!talk) fprintf (stderr, " %s: ", addr); text = "unexpected response"; die (NULLCP, "%s;\n [%s] -- %s", text, rp_valstr (reply.rp_val), reply.rp_line); } if (!talk) fprintf (stderr, " %s: ", addr); fprintf (talk ? stdout : stderr, "%s;\n %s\n", text, reply.rp_line); unkadr++; (void) fflush (stdout);}#endif MMDFMTS/* */#ifdef MHMTS/* ARGSUSED */static do_an_address (lp, talk, tma)register struct mailname *lp;int talk, tma;{ register char *mbox; char addr[BUFSIZ]; switch (lp -> m_type) { case LOCALHOST: (void) strcpy (addr, lp -> m_mbox); break; case UUCPHOST: (void) sprintf (addr, "%s!%s", lp -> m_host, lp -> m_mbox); break; default: (void) sprintf (addr, "%s at %s", lp -> m_mbox, lp -> m_host); break; } if (talk) printf (" %s%s", addr, whomsw && lp -> m_bcc ? "[BCC]" : ""); if (whomsw && !checksw) { (void) putchar ('\n'); return; } if (talk) printf (": "); (void) fflush (stdout);/* */ switch (lp -> m_type) { case LOCALHOST: mbox = lp -> m_mbox; if (*mbox == '~') mbox++; if (seek_home (mbox)) { lp -> m_mbox = mbox; if (talk) printf ("address ok\n"); } else { if (!talk) fprintf (stderr, " %s: ", addr); fprintf (talk ? stdout : stderr, "not deliverable; unknown user\n"); unkadr++; } break; case UUCPHOST: if (uucpsite (lp -> m_host) == OK) { if (talk) printf ("address ok\n"); } else { if (!talk) fprintf (stderr, " %s: ", addr); fprintf (talk ? stdout : stderr, "not deliverable; unknown system\n"); unkadr++; } break; case NETHOST: if (talk) printf ("address ok\n"); break; default: if (!talk) fprintf (stderr, " %s: ", addr); fprintf (talk ? stdout : stderr, "not deliverable; unknown host\n"); unkadr++; break; } (void) fflush (stdout);}#endif MHMTS/* */#ifdef SENDMTS#ifndef TMA/* ARGSUSED */#endif TMAstatic do_an_address (lp, talk, tma)register struct mailname *lp;int talk, tma;{ int retval; register char *mbox, *host; char addr[BUFSIZ];#ifdef TMA char reason[BUFSIZ];#endif TMA switch (lp -> m_type) { case LOCALHOST: mbox = lp -> m_mbox; host = lp -> m_host; (void) strcpy (addr, mbox); break; case UUCPHOST: mbox = auxformat (lp, 0); host = NULL; (void) sprintf (addr, "%s!%s", lp -> m_host, lp -> m_mbox); break; default: /* let SendMail decide if the host is bad */ mbox = lp -> m_mbox; host = lp -> m_host; (void) sprintf (addr, "%s at %s", mbox, host); break; }#ifdef TMA if ((!whomsw || checksw) && tma && seekaddr (mbox, host, reason) == NOTOK) { fprintf (talk ? stdout : stderr, " %s%s: %s\n", addr, "[TMA]", reason); unkadr++; }#endif TMA if (talk) printf (" %s%s", addr, whomsw && lp -> m_bcc ? "[BCC]" : ""); if (whomsw && !checksw) { (void) putchar ('\n'); return; } if (talk) printf (": "); (void) fflush (stdout);/* */#ifdef X400 if (mts_arg == X400MTS) retval = x400s_wadr (mbox, host, lp -> m_type != UUCPHOST ? lp -> m_path : NULLCP); else#endif X400 retval = sm_wadr (mbox, host, lp -> m_type != UUCPHOST ? lp -> m_path : NULLCP); switch (retval) { case RP_OK: if (talk) printf ("address ok\n"); break; case RP_NO: case RP_USER: if (!talk) fprintf (stderr, " %s: ", addr); fprintf (talk ? stdout : stderr, "loses; %s\n", rp_string (retval)); unkadr++; break; default: if (!talk) fprintf (stderr, " %s: ", addr); die (NULLCP, "unexpected response; %s", rp_string (retval)); } (void) fflush (stdout);}#endif SENDMTS/* SIGNAL HANDLING */#ifndef MHMTS/* ARGSUSED */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -