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

📄 qu2bb_send.c

📁 早期freebsd实现
💻 C
字号:
#ifndef	POP/* qu2bb_send.c - manager for qu --> bb */#else	POP/* qu2po_send.c - manager for qu --> po */#endif	POP#include "util.h"#include "mmdf.h"#include "phs.h"#include "ch.h"/*  */extern LLog *logptr;extern char *supportaddr;struct rp_construct rp_hend  = { /* end of host list */    RP_NOOP,    'e', 'n', 'd', ' ', 'o', 'f', ' ', 'h', 'o', 's', 't', ' ',    'i', 'g', 'n', 'o', 'r', 'e', 'd',     NULL};struct rp_construct rp_aend = {	/* end of address list */    RP_OK,#ifndef	POP    'b', 'b', 'o', 'a', 'r', 'd', 's', ' ', 'e', 'n', 'd', ' ',#else	POP    'p', 'o', 'p', ' ', 'e', 'n', 'd', ' ',#endif	POP    'o', 'f', ' ', 'a', 'd', 'd', 'r', ' ', 'l', 'i', 's', 't',    NULL};struct rp_construct rp_badr = {	/* no such bboard */    RP_USER,    'u', 'n', 'k', 'n', 'o', 'w', 'n', ' ',#ifndef	POP    'b', 'b', 'o', 'a', 'r', 'd',#else	POP    'p', 'o', 'p', ' ', 's', 'u', 'b', 's', 'c', 'r', 'i', 'b', 'e', 'r',#endif	POP    NULL};struct rp_construct rp_err = {	/* error, retry later */    RP_AGN,    'u', 'n', 'k', 'n', 'o', 'w', 'n', ' ', 'e', 'r', 'r', 'o', 'r',    NULL};/*  */qu2bb_send (chanptr)Chan *chanptr;{    short   result;    char    info[LINESIZE],            sender[LINESIZE];#ifdef DEBUG    ll_log (logptr, LLOGBTR, "qu2bb_send()");#endif    if (rp_isbad (result = qu_pkinit ()))	return result;    if (rp_isbad (result = bb_sbinit ()))	return result;    while (rp_gval ((result =	    qu_rinit (info, sender, chanptr -> ch_apout))) == RP_OK) {#ifdef	DEBUG	ll_log (logptr, LLOGGEN, "info=%s sender=%s", info, sender);#endif	if (rp_isbad (result = bb_winit (info, sender)))	    return result;	if (rp_isbad (result = qu2bb_each (sender)))	    return result;	qu_rend();    }    qu_rend();    if (rp_gval (result) != RP_DONE) {	ll_log (logptr, LLOGTMP, "not DONE [%s]", rp_valstr (result));	return RP_RPLY;    }    qu_pkend ();    bb_sbend ();    return result;}/*  */LOCFUNqu2bb_each (sender)char   *sender;{    short   result;    char    adr[LINESIZE],            host[LINESIZE];    RP_Buf replyval;#ifdef DEBUG    ll_log (logptr, LLOGBTR, "qu2bb_each(sender='%s')", sender);#endif    FOREVER {			/* loop through the addresses */	if (rp_isbad (result = qu_radr (host, adr)))	    return result;#ifdef	RP_HOK	if (rp_gval (result) == RP_HOK)	{/* no-op the sub-list indication */	    qu_wrply ((struct rp_bufstruct *) &rp_hend, rp_conlen (rp_hend));	    continue;	}#endif	RP_HOK	if (rp_gval (result) == RP_DONE) {	    qu_wrply ((RP_Buf *) &rp_aend, rp_conlen (rp_aend));	    return RP_OK;	}	switch (replyval.rp_val = bb_wtadr (host, adr)) {	    case RP_AOK: 	    case RP_OK: 		switch (replyval.rp_val = bb_txtcpy ()) {		    case RP_MOK: 			replyval.rp_line[0] = NULL;			break;		    default: 			ll_log (logptr, LLOGFAT, "unknown error [%s]",				rp_valstr (replyval.rp_val));			blt (&rp_err, (char *) &replyval, sizeof rp_err);			break;		}		break;	    case RP_USER: #ifndef	POP		ll_log (logptr, LLOGFAT, "unknown bboard '%s'", adr);#else	POP		ll_log (logptr, LLOGFAT, "unknown pop subscriber '%s'", adr);#endif	POP		blt (&rp_badr, (char *) &replyval, sizeof rp_badr);		break;	    default: 		ll_log (logptr, LLOGFAT, "unknown error [%s]",			rp_valstr (replyval.rp_val));		blt (&rp_err, (char *) &replyval, sizeof rp_err);		break;	}	qu_wrply (&replyval,		(sizeof replyval.rp_val) + strlen (replyval.rp_line));    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -