[gnu.gcc.bug] gcc 1.31 cc1 gets fatal signal on sun 386i

cwm@TWG.COM (Chris Moore) (12/06/88)

the following command:
	gcc -g -w -I../../h -DDEBUG -c asn_ext.c

causes:
	gcc: Program cc1 got fatal signal 6.

configuration:  md -> i386.md
		tm.h -> tm-sun386i.h

machine:	Sun 386i/250
		SunOS 4.0

with the following input: (generated by -E)


# 1 "asn_ext.c"
 


static char *rcsid = "$Header: /boomer/osi/dsap/pepy/RCS/asn_ext.c,v 5.4 88/11/07 15:58:34 cwm Exp Locker: cwm $";


 
















 










# 1 "../../h/quipu/util.h"
 

 










 













 


# 1 "/usr/include/stdio.h"
 




extern	struct	_iobuf {
	int	_cnt;
	unsigned char *_ptr;
	unsigned char *_base;
	int	_bufsiz;
	short	_flag;
	char	_file;		 
} _iob[];







































extern struct _iobuf 	*fopen();
extern struct _iobuf 	*fdopen();
extern struct _iobuf 	*freopen();
extern struct _iobuf 	*popen();
extern struct _iobuf 	*tmpfile();
extern long	ftell();
extern char	*fgets();
extern char	*gets();



extern char	*ctermid();
extern char	*cuserid();
extern char	*tempnam();
extern char	*tmpnam();






# 31 "../../h/quipu/util.h"

# 1 "/usr/include/ctype.h"
 










extern	char	_ctype_[];
















# 32 "../../h/quipu/util.h"

# 1 "/usr/include/setjmp.h"
 





























 





extern int sigsetjmp(), setjmp(), _setjmp();
extern void siglongjmp(), longjmp(), _longjmp();

 





 

# 57 "/usr/include/setjmp.h"


typedef int jmp_buf[8 ];

 


typedef	int sigjmp_buf[8 +1];


# 33 "../../h/quipu/util.h"

# 1 "/usr/include/sys/types.h"
 

 








 



# 1 "/usr/include/sys/sysmacros.h"
 

 





 


 


 


 






# 16 "/usr/include/sys/types.h"


typedef	unsigned char	u_char;
typedef	unsigned short	u_short;
typedef	unsigned int	u_int;
typedef	unsigned long	u_long;
typedef	unsigned short	ushort;		 
typedef	unsigned int	uint;		 




















typedef struct	_physadr { short r[1]; } *physadr;
typedef struct	label_t {
	int	val[8];
} label_t;

typedef	struct	_quad { long val[2]; } quad;
typedef	long	daddr_t;
typedef	char *	caddr_t;
typedef	u_long	ino_t;
typedef	long	swblk_t;
typedef	int	size_t;
typedef	long	time_t;
typedef	short	dev_t;
typedef	long	off_t;
typedef	u_short	uid_t;
typedef	u_short	gid_t;
typedef	long	key_t;


 









typedef	long	fd_mask;









typedef	struct fd_set {
	fd_mask	fds_bits[  ((((u_int)(256 ))+(((u_int)( (sizeof(fd_mask) * 8		)	))-1))/((u_int)( (sizeof(fd_mask) * 8		)	))) ];
} fd_set;

typedef	char *	addr_t;






# 105 "/usr/include/sys/types.h"



# 34 "../../h/quipu/util.h"

# 1 "/usr/include/errno.h"
 

 



# 1 "/usr/include/sys/errno.h"
 

 




































 



 



 

	 













	 













	 



 




 




 



 






 


 



 










# 7 "/usr/include/errno.h"

extern int errno;
# 35 "../../h/quipu/util.h"

# 1 "../../h/logger.h"
 

 





















 









 




 

typedef struct  ll_struct {
    char   *ll_file;		 

    char   *ll_hdr;		 
    char   *ll_dhdr;		 

    int	    ll_events;		 











    int	    ll_syslog;		 
				 

    int     ll_msize;		 

    int     ll_stat;		 









    int     ll_fd;		 
} LLog;

 



























int	ll_open ();
int	ll_log (), _ll_log ();
int	ll_close ();

void	ll_hdinit ();
void	ll_dbinit ();

int	ll_printf ();
int	ll_sync ();

char   *ll_preset ();

int	ll_check ();

# 36 "../../h/quipu/util.h"


# 1 "../../h/quipu/config.h"
 

 










 











 





 

 
 

 






# 38 "../../h/quipu/util.h"

 

extern char *strcat ();
extern char *strcpy ();
extern char *strncpy ();
extern char *malloc ();
extern char *smalloc ();
extern char *strdup ();
extern char *multcat ();
extern char *multcpy ();
extern char *index ();
extern char *rindex ();
extern char *gets ();
extern long lseek ();

 


























 















 



extern  jmp_buf _timeobuf;



 












 


char * qmalloc ();









# 35 "asn_ext.c"

# 1 "../../h/quipu/quipu_pepy.h"
 

 










 












# 1 "../../h/quipu/common.h"
 

 










 












# 1 "../../h/quipu/attrvalue.h"
 

 










 











# 1 "../../h/quipu/name.h"
 

 










 












# 1 "../../h/quipu/attr.h"
 

 










 












# 1 "../../h/quipu/oid.h"
 

 










 












# 1 "../../h/psap.h"
 

 















 














# 1 "../../h/manifest.h"
 

 
























 














# 1 "../../h/config.h"
 

 















 
















 







 








# 43 "../../h/manifest.h"




 













# 69 "../../h/manifest.h"



