|
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 r
Length: 1687 (0x697) Types: TextFile Names: »rdn_str.c«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0 └─⟦35176feda⟧ »EurOpenD22/isode/isode-6.tar.Z« └─⟦de7628f85⟧ └─⟦this⟧ »isode-6.0/dsap/common/rdn_str.c«
#include "quipu/util.h" #include "quipu/name.h" #include "quipu/malloc.h" RDN str2rdn_aux (str) char * str; { oid_table_attr *at, *AttrT_new_aux(); char * ptr; char * save, val; char * TidyString(); RDN rdn; unsigned last_heap; /* look for "type = value" */ if (str == NULLCP) { parse_error ("NULL rdn component",NULLCP); return (NULLRDN); } if ((ptr=index(str,'=')) == 0) { parse_error ("Equals missing in RDN '%s'",str); return (NULLRDN); } save = ptr++; save--; if (! isspace (*save)) save++; val = *save; *save = 0; if ((at = AttrT_new_aux (TidyString(str))) == NULLTABLE_ATTR) { parse_error ("Unknown attribute type in RDN '%s'",str); *save = val; return (NULLRDN); } rdn = rdn_comp_alloc(); rdn->rdn_next = NULLRDN; rdn->rdn_at.at_oid = NULLOID; rdn->rdn_at.at_table = at; if ((last_heap = mem_heap) == 1) mem_heap = 2 + attr_index; if (str_at2AttrV_aux (ptr,&rdn->rdn_at,&rdn->rdn_av) == NOTOK) { *save = val; mem_heap = last_heap; free ((char *) rdn); return (NULLRDN); } mem_heap = last_heap; *save = val; return (rdn); } RDN str2rdn (str) char * str; { register char *ptr; register char *save,val; RDN rdn = NULLRDN, newrdn; /* look for "rdn % rdn % rdn" */ if (str == NULLCP) return (NULLRDN); while ( (ptr = index (str,'%')) != 0) { save = ptr++; save--; if (! isspace (*save)) save++; val = *save; *save = 0; if ((newrdn = str2rdn_aux (str)) == NULLRDN) { rdn_free (rdn); return (NULLRDN); } rdn = rdn_merge (rdn,newrdn); *save = val; str = ptr; } if ((newrdn = str2rdn_aux (str)) == NULLRDN) { rdn_free (rdn); return (NULLRDN); } return (rdn_merge (rdn,newrdn)); }