|
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 o
Length: 2186 (0x88a) Types: TextFile Names: »or2addr.c«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0 └─⟦dc59850a2⟧ »EurOpenD22/pp5.0/pp-5.tar.Z« └─⟦e5a54fb17⟧ └─⟦this⟧ »pp-5.0/Chans/dirlist/or2addr.c«
/* or2addr.c: */ # ifndef lint static char Rcsid[] = "@(#)$Header: /cs/research/pp/hubris/pp-beta/Chans/dirlist/RCS/or2addr.c,v 5.0 90/09/20 15:45:59 pp Exp Locker: pp $"; # endif /* * $Header: /cs/research/pp/hubris/pp-beta/Chans/dirlist/RCS/or2addr.c,v 5.0 90/09/20 15:45:59 pp Exp Locker: pp $ * * $Log: or2addr.c,v $ * Revision 5.0 90/09/20 15:45:59 pp * rcsforce : 5.0 public release * */ #include "dlist.h" #include "retcode.h" #include "or.h" #include "adr.h" #include <isode/quipu/attrvalue.h> extern char * dn2str (); static ADDR *OR_Ptr2ADDR (or,parse) OR_ptr or; char parse; { ADDR * ptr; char buf[BUFSIZ]; RP_Buf rp; or_or2std(or,buf,0); ptr = adr_new (buf,AD_X400_TYPE,0); if (parse && (rp_isbad(ad_parse(ptr, &rp, CH_UK_PREF)))) return NULLADDR; return ptr; } ADDR *dn2ADDR (dn) DN dn; { Attr_Sequence as, dn2addr(); OR_ptr newor, as2or (); ADDR * ptr; char buf [BUFSIZ]; if ((as = dn2addr (dn)) == NULLATTR) return NULLADDR; newor = as2or (as); if (newor) { if ((ptr = OR_Ptr2ADDR (newor,TRUE)) == NULLADDR) return NULLADDR; if (dn) ptr->ad_dn = dn2str (dn); if (as->attr_value->avseq_next != NULLAV) { newor = (OR_ptr) as->attr_value->avseq_next->avseq_av.av_struct; or_or2std(newor,buf,0); ptr->ad_orig_req_alt = strdup (buf); } return ptr; } return NULLADDR; } ADDR *ORName2ADDR (or,dnlookup) ORName *or; char dnlookup; /* allow DN look up if addr missing */ { ADDR * ptr; if (or->on_or) { ptr = OR_Ptr2ADDR (or->on_or,FALSE); if (or->on_dn) ptr->ad_dn = dn2str (or->on_dn); } else if (or->on_dn) { if (dnlookup) if ((ptr = dn2ADDR(or->on_dn)) != NULLADDR) return ptr; ptr = (ADDR *) smalloc (sizeof(ADDR)); adr_init (ptr); ptr->ad_type = AD_ANY_TYPE; ptr->ad_dn = dn2str (or->on_dn); } return ptr; } orAddr_check (or,buf) OR_ptr or; char * buf; { ADDR * ad; RP_Buf rp; extern OR_ptr or_cpy (); extern char * or_error; char adr[BUFSIZ]; or_or2std(or,adr,0); ad = adr_new (adr,AD_X400_TYPE,0); if (rp_isbad(ad_parse(ad, &rp, CH_UK_PREF))) { (void) strcpy (buf,ad->ad_parse_message); return NOTOK; } adr_free (ad); return OK; }