|
|
1.1 ! root 1: /* entry.c - */ ! 2: ! 3: #ifndef lint ! 4: static char *rcsid = "$Header: /f/osi/quipu/RCS/entry.c,v 7.0 89/11/23 22:17:30 mrose Rel $"; ! 5: #endif ! 6: ! 7: /* ! 8: * $Header: /f/osi/quipu/RCS/entry.c,v 7.0 89/11/23 22:17:30 mrose Rel $ ! 9: * ! 10: * ! 11: * $Log: entry.c,v $ ! 12: * Revision 7.0 89/11/23 22:17:30 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: #include "quipu/util.h" ! 29: #include "quipu/entry.h" ! 30: ! 31: oid_table_attr * tab_objectclass; ! 32: oid_table_attr * tab_alias; ! 33: AttributeType at_objectclass; ! 34: ! 35: directory_free (directory) ! 36: Entry directory; ! 37: { ! 38: Entry ptr; ! 39: Entry next; ! 40: ! 41: if (directory != NULLENTRY) ! 42: for ( ptr = directory; ptr != NULLENTRY; ptr = next ) { ! 43: next = ptr->e_sibling; ! 44: directory_free (ptr->e_child); ! 45: entry_free (ptr); ! 46: } ! 47: } ! 48: ! 49: entry_free (entryptr) ! 50: Entry entryptr; ! 51: { ! 52: rdn_free (entryptr->e_name); ! 53: as_free (entryptr->e_attributes); ! 54: ! 55: if (entryptr->e_edbversion != NULLCP ) ! 56: free (entryptr->e_edbversion); ! 57: ! 58: if (entryptr->e_dsainfo != NULLDSA) ! 59: free ((char *) entryptr->e_dsainfo); ! 60: ! 61: free ((char *) entryptr); ! 62: } ! 63: ! 64: ! 65: Entry entry_cpy (entryptr) ! 66: register Entry entryptr; ! 67: { ! 68: register Entry ptr; ! 69: ! 70: if (entryptr == NULLENTRY) ! 71: return (NULLENTRY); ! 72: ! 73: ptr = get_default_entry (entryptr->e_parent); ! 74: ptr->e_name = rdn_cpy (entryptr->e_name); ! 75: ptr->e_attributes = as_cpy (entryptr->e_attributes); ! 76: if (entryptr->e_edbversion != NULLCP) ! 77: ptr->e_edbversion = strdup (entryptr->e_edbversion); ! 78: else ! 79: ptr->e_edbversion = NULLCP; ! 80: ptr->e_sibling = entryptr->e_sibling; ! 81: ptr->e_child = entryptr->e_child; ! 82: ptr->e_leaf = entryptr->e_leaf; ! 83: ptr->e_complete = entryptr->e_complete; ! 84: ptr->e_data = entryptr->e_data; ! 85: ptr->e_lock = entryptr->e_lock; ! 86: ptr->e_allchildrenpresent = entryptr->e_allchildrenpresent; ! 87: ! 88: /* rest must be set by calling unravel_attributes */ ! 89: return (ptr); ! 90: } ! 91: ! 92: ! 93: Entry get_default_entry (parent) ! 94: Entry parent; ! 95: { ! 96: register Entry eptr; ! 97: ! 98: eptr = entry_alloc(); ! 99: eptr->e_leaf = TRUE; ! 100: eptr->e_complete = TRUE; ! 101: eptr->e_data = E_DATA_MASTER; ! 102: eptr->e_parent = parent; ! 103: return (eptr); ! 104: } ! 105: ! 106: ! 107: check_known_oids () ! 108: { ! 109: /* for efficiency yacc has knowledge of certain oid built in ! 110: check these are in current table */ ! 111: ! 112: at_objectclass = AttrT_new (OBJECTCLASS_OID); ! 113: if (at_objectclass == NULLAttrT) ! 114: fatal (-29,"objectClass attribute type missing - check oidtables"); ! 115: tab_objectclass = at_objectclass; ! 116: ! 117: if ( (tab_alias = name2attr (ALIAS_OID)) == NULLTABLE_ATTR) ! 118: fatal (-30,"alias attribute type missing - check oidtables"); ! 119: ! 120: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.