# 104 "../../h/manifest.h"



# 140 "../../h/manifest.h"


 















# 173 "../../h/manifest.h"
















typedef int	*IP;



typedef	int	(*IFP) ();



typedef void   (*VFP) ();












struct udvec {			 
    caddr_t uv_base;
    int	    uv_len;

    int	    uv_inline;
};


struct qbuf {
    struct qbuf *qb_forw;	 
    struct qbuf *qb_back;	 

    int	    qb_len;		 
    char   *qb_data;		 
    char    qb_base[1];		 
};


# 238 "../../h/manifest.h"








# 263 "../../h/manifest.h"



# 34 "../../h/psap.h"



# 1 "../../h/general.h"
 

 



























 


















 


























# 85 "../../h/general.h"






































 






char   *index ();
char   *mktemp ();
char   *rindex ();

char   *sprintf ();



char   *strcat ();
int     strcmp ();
char   *strcpy ();
int	strlen ();
char   *strncat ();
int     strncmp ();
char   *strncpy ();

char   *getenv ();
char   *calloc (), *malloc (), *realloc ();









 

int	explode (), implode ();

 

char   *sprintb ();

 







int	str2vecX ();

 



int	str2elem ();

 

int	str2sel ();
char   *sel2str ();

 

char   *getpassword ();

 

int	baduser ();

 

char   *sys_errname ();







void	asprintf (), _asprintf ();

void	isodetailor ();		 



unsigned short	ntohs ();


unsigned short	htons ();


unsigned long	ntohl ();


unsigned long	htonl ();



# 37 "../../h/psap.h"






# 1 "/usr/include/sys/time.h"
 

 








 



struct timeval {
	long	tv_sec;		 
	long	tv_usec;	 
};

struct timezone {
	int	tz_minuteswest;	 
	int	tz_dsttime;	 
};












 










 







struct	itimerval {
	struct	timeval it_interval;	 
	struct	timeval it_value;	 
};


# 1 "/usr/include/time.h"
 

 


struct tm {
	int	tm_sec;
	int	tm_min;
	int	tm_hour;
	int	tm_mday;
	int	tm_mon;
	int	tm_year;
	int	tm_wday;
	int	tm_yday;
	int	tm_isdst;
	char	*tm_zone;
	long	tm_gmtoff;
};

extern	struct tm *gmtime(), *localtime();
extern	char *asctime(), *ctime();
# 62 "/usr/include/sys/time.h"




# 43 "../../h/psap.h"




 

typedef struct OIDentifier {
    int	    oid_nelem;		 

    unsigned int *oid_elements;	 
}			OIDentifier, *OID;



OID	ode2oid ();
int	oid_cmp ();
OID	oid_cpy ();
int	oid_free ();
char   *oid2ode ();
char   *sprintoid ();
OID	str2oid ();

 

typedef	u_char	   PElementClass;

typedef	u_char	   PElementForm;

typedef u_short    PElementID;	 




typedef	int	   PElementLen;


typedef u_char	  byte, *PElementData;















 

typedef struct PElement {
    int	    pe_errno;		 













				 
    int	    pe_context;		 














    PElementClass	pe_class;





    PElementForm	pe_form;




    PElementID pe_id;		 
				 


				 














				 











    PElementLen	pe_len;





    PElementLen	pe_ilen;

    union {
	PElementData	 un_pe_prim;	 
	struct PElement *un_pe_cons;	 
    }                       pe_un1;



    union {
	int	    un_pe_cardinal;	 
	int	    un_pe_nbits;	 
    }			    pe_un2;



    int	    pe_inline;		 
    char   *pe_realbase;	 

    int	    pe_offset;		 

    struct PElement *pe_next;

    int	    pe_refcnt;		 
}			PElement, *PE;






PE	pe_alloc ();
int	pe_free ();
int	pe_cmp ();
PE	pe_cpy ();
int	pe_pullup ();
PE	pe_expunge ();
int	pe_extract ();

PE	str2pe ();
PE	qb2pe ();

extern int    pe_maxclass;
extern char  *pe_classlist[];

extern int    pe_maxuniv;
extern char  *pe_univlist[];

extern int    pe_maxappl;
extern char **pe_applist;

extern int    pe_maxpriv;
extern char **pe_privlist;

 

typedef struct UTCtime {
    int	    ut_year;
    int	    ut_mon;
    int	    ut_mday;
    int	    ut_hour;
    int	    ut_min;
    int	    ut_sec;

    int	    ut_usec;

    int	    ut_zone;

    int	    ut_flags;




}			UTCtime, *UTC;



void	tm2ut ();
long	gtime ();
struct tm *ut2tm ();

 

extern char *psapversion;


int	prim2flag ();
PE	flag2prim ();


int	prim2num ();
PE	num2prim ();













char   *prim2str ();
PE	str2prim ();
struct qbuf *prim2qb ();
PE	qb2prim ();		 





















PE	prim2bit ();
PE	bit2prim ();

int	bit_on (), bit_off ();
int	bit_test ();

OID	prim2oid ();
PE	obj2prim ();


UTC	prim2time ();


PE	time2prim ();


char   *time2str ();


UTC	str2utct (), str2gent ();

PE	prim2set ();

int	set_add (), set_addon (), set_del ();
PE	set_find ();





int	seq_add (), seq_addon (), seq_del ();
PE	seq_find ();


char   *pe_error ();

 

