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

📄 chusername.c

📁 早期freebsd实现
💻 C
字号:
#ifndef lintstatic char *rcsid = "$Header: CHusername.c,v 1.1 87/05/11 09:59:41 ed Exp $";#endif lint/* contains: * CH_NameToUser */#ifndef CHUSERIDFILE#define CHUSERIDFILE "/usr/new/lib/xnscourier/chusermap"#endif#include <stdio.h>#include <sys/types.h>#include <netns/ns.h>#include <xnscourier/Clearinghouse2.h>#include <ctype.h>#include <ndbm.h>extern char *rindex(), *CH_NameToString();/* * produce a UNIX user name by table lookup given a CHS name */char *CH_NameToUser(chs_name)	Clearinghouse2_ThreePartName chs_name;{	static char userid[12];	DBM *db;	datum cptr, uptr;	register char *ptr;	Clearinghouse2_ObjectName chdefault;	FILE *dbf;	char charbuf[100];	int n;	uptr.dptr = NULL;	cptr.dptr = CH_NameToString(chs_name);	for (ptr =cptr.dptr; *ptr != '\0'; ptr++)		if (islower(*ptr)) *ptr = toupper(*ptr);	/* lookup user id in hashed database */	if ( (db= dbm_open(CHUSERIDFILE, 0, 0)) != (DBM*)0 ) {		cptr.dsize = strlen(cptr.dptr);		uptr = dbm_fetch(db, cptr);		dbm_close(db);	}	/* lookup user id in text database using linear search */	else if ( (dbf = fopen(CHUSERIDFILE, 0)) >= 0 ) {		while ((n=fscanf(dbf, "%[^\t\n]\t%s\n",charbuf,userid)) >= 0) {			if (n != 2) continue;			for (ptr=charbuf; *ptr != '\0'; ptr++)				if (islower(*ptr)) *ptr = toupper(*ptr);			if (strcmp(charbuf,cptr.dptr) == 0) {				uptr.dptr = userid;				break;	/* found it! */			}		}		fclose(dbf);	}	if (uptr.dptr != NULL) return(uptr.dptr);	/* default case */	chdefault.object = chdefault.domain = chdefault.organization = NULL;	CH_NameDefault(&chdefault);	if ( strcmp(chs_name.domain,chdefault.domain) != 0 ||	     strcmp(chs_name.organization,chdefault.organization) != 0)		return("nobody");	else if ( (ptr= rindex(chs_name.object, ' ')) == 0 )		return(chs_name.object);	else		return(ptr+1);}

⌨️ 快捷键说明

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