|
|
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;
}