typedef struct {
    int	    ps_errno;		 













    union {
	caddr_t un_ps_addr;
	struct {
	    char   *st_ps_base;
	    int	    st_ps_cnt;
	    char   *st_ps_ptr;
	    int	    st_ps_bufsiz;
	}			un_ps_st;
	struct {
	    struct udvec *uv_ps_head;
	    struct udvec *uv_ps_cur;
	    struct udvec *uv_ps_end;
	    int	    uv_ps_elems;
	    int	    uv_ps_slop;
	    int	    uv_ps_cc;
	}			un_ps_uv;
    }                       ps_un;












    caddr_t ps_extra;		 

    int	    ps_inline;		 

    int	    ps_scratch;		 

    int	    ps_byteno;		 

    IFP	    ps_primeP;
    IFP	    ps_readP;
    IFP	    ps_writeP;
    IFP	    ps_flushP;
    IFP	    ps_closeP;
}			PStream, *PS;





PS	ps_alloc ();
void	ps_free ();

int	ps_io ();





int	ps_flush ();

int	std_open ();


int	str_open ();
int	str_setup ();

int	dg_open ();
int	dg_setup ();

int	fdx_open ();
int	fdx_setup ();

int	qbuf_open ();


int	uvec_open ();
int	uvec_setup ();



PE	ps2pe_aux ();

int	pe2ps_aux ();


PE	pl2pe ();
int	pe2pl ();


extern int    ps_len_strategy;




int	ps_get_abs ();


char   *ps_error ();

 

struct isobject {
    char   *io_descriptor;

    OIDentifier io_identity;
};

int	setisobject (),	endisobject ();

struct isobject *getisobject ();

struct isobject *getisobjectbyname ();
struct isobject *getisobjectbyoid ();

 

PE	qbuf2pe ();
char   *qb2str ();
struct qbuf *str2qb ();
int	qb_free ();

int	pe2ssdu ();
PE	ssdu2pe ();

void	pe2text (), text2pe ();

int	pe2uvec ();

char   *int2strb ();
int	strb2int ();

PE	strb2bitstr ();
char   *bitstr2strb ();

 

extern char PY_pepy[];

void	PY_advise ();
int	PY_pp ();

int	testdebug ();

int	vpush (), vpop ();
int	vname (), vtag ();
int	vprint ();
int	vstring (), vunknown ();

char   *bit2str ();

int	vpushfp (), vpopfp ();

int	vpushstr (), vpopstr ();









int	_vpdu ();

# 27 "../../h/quipu/oid.h"














typedef struct {
	char            ot_name [40 ];
	char            ot_stroid [40 ];
	OID             ot_oid;
} oid_table;


typedef struct {
	oid_table       oa_ot;
	int             oa_syntax;
} oid_table_attr;



typedef struct seq_tab {
	oid_table_attr * ts_oa;
	struct seq_tab * ts_next;
} * table_seq;

table_seq table_seq_new();

typedef struct {
	oid_table        oc_ot;
	struct oid_seq * oc_hierachy;
	table_seq        oc_must;
	table_seq        oc_may;
} objectclass;


oid_table_attr * oid2attr();
oid_table_attr * name2attr();
char * attr2name();

objectclass * oid2oc();
objectclass * name2oc();
char * oc2name();

char * oid2name();       
OID    name2oid();

char * SkipSpace ();
void   StripSpace ();


# 27 "../../h/quipu/attr.h"







	 

typedef struct {
	OID              at_oid;
	oid_table_attr * at_table;
} attrType, * AttributeType;




AttributeType AttrT_cpy();
AttributeType AttrT_new();

struct file_syntax {
	int	fs_real_syntax;
	char *  fs_name;
	char	fs_default;
}; 

typedef struct {
	PE      av_pe;                   
					 
					 
	int     av_syntax;               
					 


















	union {
		char *                  av_str;
		struct acl *            av_acl;
		PE                      av_asn;
		char *                  av_num;
		struct PSAPaddr *       av_psap;
		struct dn_seq *		av_dnlist;
		struct dncomp *	        av_dn;
		struct tree_struct *    av_tree;
		struct edb_info *       av_update;
		int                     av_boolean;
		int                     av_integer;
		long                    av_time;
		OID                     av_oid;
		objectclass *           av_objectclass;
		struct file_syntax	av_file;
		} av_un;
} attrVal, * AttributeValue;





AttributeValue AttrV_cpy();
AttributeValue str_at2AttrV();
AttributeValue str2AttrV();









# 27 "../../h/quipu/name.h"


typedef struct rdncomp {         
				 
				 
    AttributeType       rdn_at;
    AttributeValue      rdn_av;
    struct rdncomp      *rdn_next;
} rdncomp, *RDN;




RDN  rdn_comp_new ();
RDN  rdn_comp_cpy ();
RDN  str2rdn();
RDN  rdn_cpy ();
RDN  rdn_merge ();

typedef struct dncomp {          
				 
				 
    RDN                 dn_rdn;
    struct dncomp       *dn_parent;
} dncomp, *DN;








DN  dn_comp_new ();
DN  dn_comp_cpy ();
DN  dn_cpy ();
DN  str2dn ();


# 26 "../../h/quipu/attrvalue.h"





typedef char Soundex;
				 
				 
				 
				 
				 
char ** AttrV_soundex_key ();

typedef struct avseqcomp {       
				 
    AttributeValue      avseq_av;
    Soundex             avseq_soundex [6 ][4 ];
				 
    struct avseqcomp    *avseq_next;
} avseqcomp, *AV_Sequence;






AV_Sequence  avs_comp_new ();
AV_Sequence  avs_comp_cpy ();
AV_Sequence  avs_cpy ();
AV_Sequence  avs_merge ();
AV_Sequence  str2avs ();

