📄 chusername.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 + -