|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T c
Length: 3155 (0xc53)
Types: TextFile
Names: »ca.c«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0
└─⟦35176feda⟧ »EurOpenD22/isode/isode-6.tar.Z«
└─⟦de7628f85⟧
└─⟦this⟧ »isode-6.0/dsap/common/ca.c«
/* ca.c - General Directory Name routines */
#ifndef lint
static char *rcsid = "$Header: /f/osi/dsap/common/RCS/ca.c,v 7.1 89/12/19 16:19:13 mrose Exp $";
#endif
/*
* $Header: /f/osi/dsap/common/RCS/ca.c,v 7.1 89/12/19 16:19:13 mrose Exp $
*
*
* $Log: ca.c,v $
* Revision 7.1 89/12/19 16:19:13 mrose
* sync
*
* Revision 7.0 89/11/23 21:41:55 mrose
* Release 6.0
*
*/
/*
* NOTICE
*
* Acquisition, use, and distribution of this module and related
* materials are subject to the restrictions of a license agreement.
* Consult the Preface in the User's Manual for the full terms of
* this agreement.
*
*/
/* LINTLIBRARY */
#include "quipu/util.h"
#include "quipu/common.h"
#include "quipu/dsargument.h"
DN mydsadn = NULLDN;
struct common_args * get_ca_ref(dsarg)
struct ds_op_arg * dsarg;
{
struct common_args * ca;
switch(dsarg->dca_dsarg.arg_type)
{
case OP_READ :
ca = &(dsarg->dca_dsarg.arg_rd.rda_common);
break;
case OP_COMPARE :
ca = &(dsarg->dca_dsarg.arg_cm.cma_common);
break;
case OP_ABANDON :
ca = NULL_COMMONARG;
break;
case OP_LIST :
ca = &(dsarg->dca_dsarg.arg_ls.lsa_common);
break;
case OP_SEARCH :
ca = &(dsarg->dca_dsarg.arg_sr.sra_common);
break;
case OP_ADDENTRY :
ca = &(dsarg->dca_dsarg.arg_ad.ada_common);
break;
case OP_REMOVEENTRY :
ca = &(dsarg->dca_dsarg.arg_rm.rma_common);
break;
case OP_MODIFYENTRY :
ca = &(dsarg->dca_dsarg.arg_me.mea_common);
break;
case OP_MODIFYRDN :
ca = &(dsarg->dca_dsarg.arg_mr.mra_common);
break;
case OP_GETEDB :
ca = NULL_COMMONARG;
break;
}
return(ca);
}
cha_loopdetected(cha)
struct chain_arg * cha;
{
struct trace_info ti_elem_s;
struct trace_info * ti_elem = &(ti_elem_s);
ti_elem->ti_dsa = mydsadn;
ti_elem->ti_target = cha->cha_target;
ti_elem->ti_progress.op_resolution_phase = cha->cha_progress.op_resolution_phase;
ti_elem->ti_progress.op_nextrdntoberesolved = cha->cha_progress.op_nextrdntoberesolved;
return(ti_is_elem(ti_elem, cha->cha_trace));
}
ti_is_elem(ti, ti_list)
struct trace_info * ti;
struct trace_info * ti_list;
{
struct trace_info * tip;
for(tip = ti_list; tip!=NULLTRACEINFO; tip=tip->ti_next)
{
(void) dn_decode(tip->ti_dsa);
if(dn_cmp(ti->ti_dsa, tip->ti_dsa) != 0)
continue;
(void) dn_decode(tip->ti_target);
if(dn_cmp(ti->ti_target, tip->ti_target) != 0)
continue;
if(ti->ti_progress.op_resolution_phase == tip->ti_progress.op_resolution_phase)
return(1);
if(ti->ti_progress.op_nextrdntoberesolved == tip->ti_progress.op_nextrdntoberesolved)
return(1);
}
return(0);
}
struct trace_info * ti_cpy(ti)
struct trace_info * ti;
{
struct trace_info * ret_ti;
if(ti == NULLTRACEINFO)
return(NULLTRACEINFO);
ret_ti = (struct trace_info *) malloc(sizeof(struct trace_info));
ret_ti->ti_target = dn_cpy(ti->ti_target);
ret_ti->ti_dsa = dn_cpy(ti->ti_dsa);
ret_ti->ti_progress = ti->ti_progress;
ret_ti->ti_next = ti_cpy(ti->ti_next);
return(ret_ti);
}