typedef struct attrcomp {        
				 
				 
    AttributeType       attr_type;
    AV_Sequence         attr_value;
    struct attrcomp     *attr_link;
				 
				 
				 
    struct acl_info     *attr_acl;
} attrcomp, *Attr_Sequence;






Attr_Sequence  as_comp_new ();
Attr_Sequence  as_comp_cpy ();
Attr_Sequence  as_cpy ();
Attr_Sequence  as_cpy_type ();
Attr_Sequence  as_comp_cpy_type ();
Attr_Sequence  as_find_type ();
Attr_Sequence  as_merge ();
Attr_Sequence  str2as();


				 
				 
				 
				 
struct acl_info {
    int acl_categories;






    int acl_selector_type;




    struct dn_seq       *acl_name;     
    struct acl_info     *acl_next;
};






struct acl_info *acl_info_new ();
struct acl_info *acl_info_cpy();
struct acl_info *acl_default();


# 27 "../../h/quipu/common.h"

# 1 "../../h/quipu/dsp.h"
 

 










 











# 1 "../../h/isoaddrs.h"
 

 





















 



















 


typedef struct AEInfo {		 
    PE	    aei_ap_title;
    PE	    aei_ae_qualifier;

    int	    aei_ap_id;
    int	    aei_ae_id;

    int	    aei_flags;



}	AEInfo, *AEI;










AEI	str2aei ();

char   *sprintaei ();


 

struct NSAPaddr {
    long     na_type;	 






    union {
	struct na_nsap {		 
	    char    na_nsap_address[64 ];
	    char    na_nsap_addrlen;
	}               un_na_nsap;

	struct na_tcp {			 
	    char    na_tcp_domain[64 ]; 
	    u_short na_tcp_port;	 
	    u_short na_tcp_tset;	 


	}               un_na_tcp;

	struct na_x25 {			 


	    char    na_x25_dte[36  + 1];  
	    char    na_x25_dtelen;	 

 





	    char    na_x25_pid[4 ];	 
	    char    na_x25_pidlen;	 


	    char    na_x25_cudf[16 ]; 
	    char    na_x25_cudflen;	 
 



	    char    na_x25_fac[6 ];	 
	    char    na_x25_faclen;		 
	}               un_na_x25;
    }               na_un;
















};



struct TSAPaddr {

    struct NSAPaddr ta_addrs[3 ];	 
    int     ta_naddr;



    int	    ta_selectlen;

    union {				 
	char    ta_un_selector[64			];

	u_short ta_un_port;
    }               un_ta;


};



struct SSAPaddr {
    struct TSAPaddr sa_addr;		 


    int	    sa_selectlen;

    union {				 
	char    sa_un_selector[64			];

	u_short sa_un_port;
    }               un_sa;


};



struct PSAPaddr {
    struct SSAPaddr pa_addr;		 


    int	    pa_selectlen;

    union {				 
	char    pa_un_selector[64			];

	u_short pa_un_port;
    }               un_pa;


};


struct PSAPaddr *aei2addr ();	 

 


struct ns_query {
    int	    ns_id;

    char   *ns_name;
    char   *ns_attribute;
};

struct ns_response {
    int	    ns_id;

    PE	    ns_name;
    PE	    ns_value;
};

char   *alias2name ();
PE	name2value ();



struct isoentity {		 
    OIDentifier ie_identifier;
    char    *ie_descriptor;

    struct PSAPaddr ie_addr;
};

int	setisoentity (), endisoentity ();

struct isoentity *getisoentity ();

AEI	oid2aei ();



				 
struct PSAPaddr *is2paddr ();	 
struct SSAPaddr *is2saddr ();	 
struct TSAPaddr *is2taddr ();	 


struct PSAPaddr *asn2paddr ();	 
struct TSAPaddr *asn2taddr ();	 

char   *paddr2asn ();		 
char   *taddr2asn ();		 

 

struct nsap_entry {
    char   *ns_service;

    IFP	    ns_parse;
};

extern struct nsap_entry _nsap_entries[];


struct PSAPaddr *str2paddr ();   
struct TSAPaddr *str2taddr ();   

char   *paddr2str ();		 
char   *taddr2str ();		 

char   *na2str ();		 

 

int	isodeserver ();		 

 

 
   
 

struct QOStype {
    int	    qos_reliability;	 


};



# 26 "../../h/quipu/dsp.h"


struct op_progress {             
    int         op_resolution_phase;




    int         op_nextrdntoberesolved;
};

struct access_point {            
    DN                  ap_name;
    struct PSAPaddr     ap_address;
		     
		     
    struct access_point *ap_next;
};
				 
				 
typedef struct continuation_ref {
    DN          cr_name;
    struct op_progress cr_progress;
    int         cr_rdn_resolved;

    int         cr_aliasedRDNs;

    int         cr_reftype;





    struct access_point cr_accesspoints;
    struct continuation_ref *cr_next;
				 
				 
}continuation_ref, *ContinuationRef;



struct trace_info {
    DN          ti_target;
    DN          ti_dsa;
    struct op_progress  ti_progress;
    struct trace_info   *ti_next;
};



	 

typedef struct svccontrol {      
    int         svc_options;





    char        svc_prio;



    int         svc_timelimit;   

    int         svc_sizelimit;

    int         svc_scopeofreferral;     



} svccontrol, ServiceControl;


# 28 "../../h/quipu/common.h"

# 1 "../../h/quipu/commonarg.h"
 

 










 












