|
|
1.1 root 1: /* ca.c - General Directory Name routines */
2:
3: #ifndef lint
4: static char *rcsid = "$Header: /f/osi/dsap/common/RCS/ca.c,v 7.1 89/12/19 16:19:13 mrose Exp $";
5: #endif
6:
7: /*
8: * $Header: /f/osi/dsap/common/RCS/ca.c,v 7.1 89/12/19 16:19:13 mrose Exp $
9: *
10: *
11: * $Log: ca.c,v $
12: * Revision 7.1 89/12/19 16:19:13 mrose
13: * sync
14: *
15: * Revision 7.0 89/11/23 21:41:55 mrose
16: * Release 6.0
17: *
18: */
19:
20: /*
21: * NOTICE
22: *
23: * Acquisition, use, and distribution of this module and related
24: * materials are subject to the restrictions of a license agreement.
25: * Consult the Preface in the User's Manual for the full terms of
26: * this agreement.
27: *
28: */
29:
30:
31: /* LINTLIBRARY */
32:
33:
34: #include "quipu/util.h"
35: #include "quipu/common.h"
36: #include "quipu/dsargument.h"
37:
38: DN mydsadn = NULLDN;
39:
40: struct common_args * get_ca_ref(dsarg)
41: struct ds_op_arg * dsarg;
42: {
43: struct common_args * ca;
44:
45: switch(dsarg->dca_dsarg.arg_type)
46: {
47: case OP_READ :
48: ca = &(dsarg->dca_dsarg.arg_rd.rda_common);
49: break;
50: case OP_COMPARE :
51: ca = &(dsarg->dca_dsarg.arg_cm.cma_common);
52: break;
53: case OP_ABANDON :
54: ca = NULL_COMMONARG;
55: break;
56: case OP_LIST :
57: ca = &(dsarg->dca_dsarg.arg_ls.lsa_common);
58: break;
59: case OP_SEARCH :
60: ca = &(dsarg->dca_dsarg.arg_sr.sra_common);
61: break;
62: case OP_ADDENTRY :
63: ca = &(dsarg->dca_dsarg.arg_ad.ada_common);
64: break;
65: case OP_REMOVEENTRY :
66: ca = &(dsarg->dca_dsarg.arg_rm.rma_common);
67: break;
68: case OP_MODIFYENTRY :
69: ca = &(dsarg->dca_dsarg.arg_me.mea_common);
70: break;
71: case OP_MODIFYRDN :
72: ca = &(dsarg->dca_dsarg.arg_mr.mra_common);
73: break;
74: case OP_GETEDB :
75: ca = NULL_COMMONARG;
76: break;
77: }
78: return(ca);
79: }
80:
81: cha_loopdetected(cha)
82: struct chain_arg * cha;
83: {
84: struct trace_info ti_elem_s;
85: struct trace_info * ti_elem = &(ti_elem_s);
86:
87: ti_elem->ti_dsa = mydsadn;
88: ti_elem->ti_target = cha->cha_target;
89: ti_elem->ti_progress.op_resolution_phase = cha->cha_progress.op_resolution_phase;
90: ti_elem->ti_progress.op_nextrdntoberesolved = cha->cha_progress.op_nextrdntoberesolved;
91:
92: return(ti_is_elem(ti_elem, cha->cha_trace));
93: }
94:
95: ti_is_elem(ti, ti_list)
96: struct trace_info * ti;
97: struct trace_info * ti_list;
98: {
99: struct trace_info * tip;
100:
101: for(tip = ti_list; tip!=NULLTRACEINFO; tip=tip->ti_next)
102: {
103: if(dn_cmp(ti->ti_dsa, tip->ti_dsa) != 0)
104: continue;
105:
106: if(dn_cmp(ti->ti_target, tip->ti_target) != 0)
107: continue;
108:
109: if(ti->ti_progress.op_resolution_phase == tip->ti_progress.op_resolution_phase)
110: return(1);
111:
112: if(ti->ti_progress.op_nextrdntoberesolved == tip->ti_progress.op_nextrdntoberesolved)
113: return(1);
114: }
115:
116: return(0);
117: }
118:
119: struct trace_info * ti_cpy(ti)
120: struct trace_info * ti;
121: {
122: struct trace_info * ret_ti;
123:
124: if(ti == NULLTRACEINFO)
125: return(NULLTRACEINFO);
126:
127: ret_ti = (struct trace_info *) malloc(sizeof(struct trace_info));
128:
129: ret_ti->ti_target = dn_cpy(ti->ti_target);
130: ret_ti->ti_dsa = dn_cpy(ti->ti_dsa);
131: ret_ti->ti_progress = ti->ti_progress;
132: ret_ti->ti_next = ti_cpy(ti->ti_next);
133:
134: return(ret_ti);
135: }
136:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.