亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? yp_enum.c

?? 操作系統SunOS 4.1.3版本的源碼
?? C
字號:
#if	!defined(lint) && defined(SCCSIDS)static  char sccsid[] = "@(#)yp_enum.c 1.1 92/07/30 Copyr 1990 Sun Micro";#endif#define	NULL 0#include <sys/time.h>#include <rpc/rpc.h>#include "yp_prot.h"#include "ypv1_prot.h"#include "ypclnt.h"static char *ypsymbol_prefix = "YP_";static int ypsymbol_prefix_length = 3;static int v2dofirst(), v1dofirst(), v2donext(), v1donext();extern struct timeval _ypserv_timeout;extern unsigned int _ypsleeptime;extern int _yp_dobind();extern malloc_t malloc();/* * This requests the NIS server associated with a given domain to return the * first key/value pair from the map data base.  The returned key should be * used as an input to the call to ypclnt_next.  This part does the parameter * checking, and the do-until-success loop. */intyp_first (domain, map, key, keylen, val, vallen)	char *domain;	char *map;	char **key;		/* return: key array */	int  *keylen;		/* return: bytes in key */	char **val;		/* return: value array */	int  *vallen;		/* return: bytes in val */{	int domlen;	int maplen;	struct dom_binding *pdomb;	int reason;	int (*dofun)();	if ( (map == NULL) || (domain == NULL) ) {		return (YPERR_BADARGS);	}	domlen = strlen(domain);	maplen = strlen(map);	if ( (domlen == 0) || (domlen > YPMAXDOMAIN) ||	    (maplen == 0) || (maplen > YPMAXMAP) ) {		return (YPERR_BADARGS);	}	for (;;) {		if (reason = _yp_dobind(domain, &pdomb) ) {			return (reason);		}		dofun = (pdomb->dom_vers == YPVERS) ? v2dofirst : v1dofirst;		reason = (*dofun)(domain, map, pdomb, _ypserv_timeout,		    key, keylen, val, vallen);		if (reason == YPERR_RPC) {			yp_unbind(domain);			(void) sleep(_ypsleeptime);		} else {			break;		}	}	return (reason);}/* * This part of the "get first" interface talks to ypserv. */static intv2dofirst (domain, map, pdomb, timeout, key, keylen, val, vallen)	char *domain;	char *map;	struct dom_binding *pdomb;	struct timeval timeout;	char **key;	int  *keylen;	char **val;	int  *vallen;{	struct ypreq_nokey req;	struct ypresp_key_val resp;	unsigned int retval = 0;	req.domain = domain;	req.map = map;	resp.keydat.dptr = resp.valdat.dptr = NULL;	resp.keydat.dsize = resp.valdat.dsize = 0;	/*	 * Do the get first request.  If the rpc call failed, return with status	 * from this point.	 */	if(clnt_call(pdomb->dom_client, YPPROC_FIRST, xdr_ypreq_nokey,	    &req, xdr_ypresp_key_val, &resp, timeout) != RPC_SUCCESS) {		return (YPERR_RPC);	}	/* See if the request succeeded */	if (resp.status != YP_TRUE) {		retval = ypprot_err((unsigned) resp.status);	}	/* Get some memory which the user can get rid of as he likes */	if (!retval) {		if ((*key =		    (char *) malloc((unsigned)			resp.keydat.dsize + 2)) != NULL) {			if ((*val = (char *) malloc(			    (unsigned) resp.valdat.dsize + 2) ) == NULL) {				free((char *) *key);				retval = YPERR_RESRC;			}		} else {			retval = YPERR_RESRC;		}	}	/* Copy the returned key and value byte strings into the new memory */	if (!retval) {		*keylen = resp.keydat.dsize;		bcopy(resp.keydat.dptr, *key, resp.keydat.dsize);		(*key)[resp.keydat.dsize] = '\n';		(*key)[resp.keydat.dsize + 1] = '\0';		*vallen = resp.valdat.dsize;		bcopy(resp.valdat.dptr, *val, resp.valdat.dsize);		(*val)[resp.valdat.dsize] = '\n';		(*val)[resp.valdat.dsize + 1] = '\0';	}	CLNT_FREERES(pdomb->dom_client, xdr_ypresp_key_val, &resp);	return (retval);}static intv1dofirst (domain, map, pdomb, timeout, key, keylen, val, vallen)	char *domain;	char *map;	struct dom_binding *pdomb;	struct timeval timeout;	char **key;	int  *keylen;	char **val;	int  *vallen;{	int result;	result = v1prot_dofirst (domain, map, pdomb, timeout,	    key, keylen, val, vallen);	if (result) {		return (result);	} else {		return (v1filter (domain, map, pdomb, timeout,		    key, keylen, val, vallen));	}}intv1prot_dofirst (domain, map, pdomb, timeout, key, keylen, val, vallen)	char *domain;	char *map;	struct dom_binding *pdomb;	struct timeval timeout;	char **key;	int  *keylen;	char **val;	int  *vallen;{	struct yprequest req;	struct ypresponse resp;	unsigned int retval = 0;	req.yp_reqtype = YPFIRST_REQTYPE;	req.ypfirst_req_domain = domain;	req.ypfirst_req_map = map;	resp.ypfirst_resp_keyptr = NULL;	resp.ypfirst_resp_keysize = 0;	resp.ypfirst_resp_valptr = NULL;	resp.ypfirst_resp_valsize = 0;	/*	 * Do the get first request.  If the rpc call failed, return with status	 * from this point.	 */	if(clnt_call(pdomb->dom_client, YPOLDPROC_FIRST, _xdr_yprequest,	    &req, _xdr_ypresponse, &resp, timeout) != RPC_SUCCESS) {		return (YPERR_RPC);	}	/* See if the request succeeded */	if (resp.ypfirst_resp_status != YP_TRUE) {		retval = ypprot_err((unsigned) resp.ypfirst_resp_status);	}	/* Get some memory which the user can get rid of as he likes */	if (!retval) {		if ((*key =		    (char *) malloc((unsigned)			resp.ypfirst_resp_keysize + 2)) != NULL) {			if ((*val = (char *) malloc((unsigned)			    resp.ypfirst_resp_valsize + 2) ) == NULL) {				free((char *) *key);				retval = YPERR_RESRC;			}		} else {			retval = YPERR_RESRC;		}	}	/* Copy the returned key and value byte strings into the new memory */	if (!retval) {		*keylen = resp.ypfirst_resp_keysize;		bcopy(resp.ypfirst_resp_keyptr,		    *key, resp.ypfirst_resp_keysize);		(*key)[resp.ypfirst_resp_keysize] = '\n';		(*key)[resp.ypfirst_resp_keysize + 1] = '\0';		*vallen = resp.ypfirst_resp_valsize;		bcopy(resp.ypfirst_resp_valptr, *val,		    resp.ypfirst_resp_valsize);		(*val)[resp.ypfirst_resp_valsize] = '\n';		(*val)[resp.ypfirst_resp_valsize + 1] = '\0';	}	CLNT_FREERES(pdomb->dom_client, _xdr_ypresponse, &resp);	return (retval);}/* * This requests the NIS server associated with a given domain to return the * "next" key/value pair from the map data base.  The input key should be * one returned by ypclnt_first or a previous call to ypclnt_next.  The * returned key should be used as an input to the next call to ypclnt_next. * This part does the parameter checking, and the do-until-success loop. */intyp_next (domain, map, inkey, inkeylen, outkey, outkeylen, val, vallen)	char *domain;	char *map;	char *inkey;	int  inkeylen;	char **outkey;		/* return: key array associated with val */	int  *outkeylen;	/* return: bytes in key */	char **val;		/* return: value array associated with outkey */	int  *vallen;		/* return: bytes in val */{	int domlen;	int maplen;	struct dom_binding *pdomb;	int reason;	int (*dofun)();	if ( (map == NULL) || (domain == NULL) || (inkey == NULL) ) {		return (YPERR_BADARGS);	}	domlen = strlen(domain);	maplen = strlen(map);	if ( (domlen == 0) || (domlen > YPMAXDOMAIN) ||	    (maplen == 0) || (maplen > YPMAXMAP) ) {		return (YPERR_BADARGS);	}	for (;;) {		if (reason = _yp_dobind(domain, &pdomb) ) {			return (reason);		}		dofun = (pdomb->dom_vers == YPVERS) ? v2donext : v1donext;		reason = (*dofun)(domain, map, inkey, inkeylen, pdomb,		    _ypserv_timeout, outkey, outkeylen, val, vallen);		if (reason == YPERR_RPC) {			yp_unbind(domain);			(void) sleep(_ypsleeptime);		} else {			break;		}	}	return (reason);}/* * This part of the "get next" interface talks to ypserv. */static intv2donext (domain, map, inkey, inkeylen, pdomb, timeout, outkey, outkeylen,    val, vallen)	char *domain;	char *map;	char *inkey;	int  inkeylen;	struct dom_binding *pdomb;	struct timeval timeout;	char **outkey;		/* return: key array associated with val */	int  *outkeylen;	/* return: bytes in key */	char **val;		/* return: value array associated with outkey */	int  *vallen;		/* return: bytes in val */{	struct ypreq_key req;	struct ypresp_key_val resp;	unsigned int retval = 0;	req.domain = domain;	req.map = map;	req.keydat.dptr = inkey;	req.keydat.dsize = inkeylen;	resp.keydat.dptr = resp.valdat.dptr = NULL;	resp.keydat.dsize = resp.valdat.dsize = 0;	/*	 * Do the get next request.  If the rpc call failed, return with status	 * from this point.	 */	if(clnt_call(pdomb->dom_client,	    YPPROC_NEXT, xdr_ypreq_key, &req, xdr_ypresp_key_val, &resp,	    timeout) != RPC_SUCCESS) {		return (YPERR_RPC);	}	/* See if the request succeeded */	if (resp.status != YP_TRUE) {		retval = ypprot_err((unsigned) resp.status);	}	/* Get some memory which the user can get rid of as he likes */	if (!retval) {		if ( (*outkey = (char *) malloc((unsigned)		    resp.keydat.dsize + 2) ) != NULL) {			if ( (*val = (char *) malloc((unsigned)			    resp.valdat.dsize + 2) ) == NULL) {				free((char *) *outkey);				retval = YPERR_RESRC;			}		} else {			retval = YPERR_RESRC;		}	}	/* Copy the returned key and value byte strings into the new memory */	if (!retval) {		*outkeylen = resp.keydat.dsize;		bcopy(resp.keydat.dptr, *outkey,		    resp.keydat.dsize);		(*outkey)[resp.keydat.dsize] = '\n';		(*outkey)[resp.keydat.dsize + 1] = '\0';		*vallen = resp.valdat.dsize;		bcopy(resp.valdat.dptr, *val, resp.valdat.dsize);		(*val)[resp.valdat.dsize] = '\n';		(*val)[resp.valdat.dsize + 1] = '\0';	}	CLNT_FREERES(pdomb->dom_client, xdr_ypresp_key_val, &resp);	return (retval);}static intv1donext (domain, map, inkey, inkeylen, pdomb, timeout,    outkey, outkeylen, val, vallen)	char *domain;	char *map;	char *inkey;	int  inkeylen;	struct dom_binding *pdomb;	struct timeval timeout;	char **outkey;		/* return: key array associated with val */	int  *outkeylen;	/* return: bytes in key */	char **val;		/* return: value array associated with outkey */	int  *vallen;		/* return: bytes in val */{	int result;	result = v1prot_donext (domain, map, inkey, inkeylen, pdomb, timeout,	    outkey, outkeylen, val, vallen);	if (result) {		return (result);	} else {		return (v1filter (domain, map, pdomb, timeout,		    outkey, outkeylen, val, vallen));	}}intv1prot_donext (domain, map, inkey, inkeylen, pdomb, timeout,    outkey, outkeylen, val, vallen)	char *domain;	char *map;	char *inkey;	int  inkeylen;	struct dom_binding *pdomb;	struct timeval timeout;	char **outkey;		/* return: key array associated with val */	int  *outkeylen;	/* return: bytes in key */	char **val;		/* return: value array associated with outkey */	int  *vallen;		/* return: bytes in val */{	struct yprequest req;	struct ypresponse resp;	unsigned int retval = 0;	req.yp_reqtype = YPNEXT_REQTYPE;	req.ypnext_req_domain = domain;	req.ypnext_req_map = map;	req.ypnext_req_keyptr = inkey;	req.ypnext_req_keysize = inkeylen;	resp.ypnext_resp_keyptr = NULL;	resp.ypnext_resp_keysize = 0;	resp.ypnext_resp_valptr = NULL;	resp.ypnext_resp_valsize = 0;	/*	 * Do the get next request.  If the rpc call failed, return with status	 * from this point.	 */	if(clnt_call(pdomb->dom_client, YPOLDPROC_NEXT, _xdr_yprequest,	    &req, _xdr_ypresponse, &resp, timeout) != RPC_SUCCESS) {		return (YPERR_RPC);	}	if (resp.ypnext_resp_status != YP_TRUE) {		retval = ypprot_err((unsigned) resp.ypnext_resp_status);	}	/* Get some memory which the user can get rid of as he likes */	if (!retval) {		if ( (*outkey = (char *) malloc((unsigned)		    resp.ypnext_resp_keysize + 2) ) != NULL) {			if ( (*val = (char *) malloc((unsigned)			    resp.ypnext_resp_valsize + 2) ) == NULL) {				free((char *) *outkey);				retval = YPERR_RESRC;			}		} else {			retval = YPERR_RESRC;		}	}	/* Copy the returned key and value byte strings into the new memory */	if (!retval) {		*outkeylen = resp.ypnext_resp_keysize;		bcopy(resp.ypnext_resp_keyptr, *outkey,		    resp.ypnext_resp_keysize);		(*outkey)[resp.ypnext_resp_keysize] = '\n';		(*outkey)[resp.ypnext_resp_keysize + 1] = '\0';		*vallen = resp.ypnext_resp_valsize;		bcopy(resp.ypnext_resp_valptr, *val, resp.ypnext_resp_valsize);		(*val)[resp.ypnext_resp_valsize] = '\n';		(*val)[resp.ypnext_resp_valsize + 1] = '\0';	}	CLNT_FREERES(pdomb->dom_client, _xdr_ypresponse, &resp);	return (retval);}/* * This supplies client side NIS-private key filtration.  It is needed in * speaking with v.1 protocol-speaking servers. * * This continues to get "next" key-value pairs from the map while the * key-value pairs which come back have keys which are NIS private symbols. */static intv1filter (domain, map, pdomb, timeout, key, keylen, val, vallen)	char *domain;	char *map;	struct dom_binding *pdomb;	struct timeval timeout;	char **key;		/* return: key array */	int  *keylen;		/* return: bytes in key */	char **val;		/* return: value array */	int  *vallen;		/* return: bytes in val */{	char *inkey;	int inkeylen;	int result = 0;	/*	 * Keep trying to get the next key-value pair as long as we	 * (1) continue to succeed, and	 * (2) the key we get back is a NIS reserved symbol.	 */ 	inkey = NULL;	inkeylen = 0;	while ( (!result) &&	    (!bcmp(*key, ypsymbol_prefix, ypsymbol_prefix_length) ) ) {		inkey = *key;		inkeylen = *keylen;		*key = NULL;		*keylen = 0;		free(*val);		*val = NULL;		*vallen = 0;		result = v1prot_donext (domain, map, inkey, inkeylen,		    pdomb, timeout, key, keylen, val, vallen);		free(inkey);		inkeylen = 0;	}	return (result);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲黄色性网站| 国产一区二区主播在线| 久久se这里有精品| 99久久夜色精品国产网站| 欧美一级艳片视频免费观看| 成人免费在线视频观看| 久久国产尿小便嘘嘘尿| 91丨国产丨九色丨pron| 精品国产乱码久久久久久免费| 亚洲综合精品久久| 国产91精品露脸国语对白| 欧美一区二区三区在线电影| 亚洲免费在线视频一区 二区| 精品影视av免费| 欧美人体做爰大胆视频| 亚洲欧美成人一区二区三区| 国内偷窥港台综合视频在线播放| 欧美日本乱大交xxxxx| 18欧美亚洲精品| 福利91精品一区二区三区| 久久久综合视频| 美女一区二区视频| 欧美日本一区二区三区| 亚洲国产一区二区三区青草影视 | 日韩女优制服丝袜电影| 亚洲综合免费观看高清完整版 | 久久国产尿小便嘘嘘尿| 欧美久久久一区| 亚洲国产精品久久久久婷婷884| 成人av电影观看| 国产精品丝袜一区| 成人aa视频在线观看| 国产精品女主播av| 不卡欧美aaaaa| 国产精品久久久久一区二区三区共| 国产精品一二三四区| 亚洲精品在线观看视频| 国产九色sp调教91| 中文字幕不卡在线播放| 成人爱爱电影网址| ...av二区三区久久精品| www.综合网.com| 1区2区3区欧美| 在线免费观看视频一区| 亚洲成人激情av| 欧美日韩高清不卡| 秋霞成人午夜伦在线观看| 日韩午夜av一区| 精品一区二区在线免费观看| 26uuu亚洲| 成人午夜免费av| 一个色综合网站| 欧美日韩第一区日日骚| 免费不卡在线观看| 久久精品综合网| 91伊人久久大香线蕉| 亚洲综合999| 日韩精品专区在线| 成人av综合在线| 亚洲综合一区二区| 日韩欧美一二三区| 成人av在线一区二区三区| 亚洲国产精品天堂| 久久色中文字幕| 91免费看`日韩一区二区| 午夜a成v人精品| 久久久www成人免费毛片麻豆| 成人黄色777网| 天天色 色综合| 欧美激情一区二区三区蜜桃视频| 在线观看视频一区二区欧美日韩| 秋霞电影网一区二区| 国产精品久久久久一区| 欧美区视频在线观看| 国产成人免费视频精品含羞草妖精 | 97se狠狠狠综合亚洲狠狠| 五月天欧美精品| 久久午夜色播影院免费高清 | 亚洲毛片av在线| 日韩精品一区二区三区swag | 亚洲欧美另类图片小说| 91精品国产乱| 91丝袜美腿高跟国产极品老师 | 丰满岳乱妇一区二区三区| 亚洲一区二区三区影院| 久久久久国产精品麻豆ai换脸| 91高清视频在线| 国产一本一道久久香蕉| 同产精品九九九| 亚洲欧洲日韩av| www日韩大片| 制服丝袜亚洲播放| 一本色道综合亚洲| 成人av集中营| 国产精品一色哟哟哟| 日韩成人午夜精品| 一区二区三区精品视频| 国产精品久久网站| 精品国产精品网麻豆系列| 在线观看成人小视频| zzijzzij亚洲日本少妇熟睡| 久久疯狂做爰流白浆xx| 日韩精品一二三| 亚洲一区国产视频| 亚洲精品美腿丝袜| 亚洲欧美日韩国产综合| 中文一区二区在线观看| 26uuu久久综合| 精品国产区一区| 精品国产一区二区三区久久影院 | 首页欧美精品中文字幕| 亚洲自拍偷拍图区| 亚洲午夜在线观看视频在线| 亚洲免费观看视频| 亚洲欧美日韩一区二区 | 日韩视频免费观看高清完整版在线观看 | 日韩一区二区三区四区| 成人性生交大片免费看中文| 久久电影国产免费久久电影| 欧美激情一区三区| 中文字幕一区二区三区色视频| 亚洲精品一区二区在线观看| 在线不卡免费欧美| 在线影院国内精品| 国产一区二区三区| 国产成人av资源| 国产一本一道久久香蕉| 麻豆高清免费国产一区| 日韩高清一级片| 亚洲国产中文字幕在线视频综合| 午夜欧美电影在线观看| 亚洲成人免费看| 亚洲国产视频一区二区| 亚洲免费在线观看| 亚洲欧美另类小说| 亚洲欧美日韩电影| 亚洲精品欧美二区三区中文字幕| 国产精品久久久久久户外露出 | 久久精品一区二区三区不卡牛牛| 91精品国产色综合久久ai换脸 | 久久久精品天堂| 久久久久国产精品人| 中文字幕不卡在线观看| 亚洲激情欧美激情| 亚州成人在线电影| 男女男精品视频| 久久精品国产久精国产| 免费在线观看精品| 成人开心网精品视频| 国产98色在线|日韩| 成人黄色免费短视频| 在线欧美小视频| 欧美色老头old∨ideo| 精品国产一区二区三区四区四 | 91婷婷韩国欧美一区二区| 91黄色在线观看| 3d动漫精品啪啪一区二区竹菊 | 欧美三级资源在线| 精品成人免费观看| 综合婷婷亚洲小说| 亚洲国产乱码最新视频| 久久99精品国产| av影院午夜一区| 欧美日本视频在线| 中国av一区二区三区| 亚洲国产视频网站| 成人精品国产一区二区4080| 在线亚洲一区观看| 日韩欧美国产综合| 亚洲欧美综合色| 麻豆一区二区99久久久久| 91福利在线观看| 久久午夜电影网| 亚洲va韩国va欧美va精品| 久久精品72免费观看| 欧美色大人视频| 国产精品天干天干在线综合| 亚洲成人动漫精品| 成人精品国产一区二区4080| 成人午夜视频网站| 久久一区二区视频| 亚洲影视在线播放| 国产福利精品一区二区| 欧美三级蜜桃2在线观看| 精品国产免费一区二区三区四区 | 亚洲视频你懂的| 久久99久久99小草精品免视看| 91一区一区三区| 国产精品九色蝌蚪自拍| 免费人成精品欧美精品| 91美女片黄在线观看91美女| 欧美va亚洲va| ㊣最新国产の精品bt伙计久久| 国产成人亚洲综合a∨猫咪| 欧美乱熟臀69xxxxxx| 亚洲欧美激情插| 成人理论电影网| 亚洲视频一区二区在线观看| 国产伦精品一区二区三区视频青涩 | 麻豆成人久久精品二区三区红 |