# 1 "../../h/quipu/attrvalue.h"
 

 










 









# 115 "../../h/quipu/attrvalue.h"

# 27 "../../h/quipu/commonarg.h"

# 1 "../../h/quipu/dsp.h"
 

 










 









# 99 "../../h/quipu/dsp.h"

# 28 "../../h/quipu/commonarg.h"

typedef struct common_args {     
				 
    ServiceControl      ca_servicecontrol;
    DN                  ca_requestor;

				 

				 
    DN                  ca_initiator;
    DN                  ca_target;
    struct op_progress  ca_progress;
    struct trace_info   *ca_trace;
    int                 ca_aliased_rdns;

    int                 ca_return_cross_refs;
				 
    int                 ca_reftype;
				 
} common_args, CommonArgs;


typedef struct common_results {
    DN          cr_requestor;
				 
				 
    char        cr_aliasdereferenced;
				 

				 
     
     
} common_results, CommonResults;


typedef struct entrystruct {    
    DN                  ent_dn;
    Attr_Sequence       ent_attr;
    int                 ent_iscopy;


				 
				 
				 

    time_t              ent_age;
				 
    struct entrystruct  *ent_next;
} entrystruct, EntryInfo;





typedef struct entryinfoselection {
				 
    char        eis_allattributes;
				 
				 
    Attr_Sequence eis_select;
				 
				 
    char        eis_infotypes;


}entryinfoselection, EntryInfoSelection;

typedef struct ava {             
    AttributeType ava_type;
    AttributeValue ava_value;
}ava, AVA;


# 29 "../../h/quipu/common.h"

# 1 "../../h/quipu/bind.h"
 

 










 












	 

struct ds_bind_arg {
    int dba_version;                     

					 
					 
					 
					 
    DN dba_dn;
    int dba_passwd_len;                  

    char dba_passwd[512 ];
};

struct ds_bind_error {
    int dbe_version;
    char dbe_type;


    int dbe_value;                       
					 
					 
};


# 30 "../../h/quipu/common.h"

# 1 "../../h/quipu/read.h"
 

 










 












# 1 "../../h/quipu/commonarg.h"
 

 










 









# 100 "../../h/quipu/commonarg.h"

# 27 "../../h/quipu/read.h"

# 1 "../../h/quipu/ds_error.h"
 

 










 











struct DSE_abandon_fail {
    int DSE_ab_problem;



    int DSE_ab_invokeid;
};

struct DSE_at_problem {
    int         DSE_at_what;






    AttributeType DSE_at_type;
    AttributeValue DSE_at_value;
    struct DSE_at_problem *dse_at_next;
};


struct DSE_attribute {
    DN DSE_at_name;
    struct DSE_at_problem DSE_at_plist;
} ;


struct DSE_name {
    int DSE_na_problem;





    DN DSE_na_matched;
};


struct DSE_referral {
    ContinuationRef DSE_ref_candidates;
    DN                  DSE_ref_prefix;
			 
};

struct DSE_security {
    int DSE_sc_problem;





};

struct DSE_service {
    int DSE_sv_problem;








};

struct DSE_update {
    int DSE_up_problem;







};

struct DSE_alias {
    DN DSE_al_name;
    DN DSE_al_alias;
};


struct DSError {
    int dse_type;










			 
			 

    union {
       struct DSE_abandon_fail dse_un_abandon_fail;
       struct DSE_attribute dse_un_attribute;
       struct DSE_name dse_un_name;
       struct DSE_referral dse_un_referral;
       struct DSE_security dse_un_security;
       struct DSE_service dse_un_service;
       struct DSE_update dse_un_update;
       struct DSE_alias dse_un_alias;
    }   dse_un;
};



	 

 
 
 

 










				 













# 28 "../../h/quipu/read.h"


	 

struct ds_read_arg {
    CommonArgs rda_common;
    DN rda_object;
    EntryInfoSelection rda_eis;
};

struct ds_read_result {
    CommonResults rdr_common;
    EntryInfo rdr_entry;
};


# 31 "../../h/quipu/common.h"

# 1 "../../h/quipu/compare.h"
 

 










 












# 1 "../../h/quipu/commonarg.h"
 

 










 









# 100 "../../h/quipu/commonarg.h"

# 27 "../../h/quipu/compare.h"

# 1 "../../h/quipu/ds_error.h"
 

 










 








# 168 "../../h/quipu/ds_error.h"

# 28 "../../h/quipu/compare.h"


struct ds_compare_arg {
    CommonArgs cma_common;
    DN cma_object;
    AVA cma_purported;
};

struct ds_compare_result {
    CommonResults cmr_common;
    DN cmr_object;
    char cmr_matched;            
    int cmr_iscopy;              
    time_t cmr_age;
};


# 32 "../../h/quipu/common.h"

# 1 "../../h/quipu/abandon.h"
 

 










 












struct ds_abandon_arg {
    int aba_invokeid;
};


# 33 "../../h/quipu/common.h"

# 1 "../../h/quipu/list.h"
 

 










 












# 1 "../../h/quipu/commonarg.h"
 

 










 









# 100 "../../h/quipu/commonarg.h"

# 27 "../../h/quipu/list.h"

# 1 "../../h/quipu/ds_error.h"
 

 










 








# 168 "../../h/quipu/ds_error.h"

# 28 "../../h/quipu/list.h"


struct ds_list_arg {
    CommonArgs lsa_common;
    DN lsa_object;
};

 



struct subordinate {
    RDN sub_rdn;
    char sub_aliasentry;         
    char sub_copy;               
    struct subordinate *sub_next;
};


 



