listproperties.c

来自「早期freebsd实现」· C语言 代码 · 共 68 行

C
68
字号
#include <stdio.h>#include <sys/types.h>#include <netns/ns.h>#include "Clearinghouse2_defs.h"#include <xnscourier/courier.h>#include <xnscourier/except.h>#include <xnscourier/CH.h>main(argc, argv)	int argc;	char *argv[];{	ObjectName myname, name, hint;	struct xn_addr *destaddr, *getXNSaddr();	Authenticator agent;	CourierConnection *conn, *ch2conn;	int i;	ListPropertiesResults result;	char *pwd, *getXNSpass();	if (argc < 2 || argc >4) {		fprintf(stderr,"Usage: %s name\n",argv[0]);		exit(1);	}	CH_NameDefault(&myname);	name = CH_StringToName(argv[1],&myname);	myname.object = pwd = "";	/* pwd = getXNSpass("Password:"); */	MakeSimpleCredsAndVerifier(&myname,pwd,			&agent.credentials, &agent.verifier);	if (argc > 2)		name.domain = argv[2];	if (argc > 3)		name.organization = argv[3];	if ((conn = CH_GetFirstCH()) == NULL) {		fprintf(stderr, "Can't open connection to local CH\n");		exit(1);	}	DURING		result = ListProperties(conn,NULL,name,agent);	HANDLER {		if (Exception.Code != WrongServer) {			fprintf(stderr,"Oops.  Error\n");			exit(1);		}		hint = CourierErrArgs(WrongServerArgs, hint);		ch2conn = CH_GetOtherCH(conn, hint);		CourierClose(conn);		if (ch2conn == NULL) {			fprintf(stderr,"Can't get to alternate CH\n");			exit(1);			}		conn = ch2conn;		DURING			result = ListProperties(conn,NULL,name,agent);		HANDLER {			fprintf(stderr,"Oops.  Error.\n");			exit(1);		} END_HANDLER;	} END_HANDLER;	CourierClose(conn);	printf("name: %s:%s:%s\n", result.distinguishedObject.object,			result.distinguishedObject.domain,			result.distinguishedObject.organization);	for (i = 0; i < result.properties.length; i++)		printf("\t%d:  %d\n",i,result.properties.sequence[i]>>16);}

⌨️ 快捷键说明

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