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

📄 bfsgetdoms.c

📁 早期freebsd实现
💻 C
字号:
/* $Header: bfsgetdoms.c,v 1.1 86/06/27 13:14:35 jqj Exp $ *//* $Log:	bfsgetdoms.c,v $ * Revision 1.1  86/06/27  13:14:35  jqj * Initial revision *  */ /* get domains served by a CHS server */#include <stdio.h>#include <sys/types.h>#include <netns/ns.h>#include <xnscourier/Clearinghouse2.h>#include <xnscourier/except.h>static Cardinal nullhash = 0;static Clearinghouse2_Authenticator nullagent = {{0,{0,(Unspecified*)0}},						 {1,&nullhash}};FILE *outfile;#define MAXPACKS 20staticlistproc(conn)	CourierConnection *conn;{	int count, i;	Unspecified buffer[MAXWORDS*MAXPACKS], *bp, *bufend;	Clearinghouse2_StreamOfDomainName names;	bufend = buffer;	bp = buffer+((MAXWORDS-1)*MAXPACKS);	/* end of avail. space */	while ((count = BDTread(conn, (char*)bufend,				MAXWORDS*sizeof(Unspecified))) > 0) {		bufend += count/sizeof(Unspecified);		if (bufend > bp) {			fprintf(stderr,"BDT read too big to fit\n");			BDTabort(conn);		}	}	bp = buffer;	while (bp < bufend) {		bp += internalize_Clearinghouse2_StreamOfDomainName(&names,bp);		if (0 == (int) names.designator) {		    for (i=0; i < names.nextSegment_case.segment.length; i++) {			printout(names.nextSegment_case.segment.sequence[i]);		    }		    free(names.nextSegment_case.segment.sequence);		} else {		    for (i=0; i < names.lastSegment_case.length; i++) {			printout(names.lastSegment_case.sequence[i]);		    }		    free(names.lastSegment_case.sequence);		    return;		}	}}staticprintout(dname)	Clearinghouse2_DomainName dname;{	/* print out a 2-part domain name */	if (strcmp(dname.domain,"...") == 0 &&	    strcmp(dname.organization,"...") == 0)		return;	fprintf(outfile," \":%s:%s\"",dname.domain,dname.organization);}printdomains(sns)	struct ns_addr sns;{	CourierConnection *ccon;	extern char *ns_ntoa();	sns.x_port = 0;	ccon = CourierOpen(&sns);	if (ccon == (CourierConnection *)NULL) return;	fprintf(outfile,"%s", ns_ntoa(sns));	DURING		Clearinghouse2_ListDomainServed(ccon, listproc,				BulkData1_immediateSink, nullagent);	HANDLER {	} END_HANDLER;	CourierClose(ccon);	fprintf(outfile,"\n");}

⌨️ 快捷键说明

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