struct ds_list_result {
    CommonResults lsr_common;
    DN lsr_object;
    time_t lsr_age;
    struct subordinate *lsr_subordinates;
    int lsr_limitproblem;




    ContinuationRef     lsr_cr;
};
				 
				 
				 
				 


static struct list_cache {
	DN              list_dn;
	struct subordinate *list_subs;
	struct subordinate *list_sub_top;
	int             list_count;
	int             list_problem;
	struct list_cache *list_next;
};



struct list_cache *find_list_cache ();


# 34 "../../h/quipu/common.h"

# 1 "../../h/quipu/ds_search.h"
 

 










 












# 1 "../../h/quipu/commonarg.h"
 

 










 









# 100 "../../h/quipu/commonarg.h"

# 27 "../../h/quipu/ds_search.h"

# 1 "../../h/quipu/ds_error.h"
 

 










 








# 168 "../../h/quipu/ds_error.h"

# 28 "../../h/quipu/ds_search.h"


typedef struct {
	    AttributeType fi_sub_type;
	    AV_Sequence fi_sub_initial;
	    AV_Sequence fi_sub_any;
	    AV_Sequence fi_sub_final;
				 
				 
	} Filter_Substrings;

struct filter_item {
    int         fi_type;






    union {
	AttributeType fi_un_type;
	AVA fi_un_ava;
	Filter_Substrings fi_un_substrings;
    } fi_un;
    Soundex fi_soundex [6 ][4 ];
				 
};







typedef struct filter {
    char        flt_type;




   struct filter *flt_next;
   union {
	struct filter_item flt_un_item;
					 
	struct filter *flt_un_filter;
					 
					 
   } flt_un;
}filter, *Filter;






struct ds_search_arg {
    CommonArgs sra_common;
    DN sra_baseobject;
    int sra_subset;



    Filter sra_filter;
    EntryInfoSelection sra_eis;
};

struct ds_search_result {
    CommonResults srr_common;
    DN srr_object;
    EntryInfo *srr_entries;
    int srr_limitproblem;        
    ContinuationRef     srr_cr;
};


 

struct ds_search_task {
   DN  st_baseobject;
   DN  st_alias;
   int st_subset;
   int st_size;
   time_t st_time;
   ContinuationRef st_cr;
   struct ds_search_task * st_next;	
};




# 35 "../../h/quipu/common.h"

# 1 "../../h/quipu/add.h"
 

 










 












# 1 "../../h/quipu/commonarg.h"
 

 










 









# 100 "../../h/quipu/commonarg.h"

# 27 "../../h/quipu/add.h"

# 1 "../../h/quipu/ds_error.h"
 

 










 








# 168 "../../h/quipu/ds_error.h"

# 28 "../../h/quipu/add.h"


struct ds_addentry_arg {
    CommonArgs ada_common;
    DN ada_object;
    Attr_Sequence ada_entry;
};


# 36 "../../h/quipu/common.h"

# 1 "../../h/quipu/modify.h"
 

 










 












# 1 "../../h/quipu/commonarg.h"
 

 










 









# 100 "../../h/quipu/commonarg.h"

# 27 "../../h/quipu/modify.h"

# 1 "../../h/quipu/ds_error.h"
 

 










 








# 168 "../../h/quipu/ds_error.h"

# 28 "../../h/quipu/modify.h"


struct entrymod {
    int em_type;




    Attr_Sequence em_what;       
				 
    struct entrymod *em_next;
};




struct ds_modifyentry_arg {
    CommonArgs mea_common;
    DN mea_object;
    struct entrymod *mea_changes;
};


# 37 "../../h/quipu/common.h"

# 1 "../../h/quipu/modifyrdn.h"
 

 










 












# 1 "../../h/quipu/commonarg.h"
 

 










 









# 100 "../../h/quipu/commonarg.h"

# 27 "../../h/quipu/modifyrdn.h"

# 1 "../../h/quipu/ds_error.h"
 

 










 








# 168 "../../h/quipu/ds_error.h"

# 28 "../../h/quipu/modifyrdn.h"


struct ds_modifyrdn_arg {
    CommonArgs mra_common;
    DN mra_object;
    RDN mra_newrdn;
    char deleterdn;              
};


# 38 "../../h/quipu/common.h"

# 1 "../../h/quipu/remove.h"
 

 










 












# 1 "../../h/quipu/commonarg.h"
 

 










 









# 100 "../../h/quipu/commonarg.h"

# 27 "../../h/quipu/remove.h"

# 1 "../../h/quipu/ds_error.h"
 

 










 








# 168 "../../h/quipu/ds_error.h"

# 28 "../../h/quipu/remove.h"


struct ds_removeentry_arg {
    CommonArgs rma_common;
    DN rma_object;
};


# 39 "../../h/quipu/common.h"

# 1 "../../h/quipu/ds_error.h"
 

 










 








# 168 "../../h/quipu/ds_error.h"

# 40 "../../h/quipu/common.h"


 























































# 27 "../../h/quipu/quipu_pepy.h"


typedef struct
	{
	DN      usc_dn;
	int     usc_passwd_len;
	char    *usc_passwd;
	} USC;

typedef struct
	{
	int             poq_limitproblem;
	ContinuationRef poq_cref;
	} POQ;












struct subordinate *      subord_comp_new();
struct entrymod *      em_comp_cpy();
EntryInfo *      ent_comp_cpy();
Filter          filter_comp_alloc();
int             strb2int();


# 36 "asn_ext.c"

# 1 "../../h/quipu/entry.h"
 

 










 












