|
|
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: 3106 (0xc22)
Types: TextFile
Names: »ca.c«
└─⟦3d0c2be1b⟧ Bits:30001254 ISODE-5.0 Tape
└─⟦eba4602b1⟧ »./isode-5.0.tar.Z«
└─⟦d3ac74d73⟧
└─⟦this⟧ »isode-5.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 6.0 89/03/18 23:27:26 mrose Rel $";
#endif
/*
* $Header: /f/osi/dsap/common/RCS/ca.c,v 6.0 89/03/18 23:27:26 mrose Rel $
*
*
* $Log: ca.c,v $
* Revision 6.0 89/03/18 23:27:26 mrose
* Release 5.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"
extern char * mydsaname;
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 = str2dn(mydsaname);
ti_elem->ti_target = dn_cpy(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)
{
dn_decode(tip->ti_dsa);
if(dn_cmp(ti->ti_dsa, tip->ti_dsa) != 0)
continue;
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)
continue;
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);
}