⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 post.c

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻 C
📖 第 1 页 / 共 5 页
字号:
    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 + -