# 1 "../../h/quipu/attrvalue.h"
 

 










 









# 115 "../../h/quipu/attrvalue.h"

# 27 "../../h/quipu/entry.h"

# 1 "../../h/quipu/dsp.h"
 

 










 









# 99 "../../h/quipu/dsp.h"

# 28 "../../h/quipu/entry.h"


struct acl_attr {
    struct oid_seq   *aa_types;
    struct acl_info  *aa_acl;
    struct acl_attr  *aa_next;
};




struct acl_attr * acl_attr_cpy();

struct acl {                     
    struct acl_info  *ac_child;
    struct acl_info  *ac_entry;
    struct acl_info  *ac_default;
    struct acl_attr  *ac_attributes;
};



struct acl * acl_cpy();
struct acl * str2acl();

 

typedef struct entry {
				 
				 
    RDN         e_name;

    Attr_Sequence e_attributes;  
				 
				 

    objectclass * e_objectclass;        

    char        e_leaf;          
    char        e_complete;      

    int         e_data;          





				 
				 
    char        *e_passwd;       
    struct tree_struct *e_struct;
				 
    struct acl  *e_acl;          

				 
    DN          e_alias;         

    struct dsa_info *e_dsainfo;  


				 
				 
    char        e_allchildrenpresent;
				 

    char        *e_edbversion;
			        
			        
			        

    struct dn_seq *e_master;     
    struct dn_seq *e_slave;      

				 
				 
    struct entry *e_sibling;     
    struct entry *e_parent;
    struct entry *e_child;

    char        e_lock;          
} entry, *Entry;



Entry getentry_block();
Entry directory_load();
Entry find_entry ();
Entry really_find_entry ();
Entry get_default_entry ();

struct oid_seq {
   OID  oid_oid;
   struct oid_seq *oid_next;
};



struct oid_seq * oid_seq_cpy();
struct oid_seq * oid_seq_merge();

struct tree_struct {             
    objectclass        *tree_object;
    struct tree_struct *tree_next;
};



struct tree_struct * tree_struct_cpy ();
struct tree_struct * str2schema ();

struct dn_seq {
    DN  dns_dn;
    struct dn_seq *dns_next;
};


struct dn_seq *dn_seq_cpy();
struct dn_seq *str2dnseq();

struct dsa_info {                
				 
    struct PSAPaddr *dsa_addr;   
				 
				 
				 
				 

				 
				 
    struct edb_info *dsa_edb;
};





struct edb_info {                
    DN          edb_name;
    int         edb_distance;
    DN          edb_getfrom;     
    struct dn_seq  *edb_sendto;   
    struct edb_info *edb_next;
};



struct edb_info * edb_info_cpy ();
struct edb_info * str2update ();

DN get_copy_dn ();


# 37 "asn_ext.c"


extern	LLog	* log_dsap;

OID     grab_oid(at)
AttributeType   at;
{
    if(at->at_oid == ((OID) 0) ) {
	if (log_dsap -> ll_events & (  0x20	)) { (void) ll_log (log_dsap,   0x20	,  ((char *)0) , "%s", ll_preset   ("table  %s",sprintoid(at->at_table->oa_ot.ot_oid))); } else  ;
	return(at->at_table->oa_ot.ot_oid);
    } else {
	if (log_dsap -> ll_events & (  0x20	)) { (void) ll_log (log_dsap,   0x20	,  ((char *)0) , "%s", ll_preset   ("attrib %s",sprintoid(at->at_oid))); } else  ;
	return(at->at_oid);
    }
}

