DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T o

⟦75c4bdaad⟧ TextFile

    Length: 2186 (0x88a)
    Types: TextFile
    Names: »or2addr.c«

Derivation

└─⟦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« 

TextFile

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