ds_types.c

来自「ftam等标准协议服务器和客户端的源代码。」· C语言 代码 · 共 913 行 · 第 1/2 页

C
913
字号
int	abandon_arg_dup (src, tgt)struct ds_abandon_arg	* src;struct ds_abandon_arg	* tgt;{	tgt->aba_invokeid = src->aba_invokeid;	return (OK);}int	  list_arg_dup (src, tgt)struct ds_list_arg	* src;struct ds_list_arg	* tgt;{	if (ca_dup (&(src->lsa_common), &(tgt->lsa_common)) != OK)	    return (NOTOK);	if (src->lsa_object == NULLDN)		tgt->lsa_object = NULLDN;	else if ((tgt->lsa_object = dn_cpy (src->lsa_object)) == NULLDN)		return (NOTOK);	return OK;}int	  search_arg_dup (src, tgt)struct ds_search_arg	* src;struct ds_search_arg	* tgt;{struct s_filter	* filter_cpy();	if (ca_dup (&(src->sra_common), &(tgt->sra_common)) != OK)	    return (NOTOK);	if (src->sra_baseobject = NULLDN)		tgt->sra_baseobject = NULLDN;	else if ((tgt->sra_baseobject = dn_cpy (src->sra_baseobject)) == NULLDN)		return (NOTOK);	tgt->sra_subset = src->sra_subset;	if (src->sra_filter == NULLFILTER)		tgt->sra_filter = NULLFILTER;	else if ((tgt->sra_filter = filter_cpy (src->sra_filter)) == NULLFILTER)		return (NOTOK);	tgt->sra_searchaliases = src->sra_searchaliases;	if (eis_dup (&(src->sra_eis), &(tgt->sra_eis)) != OK)	    return (NOTOK);	return (OK);}int	  addentry_arg_dup (src, tgt)struct ds_addentry_arg	* src;struct ds_addentry_arg	* tgt;{	if (ca_dup (&(src->ada_common), &(tgt->ada_common)) != OK)	    return (NOTOK);	if (src->ada_object == NULLDN)		tgt->ada_object = NULLDN;	else if ((tgt->ada_object = dn_cpy (src->ada_object)) == NULLDN)		return (NOTOK);	if (src->ada_entry = NULLATTR)		tgt->ada_entry = NULLATTR;	else if ((tgt->ada_entry = as_cpy (src->ada_entry)) == NULLATTR)		return (NOTOK);	return (OK);}int	  removeentry_arg_dup (src, tgt)struct ds_removeentry_arg	* src;struct ds_removeentry_arg	* tgt;{	if (ca_dup (&(src->rma_common), &(tgt->rma_common)) != OK)	    return (NOTOK);	if (src->rma_object == NULLDN)		tgt->rma_object = NULLDN;	else if ((tgt->rma_object = dn_cpy (src->rma_object)) == NULLDN)		return (NOTOK);	return (OK);}int	  modifyentry_arg_dup (src, tgt)struct ds_modifyentry_arg	* src;struct ds_modifyentry_arg	* tgt;{struct entrymod	* ems_cpy();	if (ca_dup (&(src->mea_common), &(tgt->mea_common)) != OK)	    return (NOTOK);	if (src->mea_object == NULLDN)		tgt->mea_object = NULLDN;	else if ((tgt->mea_object = dn_cpy (src->mea_object)) == NULLDN)		return (NOTOK);	if (src->mea_changes == (struct entrymod *) NULL)		tgt->mea_changes = (struct entrymod *) NULL;	else if ((tgt->mea_changes = ems_cpy (src->mea_changes)) == (struct entrymod *) NULL)		return (NOTOK);	return (OK);}int	  modifyrdn_arg_dup (src, tgt)struct ds_modifyrdn_arg	* src;struct ds_modifyrdn_arg	* tgt;{	if (ca_dup (&(src->mra_common), &(tgt->mra_common)) != OK)	    return (NOTOK);	if (src->mra_object == NULLDN)		tgt->mra_object = NULLDN;	else if ((tgt->mra_object = dn_cpy (src->mra_object)) == NULLDN)		return (NOTOK);	if (src->mra_newrdn == NULLRDN)		tgt->mra_newrdn = NULLRDN;	else if ((tgt->mra_newrdn = rdn_cpy (src->mra_newrdn)) == NULLRDN)		return (NOTOK);	tgt->deleterdn = src->deleterdn;	return (OK);}int	  getedb_arg_dup (src, tgt)struct getedb_arg	* src;struct getedb_arg	* tgt;{	if (src->ga_entry == NULLDN)		tgt->ga_entry = NULLDN;	else if ((tgt->ga_entry = dn_cpy (src->ga_entry)) == NULLDN)		return (NOTOK);	tgt->ga_version = strdup (src->ga_version);	tgt->get_next = NULL_GETARG;	return (OK);}int	  ca_dup (src, tgt)struct common_args	* src;struct common_args	* tgt;{struct security_parms	* secp_cpy ();struct signature	* sig_cpy ();struct extension	* ext_cpy ();	tgt->ca_servicecontrol = src->ca_servicecontrol; /* struct copy */	if (src->ca_requestor = NULLDN)		tgt->ca_requestor = NULLDN;	else if ((tgt->ca_requestor = dn_cpy (src->ca_requestor)) == NULLDN)		return (NOTOK);	tgt->ca_progress = src->ca_progress; /* struct copy */	tgt->ca_aliased_rdns = src->ca_aliased_rdns;	if (src->ca_security = (struct security_parms *) NULL)		tgt->ca_security = (struct security_parms *) NULL;	else if ((tgt->ca_security = secp_cpy (src->ca_security)) == (struct security_parms *) NULL)		return (NOTOK);	if (src->ca_sig == (struct signature *) NULL)		tgt->ca_sig = (struct signature *) NULL;	else if ((tgt->ca_sig = sig_cpy (src->ca_sig)) == (struct signature *) NULL)		return (NOTOK);	if (src->ca_extensions == (struct extension *) NULL)		tgt->ca_extensions = (struct extension *) NULL;	else if ((tgt->ca_extensions = ext_cpy (src->ca_extensions)) == (struct extension *) NULL)		return (NOTOK);	return (OK);}struct security_parms	* secp_cpy (sp)struct security_parms	* sp;{struct certificate_list	* cpair_cpy();struct random_number	* random_cpy ();	struct security_parms	* ret;	if (sp == (struct security_parms *) NULL)		return ((struct security_parms *) NULL);	if ((ret = (struct security_parms *) smalloc (sizeof (struct security_parms))) == (struct security_parms *) NULL)		return ((struct security_parms *) NULL);	if (sp->sp_path == (struct certificate_list *) NULL)		ret->sp_path = (struct certificate_list *) NULL;	else if ((ret->sp_path = cpair_cpy (sp->sp_path)) == (struct certificate_list *) NULL)		return ((struct security_parms *) NULL);	if (sp->sp_name == NULLDN)		ret->sp_name = NULLDN;	else if ((ret->sp_name = dn_cpy (sp->sp_name)) == NULLDN)		return ((struct security_parms *) NULL);	ret->sp_time = strdup (sp->sp_time);	if (sp->sp_random == (struct random_number *) NULL)		ret->sp_random = (struct random_number *) NULL;	else if ((ret->sp_random = random_cpy (sp->sp_random)) == (struct random_number *) NULL)		return ((struct security_parms *) NULL);	ret->sp_target = sp->sp_target;	return (ret);}struct random_number	* random_cpy (rand)struct random_number	* rand;{	struct random_number	* ret;	if (rand == (struct random_number *) NULL)		return ((struct random_number *) NULL);	if ((ret = (struct random_number *) smalloc (sizeof (struct random_number))) == (struct random_number *) NULL)		return ((struct random_number *) NULL);	ret->n_bits = rand->n_bits;	ret->value = strdup (rand->value);	return (ret);}struct signature	* sig_cpy (sig)struct signature	* sig;{	struct signature	* ret;	if (sig == (struct signature *) NULL)		return ((struct signature *) NULL);	if ((ret = (struct signature *) smalloc (sizeof (struct signature))) == (struct signature *) NULL)		return ((struct signature *) NULL);	(void) alg_cpy (&ret->alg, &sig->alg);	if (sig->encoded == NULLPE)		ret->encoded = NULLPE;	else		ret->encoded = pe_cpy (sig->encoded);	ret->n_bits = sig->n_bits;	ret->encrypted = strdup (sig->encrypted);	return (ret);}struct extension	* ext_cpy (ext)struct extension	* ext;{	struct extension	* ret;	if (ext == (struct extension *) NULL)		return ((struct extension *) NULL);	if ((ret = (struct extension *) smalloc (sizeof (struct extension))) == (struct extension *) NULL)		return ((struct extension *) NULL);	ret->ext_id = ext->ext_id;	ret->ext_critical = ext->ext_critical;	if (ext->ext_item == NULLPE)		ret->ext_item = NULLPE;	else		ret->ext_item = pe_cpy (ext->ext_item);	if (ext->ext_next == (struct extension *) NULL)		ret->ext_next = (struct extension *) NULL;	else if ((ret->ext_next = ext_cpy (ext->ext_next)) == (struct extension *) NULL)		return ((struct extension *) NULL);	return (ret);}struct s_filter	* filter_cpy(flt)struct s_filter	* flt;{	struct s_filter	* ret;	if (flt == (struct s_filter *) NULL)		return ((struct s_filter *) NULL);	if ((ret = (struct s_filter *) smalloc (sizeof (struct s_filter))) == (struct s_filter *) NULL)		return ((struct s_filter *) NULL);	switch (ret->flt_type = flt->flt_type)	{	case FILTER_ITEM:		if (filter_item_dup (&(flt->flt_un.flt_un_item), &(ret->flt_un.flt_un_item)) != OK)			return ((struct s_filter *) NULL);		break;	case FILTER_AND:	case FILTER_OR:	case FILTER_NOT:		if (flt->flt_un.flt_un_filter == (struct s_filter *) NULL)			ret->flt_un.flt_un_filter = (struct s_filter *) NULL;		else if ((ret->flt_un.flt_un_filter = filter_cpy (flt->flt_un.flt_un_filter)) == (struct s_filter *) NULL)			return ((struct s_filter *) NULL);		break;	default:		DLOG (log_dsap, LLOG_DEBUG, ("filter_cpy(): unknown filter type %d", flt->flt_type));		return ((struct s_filter *) NULL);	}	if (flt->flt_next == (struct s_filter *) NULL)                ret->flt_next = (struct s_filter *) NULL;	else if ((ret->flt_next = filter_cpy (flt->flt_next)) == (struct s_filter *) NULL)		return ((struct s_filter *) NULL);	return (ret);}int	  filter_item_dup (src, tgt)struct filter_item	* src;struct filter_item	* tgt;{	switch (tgt->fi_type = src->fi_type)	{	case FILTERITEM_EQUALITY:	case FILTERITEM_GREATEROREQUAL:	case FILTERITEM_LESSOREQUAL:	case FILTERITEM_APPROX:		if (ava_dup (&(src->fi_un.fi_un_ava), &(tgt->fi_un.fi_un_ava)) != OK)			return (NOTOK);		break;	case FILTERITEM_PRESENT:		if (src->fi_un.fi_un_type == NULLAttrT)			tgt->fi_un.fi_un_type = NULLAttrT;		else if ((tgt->fi_un.fi_un_type = AttrT_cpy (src->fi_un.fi_un_type)) == NULLAttrT)			return (NOTOK);		break;	case FILTERITEM_SUBSTRINGS:		if (fi_sub_dup (&(src->fi_un.fi_un_substrings), &(tgt->fi_un.fi_un_substrings)) != OK)			return (NOTOK);		break;	default:		DLOG (log_dsap, LLOG_DEBUG, ("filter_item_dup(): unknown filter_item type %d", src->fi_type));		return (NOTOK);	}	tgt->fi_ifp = src->fi_ifp;	return (OK);}int	  fi_sub_dup (src, tgt)Filter_Substrings	* src;Filter_Substrings	* tgt;{	if (src->fi_sub_type == NULLAttrT)		tgt->fi_sub_type = NULLAttrT;	else if ((tgt->fi_sub_type = AttrT_cpy (src->fi_sub_type)) == NULLAttrT)		return (NOTOK);	if (src->fi_sub_initial == NULLAV)		tgt->fi_sub_initial = NULLAV;	else if ((tgt->fi_sub_initial = avs_cpy (src->fi_sub_initial)) == NULLAV)		return (NOTOK);	if (src->fi_sub_any == NULLAV)		tgt->fi_sub_any = NULLAV;	else if ((tgt->fi_sub_any = avs_cpy (src->fi_sub_any)) == NULLAV)		return (NOTOK);	if (src->fi_sub_final == NULLAV)		tgt->fi_sub_final = NULLAV;	else if ((tgt->fi_sub_final = avs_cpy (src->fi_sub_final)) == NULLAV)		return (NOTOK);	tgt->fi_sub_match = strdup (src->fi_sub_match);	return (OK);}struct entrymod	* ems_cpy(em)struct entrymod	* em;{	struct entrymod	* ret;	if (em == (struct entrymod *) NULL)		return ((struct entrymod *) NULL);	if ((ret = (struct entrymod *) smalloc (sizeof (struct entrymod))) == (struct entrymod *) NULL)		return ((struct entrymod *) NULL);	ret->em_type = em->em_type;	if (em->em_what == NULLATTR)		ret->em_what = NULLATTR;	else if ((ret->em_what = as_cpy (em->em_what)) == NULLATTR)		 return ((struct entrymod *) NULL);	if (em->em_next == (struct entrymod *) NULL)		ret->em_next = (struct entrymod *) NULL;	else if ((ret->em_next = ems_cpy (em->em_next)) == (struct entrymod *) NULL)		return ((struct entrymod *) NULL);	return (ret);}int	  eis_dup(src, tgt)struct entryinfoselection	* src;struct entryinfoselection	* tgt;{	tgt->eis_allattributes = src->eis_allattributes;        if (src->eis_select == NULLATTR)                tgt->eis_select = NULLATTR;        else if ((tgt->eis_select = as_cpy (src->eis_select)) == NULLATTR)                 return (NOTOK);	tgt->eis_infotypes = src->eis_infotypes;	return (OK);}int	  ava_dup(src, tgt)struct ava	* src;struct ava	* tgt;{	if (src->ava_type == NULLAttrT)		tgt->ava_type = NULLAttrT;	else if ((tgt->ava_type = AttrT_cpy (src->ava_type)) == NULLAttrT)		return (NOTOK);	if (src->ava_value == NULLAttrV)		tgt->ava_value = NULLAttrV;	else if ((tgt->ava_value = AttrV_cpy (src->ava_value)) == NULLAttrV)		return (NOTOK);	return (OK);}

⌨️ 快捷键说明

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