|
|
1.1 root 1: /* aetseq.c - application entity titles -- sequential lookup */
2:
3: #ifndef lint
4: static char *rcsid = "$Header: /f/osi/acsap/RCS/aetseq.c,v 7.0 89/11/23 21:22:07 mrose Rel $";
5: #endif
6:
7: /*
8: * $Header: /f/osi/acsap/RCS/aetseq.c,v 7.0 89/11/23 21:22:07 mrose Rel $
9: *
10: *
11: * $Log: aetseq.c,v $
12: * Revision 7.0 89/11/23 21:22:07 mrose
13: * Release 6.0
14: *
15: */
16:
17: /*
18: * NOTICE
19: *
20: * Acquisition, use, and distribution of this module and related
21: * materials are subject to the restrictions of a license agreement.
22: * Consult the Preface in the User's Manual for the full terms of
23: * this agreement.
24: *
25: */
26:
27:
28: /* LINTLIBRARY */
29:
30: #include <stdio.h>
31: #include "psap.h"
32: #include "isoaddrs.h"
33:
34: /* DATA */
35:
36: static char objent[BUFSIZ];
37: static struct isoentity ies;
38:
39: /* */
40:
41: int str2aet_seq (designator, qualifier, iep)
42: char *designator,
43: *qualifier;
44: struct isoentity *iep;
45: {
46: int hitdes,
47: hitqual;
48: char descriptor[BUFSIZ],
49: desdflt[BUFSIZ],
50: qualdflt[BUFSIZ];
51: register struct isoentity *ie;
52: struct isoentity ids,
53: iqs;
54:
55: (void) sprintf (objent, "%s-%s", designator, qualifier);
56: (void) sprintf (desdflt, "%s-%s", designator, "default");
57: (void) sprintf (qualdflt, "%s-%s", "default", qualifier);
58: hitdes = hitqual = 0;
59: bzero ((char *) &ids, sizeof ids);
60: bzero ((char *) &iqs, sizeof iqs);
61:
62: ie = NULL;
63:
64: if (!setisoentity (0))
65: return NOTOK;
66: while (_startisoentity (descriptor) == OK) {
67: if (strcmp (descriptor, objent) == 0) {
68: if (_stopisoentity (descriptor, &ies) != OK)
69: continue;
70:
71: ie = &ies;
72: break;
73: }
74:
75: if (!hitdes && strcmp (descriptor, desdflt) == 0) {
76: if (_stopisoentity (descriptor, &ies) != OK)
77: continue;
78: ies.ie_descriptor = objent;
79:
80: hitdes++;
81: ids = ies; /* struct copy */
82: continue;
83: }
84:
85: if (!hitqual && strcmp (descriptor, qualdflt) == 0) {
86: if (_stopisoentity (descriptor, &ies) != OK)
87: continue;
88: ies.ie_descriptor = objent;
89:
90: hitqual++;
91: iqs = ies; /* struct copy */
92: continue;
93: }
94: }
95: (void) endisoentity ();
96:
97: if (!ie && hitqual) {
98: ie = &ies;
99: *ie = iqs; /* struct copy */
100:
101: if (hitdes) {
102: bcopy ((char *) ids.ie_addr.pa_addr.sa_addr.ta_addrs,
103: (char *) ie -> ie_addr.pa_addr.sa_addr.ta_addrs,
104: sizeof ie -> ie_addr.pa_addr.sa_addr.ta_addrs);
105: ie -> ie_addr.pa_addr.sa_addr.ta_naddr =
106: ids.ie_addr.pa_addr.sa_addr.ta_naddr;
107: }
108: }
109:
110: if (ie) {
111: *iep = *ie; /* struct copy */
112: return OK;
113: }
114:
115: return NOTOK;
116: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.