xti_getopt.c

来自「Unix网络编程 基于Socket的网络编程」· C语言 代码 · 共 45 行

C
45
字号
#include	"unpxti.h"intxti_getopt(int fd, int level, int name, void *optval, socklen_t *optlenp){	int					rc, len;	struct t_optmgmt	*req, *ret;	struct t_opthdr		*topt;	req = T_alloc(fd, T_OPTMGMT, T_ALL);	ret = T_alloc(fd, T_OPTMGMT, T_ALL);	if (req->opt.maxlen == 0)		err_quit("xti_getopt: opt.maxlen == 0");	topt = (struct t_opthdr *) req->opt.buf;	topt->level = level;	topt->name = name;	topt->len = sizeof(struct t_opthdr);	/* just a t_opthdr{} */	req->opt.len = topt->len;	req->flags = T_CURRENT;	if (t_optmgmt(fd, req, ret) < 0) {		T_free(req, T_OPTMGMT);		T_free(ret, T_OPTMGMT);		return(-1);	}	rc = ret->flags;	if (rc == T_SUCCESS || rc == T_READONLY) {			/*4copy back value and length */		topt = (struct t_opthdr *) ret->opt.buf;		len = topt->len - sizeof(struct t_opthdr);		len = min(len, *optlenp);		memcpy(optval, topt+1, len);		*optlenp = len;	}	T_free(req, T_OPTMGMT);	T_free(ret, T_OPTMGMT);	if (rc == T_SUCCESS || rc == T_READONLY)		return(0);	return(-1);		/* T_NOTSUPPORT */}

⌨️ 快捷键说明

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