PE      grab_pe(av)
AttributeValue  av;
{
    PE ret_pe = ((PE) 0) ;

    if(av->av_pe != ((PE) 0) )
	return(pe_cpy(av->av_pe));

    switch(av->av_syntax)
    {
    case      1 :
    case     2 :
	ret_pe = str2prim ((av->av_un.av_str), ( strlen(av->av_un.av_str)), 0x0	, 0x013	) ;
	break;
    case        5 :
	ret_pe = str2prim ((av->av_un.av_num), ( strlen(av->av_un.av_num)), 0x0	, 0x012	) ;
	break;
    case                  13 :
	ret_pe = 	obj2prim ((av->av_un.av_oid), 0x0	, 0x006	) ;
	break;
    case          15 :
	ret_pe = 	obj2prim ((av->av_un.av_objectclass->oc_ot.ot_oid), 0x0	, 0x006	) ;
	break;
    case                  3 :
	(void) encode_Quipu_ACLSyntax (&ret_pe,1,0,((char *)0) ,av->av_un.av_acl);
	break;
    case  6 :
	(void) encode_Quipu_ISODEPresentationAddress (&ret_pe,1,0,((char *)0) ,av->av_un.av_psap);
	break;
    case             7 :
	(void) encode_Quipu_NameList (&ret_pe,1,0,((char *)0) ,av->av_un.av_dnlist);
	break;
    case 		16 :
	(void) encode_Quipu_DistinguishedName (&ret_pe,1,0,((char *)0) ,av->av_un.av_dn);
	break;
    case               8 :
        (void) encode_Quipu_TreeStructureSyntax(&ret_pe,1,0,((char *)0) ,av->av_un.av_tree);
	break;
    case               9 :
	(void) encode_Quipu_EDBInfoSyntax (&ret_pe,1,0,((char *)0) ,av->av_un.av_update);
	break;
    case              10 :
	ret_pe = 	flag2prim ((av->av_un.av_boolean), 0x0	, 0x001	) ;
	break;
    case              11 :
	ret_pe = 	num2prim ((av->av_un.av_integer), 0x0	, 0x002	) ;
	break;
    case                 12 :
	{
	UTCtime utime;
	tm2ut (gmtime(&(av->av_un.av_time)),&utime);
	ret_pe = 	time2prim ((utime), 0, 0x0	, 0x017	) ;
	break;
	}
    case 		14 :
	{
	struct _iobuf  * fptr;

	if ((fptr = fopen (av->av_un.av_file.fs_name,"r")) != 0 ) {
		if (av->av_un.av_file.fs_real_syntax ==                  4 ) {
			PS fps;
			fps = ps_alloc (std_open);
			if ((((fps) -> ps_un.un_ps_addr  = (caddr_t) (fptr),      0 ) ) ==   -1 ) {
				(void) fclose (fptr);
				ps_free (fps);
	break;
			}
			ret_pe = 	ps2pe_aux ((fps), 1) ;
			(void) fclose (fptr);
			ps_free (fps);
		} else {
			char buffer [512    ];
			AttributeValue newav;
			extern char * TidyString ();
	
			(void) fread (buffer,512    ,1,fptr);
			(void) fclose (fptr);
			if ((newav = str2AttrV (TidyString(buffer),av->av_un.av_file.fs_real_syntax)) == (AttributeValue) 0  ){
				if (log_dsap -> ll_events & ( 0x02	)) { (void) ll_log (log_dsap,  0x02	,  ((char *)0) , "%s", ll_preset  ("invalid format in file %s",av->av_un.av_file.fs_name)); } else  ;
				break;
			}
			ret_pe = grab_pe (newav);
		}
	} else 
		if (log_dsap -> ll_events & ( 0x02	)) { (void) ll_log (log_dsap,  0x02	,  ((char *)0) , "%s", ll_preset  ("Can't open %s",av->av_un.av_file.fs_name)); } else  ;
	break;	
	}
    default:
	if (log_dsap -> ll_events & (  0x02	)) { (void) ll_log (log_dsap,   0x02	,  ((char *)0) , "%s", ll_preset   ("Unknown syntax %d in grap_pe",av->av_syntax)); } else  ;
    case                  4 :
    case 	17 :	
	return(pe_cpy(av->av_un.av_asn));
    }

 

					 
    return (ret_pe);
}

AttrV_do_decode(x,y)
register AttributeType x;
register AttributeValue y;
{
int z;
    if (x == (AttributeType) 0  )
	    return;

    AttrT_decode (x);
    if (x->at_table == ((oid_table_attr *)0) )
	    return;

    if (y == (AttributeValue) 0  )
	    return;

    y->av_syntax = x->at_table->oa_syntax;

    switch (x->at_table->oa_syntax) {
    case      1 :
    case     2 :
	y->av_un.av_str = prim2str (y->av_pe, &z);
 


	break;
    case        5 :
	y->av_un.av_num = prim2str (y->av_pe, &z);
 


	break;
    case                  13 :
	y->av_un.av_oid = prim2oid(y->av_pe);
	break;
    case          15 :
	y->av_un.av_objectclass = oid2oc (prim2oid(y->av_pe));
	break;
    case                  4 :
    case 	17 :	
	y->av_un.av_asn = y->av_pe;
	break;
    case              10 :
	y->av_un.av_boolean = (char) prim2flag (y->av_pe) ;
	break;
    case              11 :
	y->av_un.av_integer = prim2num (y->av_pe);
	break;
    case                 12 :
	y->av_un.av_time = gtime(ut2tm(	prim2time ((y->av_pe), 0) ));
	break;
    case  6 :
	{
	y->av_un.av_psap = (struct PSAPaddr *) calloc (1,sizeof (struct PSAPaddr));
 


	(void) decode_Quipu_ISODEPresentationAddress (y->av_pe,1,	((IP) 0) ,((char **) 0) ,y->av_un.av_psap);
	break;
	}
    case                  3 :
	y->av_un.av_acl =  (struct acl *) qmalloc (sizeof (struct acl)) ; ;
	(void) decode_Quipu_ACLSyntax(y->av_pe,1,	((IP) 0) ,((char **) 0) ,y->av_un.av_acl);
	acl_decode (y->av_un.av_acl);
	break;
    case             7 :
	(void) decode_Quipu_NameList(y->av_pe,1,	((IP) 0) ,((char **) 0) ,&(y->av_un.av_dnlist));
	dn_seq_decode (y->av_un.av_dnlist);
	break;
    case 		16 :
	(void) decode_Quipu_DistinguishedName(y->av_pe,1,	((IP) 0) ,((char **) 0) ,&(y->av_un.av_dn));
	dn_decode (y->av_un.av_dn);
	break;
    case               8 :
	(void) decode_Quipu_TreeStructureSyntax(y->av_pe,1,	((IP) 0) ,((char **) 0) ,&(y->av_un.av_tree));
	break;
    case               9 :
	y->av_un.av_update =   (struct edb_info *) qmalloc (sizeof (struct edb_info)) ; ;
	(void) decode_Quipu_EDBInfoSyntax(y->av_pe,1,	((IP) 0) ,((char **) 0) ,y->av_un.av_update);
	edb_info_decode (y->av_un.av_update);
	break;
    default:
	y->av_syntax =              0       ;
	if (log_dsap -> ll_events & (  0x02	)) { (void) ll_log (log_dsap,   0x02	,  ((char *)0) , "%s", ll_preset   ("Un decoded syntax %d",x->at_table->oa_syntax)); } else  ;
	break;
    }
}


------- End of Forwarded Message