# 1 "freesubs.c"
 







































# 1 "../wh/regular.h" 1
 
















































# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/setjmp.h" 1 3
 
 

 
 
 




#pragma ident	"@(#)setjmp.h	1.14	93/09/27 SMI"	

# 1 "/usr/include/sys/feature_tests.h" 1 3
 




 
 
 




#pragma ident	"@(#)feature_tests.h	1.18	99/07/26 SMI"

# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/sys/isa_defs.h" 1 3
 






#pragma ident	"@(#)isa_defs.h	1.1	93/07/01 SMI"

 




































































 






# 117 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/sys/isa_defs.h" 3


 






 









 





 











# 15 "/usr/include/sys/feature_tests.h" 2 3






 












 








































 



























 



















 






















 



























 










# 13 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/setjmp.h" 2 3








 






 

















# 59 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/setjmp.h" 3


typedef int jmp_buf[12 ];


extern int setjmp(jmp_buf);
#pragma unknown_control_flow(setjmp)
extern void longjmp(jmp_buf, int);


 

typedef int sigjmp_buf[19 ];

extern int sigsetjmp(sigjmp_buf, int);
#pragma unknown_control_flow(sigsetjmp)
extern void siglongjmp(sigjmp_buf, int);






# 92 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/setjmp.h" 3









# 50 "../wh/regular.h" 2

# 1 "../wh/mystdlib.h" 1
 


















































 





 

# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/sys/param.h" 1 3
 
 

 
 
 

 

























#pragma ident	"@(#)param.h	1.32	95/08/28 SMI"	


# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/sys/types.h" 1 3
 
 

 
 
 




#pragma ident	"@(#)types.h	1.36	94/12/20 SMI"




 


# 1 "/usr/include/sys/machtypes.h" 1 3
 




 
 

 
 
 




#pragma ident	"@(#)machtypes.h	1.13	99/05/04 SMI"







 








typedef	struct	_label_t { long val[2]; } label_t;



typedef	unsigned char	lock_t;		 






# 19 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/sys/types.h" 2 3






 

typedef	unsigned char	uchar_t;
typedef	unsigned short	ushort_t;
typedef	unsigned int	uint_t;
typedef	unsigned long	ulong_t;

typedef	char *		caddr_t;	 
typedef	long		daddr_t;	 
typedef	long		off_t;		 
typedef	short		cnt_t;		 

typedef	ulong_t		paddr_t;	 
typedef	uchar_t		use_t;		 
typedef	short		sysid_t;
typedef	short		index_t;




typedef enum { B_FALSE, B_TRUE } boolean_t;


 





typedef	long long		longlong_t;
typedef	unsigned long long	u_longlong_t;
# 66 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/sys/types.h" 3


typedef	longlong_t	offset_t;
typedef	longlong_t	diskaddr_t;

 





# 85 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/sys/types.h" 3



typedef union {
	offset_t	_f;	 
	struct {
		long _u;	 
		off_t _l;	 
	} _p;
} lloff_t;


# 105 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/sys/types.h" 3



typedef union {
	diskaddr_t	_f;	 
	struct {
		long _u;	 
		daddr_t _l;	 
	} _p;
} lldaddr_t;


typedef ulong_t k_fltset_t;	 

 







typedef long		id_t;		 
					 
					 
					 
					 


 

typedef ulong_t	major_t;	 
typedef ulong_t	minor_t;	 


 

typedef short	pri_t;

 










typedef	ushort_t o_mode_t;		 
typedef short	o_dev_t;		 
typedef	ushort_t o_uid_t;		 
typedef	o_uid_t	o_gid_t;		 
typedef	short	o_nlink_t;		 
typedef short	o_pid_t;		 
typedef ushort_t o_ino_t;		 


 

typedef	int	key_t;			 
typedef	ulong_t	mode_t;			 



typedef	long	uid_t;			 


typedef	uid_t	gid_t;			 
typedef	ulong_t nlink_t;		 
typedef ulong_t	dev_t;			 
typedef ulong_t	ino_t;			 
typedef long	pid_t;			 






typedef unsigned int size_t;		 




typedef int	ssize_t;	 
				 




typedef	long		time_t;	 




typedef	long		clock_t;  




typedef	int	clockid_t;	 




typedef	int	timer_t;	 





typedef	unsigned char	unchar;
typedef	unsigned short	ushort;
typedef	unsigned int	uint;
typedef	unsigned long	ulong;

# 234 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/sys/types.h" 3





 












 




typedef	long	hostid_t;

 







typedef unsigned char	u_char;
typedef unsigned short	u_short;
typedef unsigned int	u_int;
typedef unsigned long	u_long;
typedef struct _quad { long val[2]; } quad;	 


 



# 1 "/usr/include/sys/select.h" 1 3
 
 
 

 
 
 




#pragma ident	"@(#)select.h	1.16	98/04/27 SMI"	




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

 
 
 

 





 







#pragma ident	"@(#)time.h	2.64	99/10/05 SMI"	



 



















typedef	long	suseconds_t;	 


struct timeval {
	time_t		tv_sec;		 
	suseconds_t	tv_usec;	 
};

# 74 "/usr/include/sys/time.h" 3








struct timezone {
	int	tz_minuteswest;	 
	int	tz_dsttime;	 
};








 





# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/sys/types.h" 1 3
 
 

 
 
 

# 302 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/sys/types.h" 3

# 100 "/usr/include/sys/time.h" 2 3






















 


















 






				 
				 

				 
				 


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

# 181 "/usr/include/sys/time.h" 3







 











 


typedef	longlong_t	hrtime_t;

# 311 "/usr/include/sys/time.h" 3





int adjtime(struct timeval *, struct timeval *);










int getitimer(int, struct itimerval *);
int utimes(const char *, const struct timeval *);



int setitimer(int, struct itimerval *, struct itimerval *);











 




















int settimeofday(struct timeval *, void *);

hrtime_t	gethrtime(void);
hrtime_t	gethrvtime(void);
















int gettimeofday(struct timeval *, void *);







 












# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/time.h" 1 3
 
 
 



 
 
 




#pragma ident	"@(#)time.h	1.23	95/08/28 SMI"	


































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



extern clock_t clock(void);
extern double difftime(time_t, time_t);
extern time_t mktime(struct tm *);
extern time_t time(time_t *);
extern char *asctime(const struct tm *);
extern char *ctime(const time_t *);
extern struct tm *gmtime(const time_t *);
extern struct tm *localtime(const time_t *);
extern size_t strftime(char *, size_t, const char *, const struct tm *);










extern char *strptime(const char *, const char *, struct tm *);






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

 
 
 

 





 




# 428 "/usr/include/sys/time.h" 3

# 89 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/time.h" 2 3

# 1 "/usr/include/sys/siginfo.h" 1 3
 
 

 




 
 
 




#pragma ident	"@(#)siginfo.h	1.54	98/03/27 SMI"	


# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/sys/types.h" 1 3
 
 

 
 
 

# 302 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/sys/types.h" 3

# 19 "/usr/include/sys/siginfo.h" 2 3









 





union sigval {
	int	sival_int;	 
	void	*sival_ptr;	 
};


# 49 "/usr/include/sys/siginfo.h" 3














 





struct sigevent {
	int		sigev_notify;	 
	int		sigev_signo;	 
	union sigval	sigev_value;	 
	void		(*sigev_notify_function)(union sigval);
	pthread_attr_t	*sigev_notify_attributes;
	int		__sigev_pad2;
};


 




# 97 "/usr/include/sys/siginfo.h" 3






 

















 




# 1 "/usr/include/sys/machsig.h" 1 3
 
 

 
 
 

 







#pragma ident	"@(#)machsig.h	1.15	99/08/15 SMI"







 



 









 
















 









 















 









 



















# 126 "/usr/include/sys/siginfo.h" 2 3


 












 














 


















 



















 










# 1 "/usr/include/sys/time_impl.h" 1 3
 




 








#pragma ident	"@(#)time_impl.h	1.5	99/10/05 SMI"














 





typedef struct  timespec {		 
	time_t		tv_sec;		 
	long		tv_nsec;	 
} timespec_t;

# 58 "/usr/include/sys/time_impl.h" 3


typedef struct timespec timestruc_t;	 



 









 




typedef struct itimerspec {		 
	struct timespec	it_interval;	 
	struct timespec	it_value;	 
} itimerspec_t;

# 100 "/usr/include/sys/time_impl.h" 3



















 




















# 206 "/usr/include/sys/siginfo.h" 2 3





 





# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/sys/types.h" 1 3
 
 

 
 
 

# 302 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/sys/types.h" 3

# 217 "/usr/include/sys/siginfo.h" 2 3




typedef struct siginfo { 		 



	int	si_signo;			 
	int 	si_code;			 
	int	si_errno;			 



	union {

		int	__pad[((128  / sizeof (int)) - 3) ];		 

		struct {			 
			pid_t	__pid;		 
			union {
				struct {
					uid_t	__uid;


					union sigval	__value;



				} __kill;
				struct {
					clock_t __utime;
					int	__status;
					clock_t __stime;
				} __cld;
			} __pdata;
		} __proc;

		struct {	 
			void 	*__addr;	 
			int	__trapno;	 
			caddr_t	__pc;		 
		} __fault;

		struct {			 
		 
			int	__fd;		 
			long	__band;
		} __file;

		struct {			 
			caddr_t	__faddr;	 


			timestruc_t __tstamp;	 



			short	__syscall;	 
			char	__nsysarg;	 
			char	__fault;	 
			long	__sysarg[8];	 
			int	__mstate[10];	 
		} __prof;

	} __data;

} siginfo_t;

# 344 "/usr/include/sys/siginfo.h" 3


 







typedef struct k_siginfo {
	int	si_signo;			 
	int 	si_code;			 
	int	si_errno;			 



	union {
		struct {			 
			pid_t	__pid;		 
			union {
				struct {
					uid_t	__uid;
					union sigval	__value;
				} __kill;
				struct {
					clock_t __utime;
					int	__status;
					clock_t __stime;
				} __cld;
			} __pdata;
		} __proc;

		struct {	 
			void 	*__addr;	 
			int	__trapno;	 
			caddr_t	__pc;		 
		} __fault;

		struct {			 
		 
			int	__fd;		 
			long	__band;
		} __file;

		struct {			 
			caddr_t	__faddr;	 



			timestruc_t __tstamp;	 



			short	__syscall;	 
			char	__nsysarg;	 
			char	__fault;	 
			 
			 
			 
		} __prof;

	} __data;

} k_siginfo_t;

typedef struct sigqueue {
	struct sigqueue	*sq_next;
	k_siginfo_t	sq_info;
	void		(*sq_func)(struct sigqueue *);  
	void		*sq_backptr;	 
					 
} sigqueue_t;

 







































# 90 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/time.h" 2 3

extern int clock_getres(clockid_t, struct timespec *);
extern int clock_gettime(clockid_t, struct timespec *);
extern int clock_settime(clockid_t, const struct timespec *);

extern int timer_create(clockid_t, struct sigevent *, timer_t *);
extern int timer_delete(timer_t);
extern int timer_getoverrun(timer_t);
extern int timer_gettime(timer_t, struct itimerspec *);
extern int timer_settime(timer_t, int, const struct itimerspec *,
		struct itimerspec *);
extern int nanosleep(const struct timespec *, struct timespec *);





extern void tzset(void);

extern char *tzname[2];


extern long _sysconf(int);	 

				 




extern long timezone;
extern int daylight;





extern int cftime(char *, char *, const time_t *);
extern int ascftime(char *, const char *, const struct tm *);
extern long altzone;
extern struct tm *getdate(const char *);






extern int getdate_err;



# 171 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/time.h" 3


 


# 249 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/time.h" 3







# 406 "/usr/include/sys/time.h" 2 3



 









# 1 "/usr/include/sys/select.h" 1 3
 
 
 

 
 
 

# 107 "/usr/include/sys/select.h" 3

# 419 "/usr/include/sys/time.h" 2 3










# 17 "/usr/include/sys/select.h" 2 3







 




















typedef	long	fd_mask;

typedef	long	fds_mask;

 























typedef	struct fd_set {



	long	fds_bits[((( 1024  )+((  (sizeof (fds_mask) * 8 )  )-1))/(  (sizeof (fds_mask) * 8 )  )) ];
} fd_set;


















extern int select(int, fd_set *, fd_set *, fd_set *, struct timeval *);










# 278 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/sys/types.h" 2 3




 












 







# 37 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/sys/param.h" 2 3









 





























				 
				 
				 

 






 





 























 




# 131 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/sys/param.h" 3





















 



 

















 














 



 




























 











 




 






 




# 263 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/sys/param.h" 3






 




# 377 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/sys/param.h" 3


 







# 1 "/usr/include/sys/unistd.h" 1 3
 









 




 








#pragma ident	"@(#)unistd.h	1.37	98/10/28 SMI"	







 



 


 




 





 


















 

 








 




 




 



























 





















 



 





 







 


















 




















 








 

 









 




 











































# 387 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/sys/param.h" 2 3







extern long _sysconf(int);	 















# 60 "../wh/mystdlib.h" 2


# 1 "/usr/include/netdb.h" 1 3
 
 

 
 
 

 











































































 








#pragma ident	"@(#)netdb.h	1.23	99/12/06 SMI"


# 1 "/usr/include/netinet/in.h" 1 3
 



 











 












#pragma ident	"@(#)in.h	1.26	99/10/25 SMI"










# 1 "/usr/include/sys/stream.h" 1 3
 
 

 
 
 

 







#pragma ident	"@(#)stream.h	1.85	99/12/15 SMI"	

 



# 1 "/usr/include/sys/vnode.h" 1 3
 
 

 
 
 

 


























#pragma ident	"@(#)vnode.h	1.85	99/07/30 SMI"


# 1 "/usr/include/sys/t_lock.h" 1 3
 




 








#pragma ident	"@(#)t_lock.h	1.45	98/02/01 SMI"


# 1 "/usr/include/sys/machlock.h" 1 3
 







#pragma ident	"@(#)machlock.h	1.20	99/06/05 SMI"









# 29 "/usr/include/sys/machlock.h" 3







typedef	lock_t	disp_lock_t;		 

 





 







 


extern	int	hres_lock;






 

















# 18 "/usr/include/sys/t_lock.h" 2 3


# 1 "/usr/include/sys/mutex.h" 1 3
 







#pragma ident	"@(#)mutex.h	1.20	98/02/01 SMI"











 

















typedef enum {
	MUTEX_ADAPTIVE = 0,	 
	MUTEX_SPIN = 1,		 
	MUTEX_DRIVER = 4,	 
	MUTEX_DEFAULT = 6	 
} kmutex_type_t;

typedef struct mutex {



	void	*_opaque[2];

} kmutex_t;

# 67 "/usr/include/sys/mutex.h" 3









# 20 "/usr/include/sys/t_lock.h" 2 3

# 1 "/usr/include/sys/rwlock.h" 1 3
 







#pragma ident	"@(#)rwlock.h	1.9	98/02/18 SMI"

 











typedef enum {
	RW_DRIVER = 2,		 
	RW_DEFAULT = 4		 
} krw_type_t;

typedef enum {
	RW_WRITER,
	RW_READER
} krw_t;

typedef struct _krwlock {
	void	*_opaque[1];
} krwlock_t;

# 58 "/usr/include/sys/rwlock.h" 3









# 21 "/usr/include/sys/t_lock.h" 2 3

# 1 "/usr/include/sys/semaphore.h" 1 3
 







#pragma ident	"@(#)semaphore.h	1.5	98/02/01 SMI"

 













typedef enum {
	SEMA_DEFAULT,
	SEMA_DRIVER
} ksema_type_t;

typedef struct _ksema {
	void	* _opaque[2];	 
} ksema_t;

# 46 "/usr/include/sys/semaphore.h" 3









# 22 "/usr/include/sys/t_lock.h" 2 3

# 1 "/usr/include/sys/condvar.h" 1 3
 




 










#pragma ident	"@(#)condvar.h	1.10	98/02/18 SMI"














 



typedef struct _kcondvar {
	ushort_t	_opaque;
} kcondvar_t;

typedef	enum {
	CV_DEFAULT,
	CV_DRIVER
} kcv_type_t;


# 63 "/usr/include/sys/condvar.h" 3









# 23 "/usr/include/sys/t_lock.h" 2 3









 









# 76 "/usr/include/sys/t_lock.h" 3









# 38 "/usr/include/sys/vnode.h" 2 3


# 1 "/usr/include/sys/cred.h" 1 3
 
 

 
 
 

 

























#pragma ident	"@(#)cred.h	1.21	97/01/09 SMI"	









 





typedef struct cred {
	uint_t	cr_ref;			 
	uid_t	cr_uid;			 
	gid_t	cr_gid;			 
	uid_t	cr_ruid;		 
	gid_t	cr_rgid;		 
	uid_t	cr_suid;		 
	gid_t	cr_sgid;		 
	uint_t	cr_ngroups;		 
	gid_t	cr_groups[1];		 
} cred_t;

# 89 "/usr/include/sys/cred.h" 3







# 40 "/usr/include/sys/vnode.h" 2 3

# 1 "/usr/include/sys/uio.h" 1 3
 
 

 
 
 

 







#pragma ident	"@(#)uio.h	1.29	97/06/29 SMI"	









 












typedef struct iovec {
	caddr_t	iov_base;



	long	iov_len;

} iovec_t;


# 58 "/usr/include/sys/uio.h" 3



 


typedef enum uio_seg { UIO_USERSPACE, UIO_SYSSPACE, UIO_USERISPACE } uio_seg_t;

typedef struct uio {
	iovec_t	*uio_iov;	 
	int	uio_iovcnt;	 
	lloff_t	_uio_offset;	 
	uio_seg_t uio_segflg;	 
	short	uio_fmode;	 
	lldaddr_t _uio_limit;	 
	ssize_t	uio_resid;	 
} uio_t;















 


typedef enum uio_rw { UIO_READ, UIO_WRITE } uio_rw_t;


# 108 "/usr/include/sys/uio.h" 3




extern ssize_t readv(int, const struct iovec *, int);
extern ssize_t writev(int, const struct iovec *, int);















# 41 "/usr/include/sys/vnode.h" 2 3

# 1 "/usr/include/sys/resource.h" 1 3
 
 

 
 
 

 







#pragma ident	"@(#)resource.h	1.25	98/06/30 SMI"	










 








 














# 59 "/usr/include/sys/resource.h" 3


 





typedef unsigned long	rlim_t;





# 81 "/usr/include/sys/resource.h" 3




# 100 "/usr/include/sys/resource.h" 3


struct rlimit {
	rlim_t	rlim_cur;		 
	rlim_t	rlim_max;		 
};

 
# 121 "/usr/include/sys/resource.h" 3


# 138 "/usr/include/sys/resource.h" 3





struct	rusage {
	struct timeval ru_utime;	 
	struct timeval ru_stime;	 
	long	ru_maxrss;		 
	long	ru_ixrss;		 
	long	ru_idrss;		 
	long	ru_isrss;		 
	long	ru_minflt;		 
	long	ru_majflt;		 
	long	ru_nswap;		 
	long	ru_inblock;		 
	long	ru_oublock;		 
	long	ru_msgsnd;		 
	long	ru_msgrcv;		 
	long	ru_nsignals;		 
	long	ru_nvcsw;		 
	long	ru_nivcsw;		 
};

# 174 "/usr/include/sys/resource.h" 3


# 189 "/usr/include/sys/resource.h" 3




extern int setrlimit(int, const struct rlimit *);
extern int getrlimit(int, struct rlimit *);

 






extern int getpriority(int, id_t);
extern int setpriority(int, id_t, int);
extern int getrusage(int, struct rusage *);

# 223 "/usr/include/sys/resource.h" 3









# 42 "/usr/include/sys/vnode.h" 2 3

# 1 "/usr/include/vm/seg_enum.h" 1 3
 
 

 
 
 

 

























#pragma ident	"@(#)seg_enum.h	1.3	95/12/22 SMI"





 




 




enum fault_type {
	F_INVAL,		 
	F_PROT,			 
	F_SOFTLOCK,		 
	F_SOFTUNLOCK		 
};

 


enum lock_type {
	L_PAGELOCK,		 
	L_PAGEUNLOCK,		 
	L_PAGERECLAIM		 
};

 


enum seg_rw {
	S_OTHER,		 
	S_READ,			 
	S_WRITE,		 
	S_EXEC,			 
	S_CREATE		 
};






# 43 "/usr/include/sys/vnode.h" 2 3










 





 



typedef enum vtype {
	VNON	= 0,
	VREG	= 1,
	VDIR	= 2,
	VBLK	= 3,
	VCHR	= 4,
	VLNK	= 5,
	VFIFO	= 6,
	VDOOR	= 7,
	VPROC	= 8,
	VSOCK	= 9,
	VBAD	= 10
} vtype_t;

 








 
typedef struct vnode {
	kmutex_t	v_lock;			 
	ushort_t	v_flag;			 
	uint_t		v_count;		 
	struct vfs	*v_vfsmountedhere;	 
	struct vnodeops	*v_op;			 
	struct vfs	*v_vfsp;		 
	struct stdata	*v_stream;		 
	struct page	*v_pages;		 
	enum vtype	v_type;			 
	dev_t		v_rdev;			 
	caddr_t		v_data;			 
	struct filock	*v_filocks;		 
	struct shrlocklist *v_shrlocks;		 
	kcondvar_t	v_cv;			 
	void		*v_locality;		 
} vnode_t;

 













 





 




 





 








 





 






typedef struct vattr {
	uint_t		va_mask;	 
	vtype_t		va_type;	 
	mode_t		va_mode;	 
	uid_t		va_uid;		 
	gid_t		va_gid;		 
	dev_t		va_fsid;	 
	u_longlong_t	va_nodeid;	 
	nlink_t		va_nlink;	 
	u_offset_t	va_size;	 
	timestruc_t	va_atime;	 
	timestruc_t	va_mtime;	 
	timestruc_t	va_ctime;	 
	dev_t		va_rdev;	 
	uint_t		va_blksize;	 
	u_longlong_t	va_nblocks;	 
	uint_t		va_vcode;	 
} vattr_t;

# 200 "/usr/include/sys/vnode.h" 3


typedef vattr_t		vattr32_t;


 






























 






 









 






 


enum rm		{ RMFILE, RMDIRECTORY };	 
enum symfollow	{ NO_FOLLOW, FOLLOW };		 
enum vcexcl	{ NONEXCL, EXCL };		 
enum create	{ CRCREAT, CRMKNOD, CRMKDIR };	 

typedef enum rm		rm_t;
typedef enum symfollow	symfollow_t;
typedef enum vcexcl	vcexcl_t;
typedef enum create	create_t;

 



typedef struct vsecattr {
	uint_t		vsa_mask;	 
	int		vsa_aclcnt;	 
	void		*vsa_aclentp;	 
	int		vsa_dfaclcnt;	 
	void		*vsa_dfaclentp;	 
} vsecattr_t;

 





 


struct pathname;
struct fid;
struct flock64;
struct shrlock;
struct page;
struct seg;
struct as;
struct pollhead;

 


typedef struct vnodeops {
	int	(*vop_open)(struct vnode **vpp, int flag, struct cred *cr);
	int	(*vop_close)(struct vnode *vp, int flag, int count,
				offset_t offset, struct cred *cr);
	int	(*vop_read)(struct vnode *vp, struct uio *uiop, int ioflag,
			    struct cred *cr);
	int	(*vop_write)(struct vnode *vp, struct uio *uiop, int ioflag,
				struct cred *cr);
	int	(*vop_ioctl)(struct vnode *vp, int cmd, intptr_t arg, int flag,
				struct cred *cr, int *rvalp);
	int	(*vop_setfl)(struct vnode *vp, int oflags, int nflags,
				struct cred *cr);
	int	(*vop_getattr)(struct vnode *vp, struct vattr *vap, int flags,
				struct cred *cr);
	int	(*vop_setattr)(struct vnode *vp, struct vattr *vap, int flags,
				struct cred *cr);
	int	(*vop_access)(struct vnode *vp, int mode, int flags,
				struct cred *cr);
	int	(*vop_lookup)(struct vnode *dvp, char *nm, struct vnode **vpp,
				struct pathname *pnp, int flags,
				struct vnode *rdir, struct cred *);
	int	(*vop_create)(struct vnode *dvp, char *name, struct vattr *vap,
				vcexcl_t excl, int mode, struct vnode **vpp,
				struct cred *cr, int flag);
	int	(*vop_remove)(struct vnode *vp, char *nm, struct cred *cr);
	int	(*vop_link)(struct vnode *tdvp, struct vnode *svp, char *tnm,
				struct cred *cr);
	int	(*vop_rename)(struct vnode *sdvp, char *snm,
				struct vnode *tdvp, char *tnm, struct cred *cr);
	int	(*vop_mkdir)(struct vnode *dvp, char *dirname,
				struct vattr *vap, struct vnode **vpp,
				struct cred *cr);
	int	(*vop_rmdir)(struct vnode *vp, char *nm, struct vnode *cdir,
				struct cred *cr);
	int	(*vop_readdir)(struct vnode *vp, struct uio *uiop,
				struct cred *cr, int *eofp);
	int	(*vop_symlink)(struct vnode *dvp, char *linkname,
				struct vattr *vap, char *target,
				struct cred *cr);
	int	(*vop_readlink)(struct vnode *vp, struct uio *uiop,
				struct cred *cr);
	int	(*vop_fsync)(struct vnode *vp, int syncflag, struct cred *cr);
	void	(*vop_inactive)(struct vnode *vp, struct cred *cr);
	int	(*vop_fid)(struct vnode *vp, struct fid *fidp);
	void	(*vop_rwlock)(struct vnode *vp, int write_lock);
	void	(*vop_rwunlock)(struct vnode *vp, int write_lock);
	int	(*vop_seek)(struct vnode *vp, offset_t ooff, offset_t *noffp);
	int	(*vop_cmp)(struct vnode *vp1, struct vnode *vp2);
	int	(*vop_frlock)(struct vnode *vp, int cmd, struct flock64 *bfp,
				int flag, offset_t offset, struct cred *cr);
	int	(*vop_space)(struct vnode *vp, int cmd, struct flock64 *bfp,
				int flag, offset_t offset, struct cred *cr);
	int	(*vop_realvp)(struct vnode *vp, struct vnode **vpp);
	int	(*vop_getpage)(struct vnode *vp, offset_t off, size_t len,
				uint_t *protp, struct page **plarr, size_t plsz,
				struct seg *seg, caddr_t addr, enum seg_rw rw,
				struct cred *cr);
	int	(*vop_putpage)(struct vnode *vp, offset_t off, size_t len,
				int flags, struct cred *cr);
	int	(*vop_map)(struct vnode *vp, offset_t off, struct as *as,
			    caddr_t *addrp, size_t len, uchar_t prot,
			    uchar_t maxprot, uint_t flags, struct cred *cr);
	int	(*vop_addmap)(struct vnode *vp, offset_t off, struct as *as,
				caddr_t addr, size_t len, uchar_t prot,
				uchar_t maxprot, uint_t flags, struct cred *cr);
	int	(*vop_delmap)(struct vnode *vp, offset_t off, struct as *as,
				caddr_t addr, size_t len, uint_t prot,
				uint_t maxprot, uint_t flags, struct cred *cr);
	int	(*vop_poll)(struct vnode *vp, short ev, int any, short *revp,
			struct pollhead **phpp);
	int	(*vop_dump)(struct vnode *vp, caddr_t addr, int lbdn,
				int dblks);
	int	(*vop_pathconf)(struct vnode *vp, int cmd, ulong_t *valp,
				struct cred *cr);
	int	(*vop_pageio)(struct vnode *vp, struct page *pp,
				u_offset_t io_off, size_t io_len, int flags,
				struct cred *cr);
	int	(*vop_dumpctl)(struct vnode *vp, int action, int *blkp);
	void	(*vop_dispose)(struct vnode *vp, struct page *pp, int flag,
				int dn, struct cred *cr);
	int	(*vop_setsecattr)(struct vnode *vp, vsecattr_t *vsap, int flag,
				    struct cred *cr);
	int	(*vop_getsecattr)(struct vnode *vp, vsecattr_t *vsap, int flag,
				    struct cred *cr);
	int	(*vop_shrlock)(struct vnode *vp, int cmd, struct shrlock *shr,
				int flag);
} vnodeops_t;






































































 




 






 


# 501 "/usr/include/sys/vnode.h" 3













# 523 "/usr/include/sys/vnode.h" 3

 







 








 






# 577 "/usr/include/sys/vnode.h" 3







# 22 "/usr/include/sys/stream.h" 2 3

# 1 "/usr/include/sys/poll.h" 1 3
 
 

 
 
 

 







#pragma ident	"@(#)poll.h	1.28	98/11/23 SMI"	





 



typedef struct pollfd {
	int fd;				 
	short events;			 
	short revents;			 
} pollfd_t;

typedef unsigned long	nfds_t;

 












 









# 68 "/usr/include/sys/poll.h" 3


# 120 "/usr/include/sys/poll.h" 3




int poll(struct pollfd *, nfds_t, int);










# 23 "/usr/include/sys/stream.h" 2 3

# 1 "/usr/include/sys/strmdep.h" 1 3
 




 
 

 
 
 




#pragma ident	"@(#)strmdep.h	1.10	98/01/06 SMI"	





 




 





 





 










# 24 "/usr/include/sys/stream.h" 2 3



# 1 "/usr/include/sys/model.h" 1 3
 







#pragma ident	"@(#)model.h	1.20	97/09/22 SMI"











# 45 "/usr/include/sys/model.h" 3



 





typedef unsigned int model_t;



# 199 "/usr/include/sys/model.h" 3







# 27 "/usr/include/sys/stream.h" 2 3

# 1 "/usr/include/sys/strft.h" 1 3
 







#pragma ident	"@(#)strft.h	1.1	99/07/30 SMI"

 











 







typedef hrtime_t tdelta_t [12 ][2];

typedef hrtime_t ts_t;

extern ts_t _tstamp_c;	 
			 


















# 88 "/usr/include/sys/strft.h" 3


# 133 "/usr/include/sys/strft.h" 3

























 















































 





struct ftevnt {
	ts_t ts;	 
	char *mid;	 
	ushort_t evnt;	 
	ushort_t data;	 
};

 


struct ftblk {
	struct ftblk *nxt;	 
	int ix;			 
	struct ftevnt ev[0x9 ];
};

 









struct fthdr {
	struct ftblk *tail;
	unsigned hash;		 
	void *thread;
	int cpu_seqid;
	struct ftblk first;
};

 




struct ftflwe {
	char *mid;
	ushort_t evnt;
	ushort_t data;
	tdelta_t td;
};

struct ftflw {
	struct ftflw *nxt;
	int hash;
	int count;
	struct ftflwe ev[1];	 
};

typedef struct ftevnt ftevnt_t;
typedef struct ftblk ftblk_t;
typedef struct fthdr fthdr_t;
typedef struct ftflwe ftflwe_t;
typedef struct ftflw ftflw_t;
typedef struct ftevents ftevents_t;

# 357 "/usr/include/sys/strft.h" 3







# 28 "/usr/include/sys/stream.h" 2 3






 





























 


typedef struct	queue {
	struct	qinit	*q_qinfo;	 
	struct	msgb	*q_first;	 
	struct	msgb	*q_last;	 
	struct	queue	*q_next;	 
	struct	queue	*q_link;	 
	void		*q_ptr;		 
	size_t		q_count;	 
	uint_t		q_flag;		 
	ssize_t		q_minpsz;	 
					 
	ssize_t		q_maxpsz;	 
					 
	size_t		q_hiwat;	 
	size_t		q_lowat;	 
	struct qband	*q_bandp;	 
	kmutex_t	q_lock;		 
	struct stdata 	*q_stream;	 
	struct	syncq	*q_syncq;	 
	unsigned char	q_nband;	 
	kcondvar_t	q_wait;		 
	kcondvar_t	q_sync;		 
	struct	queue	*q_nfsrv;	 
	struct	queue	*q_nbsrv;	 
	ushort_t	q_draining;	 
	short		q_struiot;	 
	uint_t		q_syncqmsgs;	 
	size_t		q_mblkcnt;	 
	 







	struct msgb	*q_sqhead;	 
	struct msgb	*q_sqtail;	 
	uint_t		q_sqflags;	 
	size_t		q_refcnt;	 
					 
	 



	struct queue	*q_sqnext;	 
	struct queue	*q_sqprev;	 
	pri_t		q_spri;		 
} queue_t;

 









					 


					 






					 











 


					 
					 
					 

 



typedef struct qband {
	struct qband	*qb_next;	 
	size_t		qb_count;	 
	struct msgb	*qb_first;	 
	struct msgb	*qb_last;	 
	size_t		qb_hiwat;	 
	size_t		qb_lowat;	 
	uint_t		qb_flag;	 
	size_t		qb_mblkcnt;	 
} qband_t;

 






 




 


typedef enum qfields {
	QHIWAT	= 0,		 
	QLOWAT	= 1,		 
	QMAXPSZ	= 2,		 
	QMINPSZ	= 3,		 
	QCOUNT	= 4,		 
	QFIRST	= 5,		 
	QLAST	= 6,		 
	QFLAG	= 7,		 
	QSTRUIOT = 8,		 
	QBAD	= 9
} qfields_t;

 


struct module_info {
	ushort_t mi_idnum;		 
	char 	*mi_idname;		 
	ssize_t	mi_minpsz;		 
	ssize_t	mi_maxpsz;		 
	size_t	mi_hiwat;		 
	size_t 	mi_lowat;		 
};

 


struct	qinit {
	int	(*qi_putp)();		 
	int	(*qi_srvp)();		 
	int	(*qi_qopen)();		 
	int	(*qi_qclose)();		 
	int	(*qi_qadmin)();		 
	struct module_info *qi_minfo;	 
	struct module_stat *qi_mstat;	 
	int	(*qi_rwp)();		 
	int	(*qi_infop)();		 
	int	qi_struiot;		 
};

 







 



struct streamtab {
	struct qinit *st_rdinit;
	struct qinit *st_wrinit;
	struct qinit *st_muxrinit;
	struct qinit *st_muxwinit;
};

 



struct linkblk {
	queue_t *l_qtop;	 
				 
	queue_t *l_qbot;	 
	int	l_index;	 
};

 


typedef struct free_rtn {
	void	(*free_func)();
	caddr_t	free_arg;
} frtn_t;

 








typedef struct datab {
	frtn_t		*db_frtnp;
	unsigned char	*db_base;
	unsigned char	*db_lim;
	unsigned char	db_ref;
	unsigned char	db_type;
	unsigned char	db_flags;
	unsigned char	db_struioflag;
	void		*db_cache;	 
	struct msgb	*db_mblk;
	void		(*db_free)(struct msgb *, struct datab *);
	void		(*db_lastfree)(struct msgb *, struct datab *);

	void		*db_pad;	 

	unsigned char	*db_struiobase;
	unsigned char	*db_struiolim;
	unsigned char	*db_struioptr;
	union {
		double enforce_alignment;
		unsigned char data[8];
		unsigned u16:16;	 
		 


	} db_struioun;
	fthdr_t		*db_fthdr;
	ftflw_t		***db_ftflw;
	uid_t		db_uid;		 
	 
	uid_t		db_lid;
} dblk_t;

 


typedef struct	msgb {
	struct	msgb	*b_next;
	struct  msgb	*b_prev;
	struct	msgb	*b_cont;
	unsigned char	*b_rptr;
	unsigned char	*b_wptr;
	struct datab 	*b_datap;
	unsigned char	b_band;
	unsigned char	b_ftflag;	 
	unsigned short	b_flag;
	queue_t		*b_queue;	 
} mblk_t;

 




 








 




					 





 



 





 












 





















 





 


# 412 "/usr/include/sys/stream.h" 3

struct iocblk {
	int 	ioc_cmd;		 
	cred_t	*ioc_cr;		 
	uint_t	ioc_id;			 
	size_t	ioc_count;		 
	int	ioc_error;		 
	int	ioc_rval;		 
	int	ioc_fill1;
	uint_t	ioc_flag;		 
	int	ioc_filler[2];		 
};


typedef	struct iocblk	*IOCP;




 







 





 


# 458 "/usr/include/sys/stream.h" 3

struct copyreq {
	int	cq_cmd;			 
	cred_t	*cq_cr;			 
	uint_t	cq_id;			 
	caddr_t	cq_addr;		 
	size_t	cq_size;		 
	uint_t	cq_flag;		 
	mblk_t	*cq_private;		 
	int	cq_filler[4];		 
};





 


					 

					 
					 

 


# 495 "/usr/include/sys/stream.h" 3

struct copyresp {
	int	cp_cmd;			 
	cred_t	*cp_cr;			 
	uint_t	cp_id;			 
	caddr_t	cp_rval;		 
					 
	size_t	cp_pad1;
	uint_t	cp_pad2;
	mblk_t *cp_private;		 
	uint_t	cp_flag;		 
	int	cp_filler[3];
};





 




union ioctypes {
	struct iocblk	iocblk;
	struct copyreq	copyreq;
	struct copyresp	copyresp;
};

 




struct stroptions {
	uint_t	so_flags;		 
	short	so_readopt;		 
	ushort_t so_wroff;		 
	ssize_t	so_minpsz;		 
	ssize_t	so_maxpsz;		 
	size_t	so_hiwat;		 
	size_t	so_lowat;		 
	unsigned char so_band;		 
	ushort_t so_erropt;		 
	ssize_t	so_maxblk;		 
	ushort_t so_copyopt;		 
};

 
























# 602 "/usr/include/sys/stream.h" 3


 



 






 








 






					 

 




 





 




 





 




 





 



 




 






 









 




 




 




 



# 786 "/usr/include/sys/stream.h" 3


 


extern int nstrpush;			 






# 41 "/usr/include/netinet/in.h" 2 3


 




# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/sys/byteorder.h" 1 3



 
















 







static __inline__ unsigned long htonl (unsigned long);
static __inline__ unsigned short htons (unsigned int);
static __inline__ unsigned long ntohl (unsigned long);
static __inline__ unsigned short ntohs (unsigned int);


# 104 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/sys/byteorder.h" 3






 

static __inline__ unsigned long
htonl (unsigned long __arg)
{
  return __arg;
}

 

static __inline__ unsigned short
htons (unsigned int __arg)
{
  return __arg;
}



 

static __inline__ unsigned long
ntohl (unsigned long __arg)
{
  return htonl (__arg);
}

 

static __inline__ unsigned short
ntohs (unsigned int __arg)
{
  return htons (__arg);
}


# 48 "/usr/include/netinet/in.h" 2 3





typedef	uint16_t	in_port_t;


 












typedef	uint32_t	in_addr_t;




typedef uint32_t ipaddr_t;




struct in6_addr {
	union {
		 














		uint8_t		_S6_u8[16];	 
		uint32_t	_S6_u32[4];	 

		uint32_t	__S6_align;	 
	} _S6_un;
};







typedef struct in6_addr in6_addr_t;





typedef	unsigned short	sa_family_t;


 






























 















 










 







 






 








 






 














struct in_addr {
	union {
		struct { uint8_t s_b1, s_b2, s_b3, s_b4; } S_un_b ;
		struct { uint16_t s_w1, s_w2; } S_un_w ;

		uint32_t S_addr ;



	} S_un ;






};

 









































 








 


struct sockaddr_in {
	sa_family_t	sin_family;
	in_port_t	sin_port;
	struct	in_addr sin_addr;

	char		sin_zero[8];



};


 


struct sockaddr_in6 {
	sa_family_t	sin6_family;
	in_port_t	sin6_port;
	uint32_t	sin6_flowinfo;
	struct in6_addr	sin6_addr;
	uint32_t	sin6_scope_id;   
	uint32_t	__sin6_src_id;	 
};

 






 











 










# 357 "/usr/include/netinet/in.h" 3













 









 











































































 


















 

















 






















































 






 
















 























# 607 "/usr/include/netinet/in.h" 3


 


















 
































 






 





typedef struct ipsec_req {
	uint_t 		ipsr_ah_req;		 
	uint_t 		ipsr_esp_req;		 
	uint_t		ipsr_self_encap_req;	 
	uint8_t		ipsr_auth_alg;		 
	uint8_t		ipsr_esp_alg;		 
	uint8_t		ipsr_esp_auth_alg;	 
} ipsec_req_t;


 






 














 






 







 


struct ip_mreq {
	struct in_addr	imr_multiaddr;	 
	struct in_addr	imr_interface;	 
};

 



struct ipv6_mreq {
	struct in6_addr	ipv6mr_multiaddr;	 
	unsigned int	ipv6mr_interface;	 
};

 


struct in6_pktinfo {
	struct in6_addr		ipi6_addr;	 
	unsigned int		ipi6_ifindex;	 
};

 






 




typedef struct {
	struct in_addr	in_prefix_addr;
	unsigned int	in_prefix_len;
} in_prefix_t;


 



					 
					 

					 
					 

					 
					 

					 
					 

					 

					 
 





					 

					 


					 




					 


					 









 




					 

 



					 

					 




 




extern const struct in6_addr in6addr_any;
extern const struct in6_addr in6addr_loopback;








# 96 "/usr/include/netdb.h" 2 3


# 1 "/usr/include/sys/socket.h" 1 3
 




 
 

 
 
 




#pragma ident	"@(#)socket.h	1.53	99/11/07 SMI"	

 























# 1 "/usr/include/sys/netconfig.h" 1 3
 
 

 
 
 




#pragma ident	"@(#)netconfig.h	1.20	99/04/27 SMI"	








struct  netconfig {
	char		*nc_netid;	 
	unsigned int	nc_semantics;	 
	unsigned int	nc_flag;	 
	char		*nc_protofmly;	 
	char		*nc_proto;	 
	char		*nc_device;	 
	unsigned int	nc_nlookups;	 
	char		**nc_lookups;	 
	unsigned int	nc_unused[8];	 
};

typedef struct {
	struct netconfig **nc_head;
	struct netconfig **nc_curr;
} NCONF_HANDLE;

 








 







 




























 










extern void		*setnetconfig(void);
extern int		endnetconfig(void *);
extern struct netconfig	*getnetconfig(void *);
extern struct netconfig	*getnetconfigent(char *);
extern void		freenetconfigent(struct netconfig *);
extern void		*setnetpath(void);
extern int		endnetpath(void *);
extern struct netconfig *getnetpath(void *);
extern void		nc_perror(const char *);
extern char		*nc_sperror(void);

# 118 "/usr/include/sys/netconfig.h" 3







# 42 "/usr/include/sys/socket.h" 2 3



















typedef	uint32_t	socklen_t;





typedef	void		*Psocklen_t;




 











 














 













 





 












 









 


struct	linger {
	int	l_onoff;		 
	int	l_linger;		 
};

 




 

































 



struct sockaddr {
	sa_family_t	sa_family;	 
	char		sa_data[14];	 
};



# 1 "/usr/include/sys/un.h" 1 3
 
 

 
 
 

 

























#pragma ident	"@(#)un.h	1.9	96/07/12 SMI"	










 


struct	sockaddr_un {
	sa_family_t	sun_family;		 
	char		sun_path[108];		 
};










# 200 "/usr/include/sys/socket.h" 2 3

# 1 "/usr/include/net/if_dl.h" 1 3
 



 



































#pragma ident	"@(#)if_dl.h	1.7	98/01/06 SMI"
 





 

















 


struct sockaddr_dl {
	ushort_t sdl_family;	 
	ushort_t sdl_index;	 
	uchar_t	sdl_type;	 
	uchar_t	sdl_nlen;	 
	uchar_t	sdl_alen;	 
	uchar_t	sdl_slen;	 
	char	sdl_data[244];	 
};








# 201 "/usr/include/sys/socket.h" 2 3


 





 




 












typedef	double		sockaddr_maxalign_t;



 






struct sockaddr_storage {
	sa_family_t	ss_family;	 
	 
	char		_ss_pad1[((sizeof (sockaddr_maxalign_t))  - sizeof (sa_family_t)) ];
	sockaddr_maxalign_t _ss_align;
	char		_ss_pad2[(256  - (sizeof (sa_family_t)+ ((sizeof (sockaddr_maxalign_t))  - sizeof (sa_family_t))  + (sizeof (sockaddr_maxalign_t)) )) ];
};


 

































 




 


struct msghdr {
	void		*msg_name;		 
	socklen_t	msg_namelen;		 
	struct iovec	*msg_iov;		 
	int		msg_iovlen;		 






	caddr_t		msg_accrights;	 
	int		msg_accrightslen;

};

# 347 "/usr/include/sys/socket.h" 3





 




 





 




struct cmsghdr {
	socklen_t	cmsg_len;	 
	int		cmsg_level;	 
	int		cmsg_type;	 
};

# 382 "/usr/include/sys/socket.h" 3


# 405 "/usr/include/sys/socket.h" 3


# 428 "/usr/include/sys/socket.h" 3












extern int accept(int, struct sockaddr *, Psocklen_t);
extern int bind(int, const struct sockaddr *, socklen_t);
extern int connect(int, const struct sockaddr *, socklen_t);
extern int getpeername(int, struct sockaddr *, Psocklen_t);
extern int getsockname(int, struct sockaddr *, Psocklen_t);
extern int getsockopt(int, int, int, void *, Psocklen_t);
extern int listen(int, int);	 
extern int socketpair(int, int, int, int *);
extern ssize_t recv(int, void *, size_t, int);
extern ssize_t recvfrom(int, void *, size_t, int, struct sockaddr *,
	Psocklen_t);
extern ssize_t recvmsg(int, struct msghdr *, int);
extern ssize_t send(int, const void *, size_t, int);
extern ssize_t sendmsg(int, const struct msghdr *, int);
extern ssize_t sendto(int, const void *, size_t, int, const struct sockaddr *,
	socklen_t);
extern int setsockopt(int, int, int, const void *, socklen_t);
extern int shutdown(int, int);
extern int socket(int, int, int);
# 477 "/usr/include/sys/socket.h" 3








# 98 "/usr/include/netdb.h" 2 3
















struct	hostent {
	char	*h_name;	 
	char	**h_aliases;	 
	int	h_addrtype;	 
	int	h_length;	 
	char	**h_addr_list;	 

};


 





struct addrinfo {
	int ai_flags;		 
	int ai_family;		 
	int ai_socktype;	 
	int ai_protocol;	 
	size_t ai_addrlen;		 
	char *ai_canonname;	 
	struct sockaddr *ai_addr;	 
	struct addrinfo *ai_next;	 
};
 




 





 












 




 









 



struct	netent {
	char		*n_name;	 
	char		**n_aliases;	 
	int		n_addrtype;	 
	in_addr_t	n_net;		 
};

struct	protoent {
	char	*p_name;	 
	char	**p_aliases;	 
	int	p_proto;	 
};

struct	servent {
	char	*s_name;	 
	char	**s_aliases;	 
	int	s_port;		 
	char	*s_proto;	 
};



struct hostent	*gethostbyname_r
	(const char *, struct hostent *, char *, int, int *h_errnop);
struct hostent	*gethostbyaddr_r
	(const char *, int, int, struct hostent *, char *, int, int *h_errnop);
struct hostent	*getipnodebyname(const char *, int, int, int *);
struct hostent	*getipnodebyaddr(const void *, size_t, int, int *);
void		freehostent(struct hostent *);
struct hostent	*gethostent_r(struct hostent *, char *, int, int *h_errnop);

struct servent	*getservbyname_r
	(const char *name, const char *, struct servent *, char *, int);
struct servent	*getservbyport_r
	(int port, const char *, struct servent *, char *, int);
struct servent	*getservent_r(struct	servent *, char *, int);

struct netent	*getnetbyname_r
	(const char *, struct netent *, char *, int);
struct netent	*getnetbyaddr_r(long, int, struct netent *, char *, int);
struct netent	*getnetent_r(struct netent *, char *, int);

struct protoent	*getprotobyname_r
	(const char *, struct protoent *, char *, int);
struct protoent	*getprotobynumber_r
	(int, struct protoent *, char *, int);
struct protoent	*getprotoent_r(struct protoent *, char *, int);

int getnetgrent_r(char **, char **, char **, char *, int);
int innetgr(const char *, const char *, const char *, const char *);


 
struct hostent	*gethostbyname(const char *);
struct hostent	*gethostent(void);

struct netent *getnetbyaddr(in_addr_t, int);



struct netent	*getnetbyname(const char *);
struct netent	*getnetent(void);
struct protoent	*getprotobyname(const char *);
struct protoent	*getprotobynumber(int);
struct protoent	*getprotoent(void);
struct servent	*getservbyname(const char *, const char *);
struct servent	*getservbyport(int, const char *);
struct servent	*getservent(void);


int		 getnetgrent(char **, char **, char **);
struct hostent	*gethostbyaddr(const char *, int, int);





int endhostent(void);
int endnetent(void);
int endprotoent(void);
int endservent(void);
int sethostent(int);
int setnetent(int);
int setprotoent(int);
int setservent(int);
# 277 "/usr/include/netdb.h" 3






int setnetgrent(const char *);
int endnetgrent(void);
int rcmd(char **, unsigned short,
	const char *, const char *, const char *, int *);
int rcmd_af(char **, unsigned short,
	const char *, const char *, const char *, int *, int);
int rresvport_af(int *, int);
int rexec(char **, unsigned short,
	const char *, const char *, const char *, int *);
int rexec_af(char **, unsigned short,
	const char *, const char *, const char *, int *, int);
int rresvport(int *);
int ruserok(const char *, int, const char *, const char *);
 
struct hostent	*gethostbyname2(const char *, int);
void		herror(const char *);
const char	*hstrerror(int);
 

 
int		getaddrinfo(const char *, const char *,
			const struct addrinfo *, struct addrinfo **);
void		freeaddrinfo(struct addrinfo *);
char		*gai_strerror(int);
int		getnameinfo(const struct sockaddr *, socklen_t,
			char *, size_t, char *, size_t, int);
 



# 375 "/usr/include/netdb.h" 3


 




extern  int h_errno;









 


 












# 62 "../wh/mystdlib.h" 2























 
# 113 "../wh/mystdlib.h"









 


 
# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/errno.h" 1 3
 
 

 
 
 




#pragma ident	"@(#)errno.h	1.13	95/09/10 SMI"	

 



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

 
 
 




#pragma ident	"@(#)errno.h	1.19	98/01/14 SMI"	

 
























 




















































 


 










 



 















 










 













 
	 










				 


	 



				 





 










 








# 17 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/errno.h" 2 3











extern int errno;






extern int errno;

# 126 "../wh/mystdlib.h" 2





# 1 "/usr/local/sparc-sun-solaris2.5/include/assert.h" 1 3
 








# 19 "/usr/local/sparc-sun-solaris2.5/include/assert.h" 3




 






extern void __eprintf (const char *, const char *, unsigned, const char *)
    __attribute__ ((noreturn));









# 52 "/usr/local/sparc-sun-solaris2.5/include/assert.h" 3



# 131 "../wh/mystdlib.h" 2


 
# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/math.h" 1 3
 










#pragma ident	"@(#)math.h	2.5	95/02/07"















 


typedef union _h_val {
  	unsigned long _i[2];
	double _d;
} _h_val;


extern const _h_val __huge_val;










 
















extern int signgam;




 


enum version {libm_ieee = -1, c_issue_4, ansi_1, strict_ansi};


extern const enum version _lib_version;




struct exception {
	int type;
	char *name;
	double arg1;
	double arg2;
	double retval;
};




























 


extern double acos  (double)  ;
extern double asin  (double)  ;
extern double atan  (double)  ;
extern double atan2  (double, double)  ;
extern double cos  (double)  ;
extern double sin  (double)  ;
extern double tan  (double)  ;

extern double cosh  (double)  ;
extern double sinh  (double)  ;
extern double tanh  (double)  ;

extern double exp  (double)  ;
extern double frexp  (double, int *)  ;
extern double ldexp  (double, int)  ;
extern double log  (double)  ;
extern double log10  (double)  ;
extern double modf  (double, double *)  ;

extern double pow  (double, double)  ;
extern double sqrt  (double)  ;

extern double ceil  (double)  ;
extern double fabs  (double)  ;
extern double floor  (double)  ;
extern double fmod  (double, double)  ;



 


extern double erf  (double)  ;
extern double erfc  (double)  ;
extern double gamma  (double)  ;
extern double hypot  (double, double)  ;
extern int isnan  (double)  ;
extern double j0  (double)  ;
extern double j1  (double)  ;
extern double jn  (int, double)  ;
extern double lgamma  (double)  ;
extern double y0  (double)  ;
extern double y1  (double)  ;
extern double yn  (int, double)  ;



 


extern double acosh  (double)  ;
extern double asinh  (double)  ;
extern double atanh  (double)  ;
extern double cbrt  (double)  ;
extern double logb  (double)  ;
extern double nextafter  (double, double)  ;
extern double remainder  (double, double)  ;
extern double scalb  (double, double)  ;

 


extern double expm1  (double)  ;
extern int ilogb  (double)  ;
extern double log1p  (double)  ;
extern double rint  (double)  ;



 


extern int matherr  (struct exception *)  ;

 


extern double significand  (double)  ;

 


extern double copysign  (double, double)  ;
extern double scalbn  (double, int)  ;

 








 


extern float modff  (float, float *)  ;

# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/floatingpoint.h" 1 3
 
 

 
 
 








#pragma ident	"@(#)floatingpoint.h	2.4 94/06/09"

 




 










# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/stdio.h" 1 3
 
 

 
 
 

 






#pragma ident	"@(#)stdio.h	1.37	95/08/29 SMI"	












typedef long	fpos_t;













 


















































































typedef struct	 
{




	int		_cnt;	 
	unsigned char	*_ptr;	 

	unsigned char	*_base;	 
	unsigned char	_flag;	 
	unsigned char	_file;	 
} FILE;


extern FILE		__iob[20 ];



extern FILE		*_lastbuf;
extern unsigned char	*_bufendtab[];

extern unsigned char	 _sibuf[], _sobuf[];




extern int	remove(const char *);
extern int	rename(const char *, const char *);
extern FILE	*tmpfile(void);
extern char	*tmpnam(char *);



extern int	fclose(FILE *);
extern int	fflush(FILE *);
extern FILE	*fopen(const char *, const char *);
extern FILE	*freopen(const char *, const char *, FILE *);
extern void	setbuf(FILE *, char *);
extern int	setvbuf(FILE *, char *, int, size_t);
 
extern int	fprintf(FILE *, const char *, ...);
 
extern int	fscanf(FILE *, const char *, ...);
 
extern int	printf(const char *, ...);
 
extern int	scanf(const char *, ...);
 
extern int	sprintf(char *, const char *, ...);
 
extern int	sscanf(const char *, const char *, ...);





extern int	vfprintf(FILE *, const char *, void *);
extern int	vprintf(const char *, void *);
extern int	vsprintf(char *, const char *, void *);

extern int	fgetc(FILE *);
extern char	*fgets(char *, int, FILE *);
extern int	fputc(int, FILE *);
extern int	fputs(const char *, FILE *);
extern int	getc(FILE *);
extern int	getchar(void);
extern char	*gets(char *);
extern int	putc(int, FILE *);
extern int	putchar(int);
extern int	puts(const char *);
extern int	ungetc(int, FILE *);
extern size_t	fread(void *, size_t, size_t, FILE *);
extern size_t	fwrite(const void *, size_t, size_t, FILE *);
extern int	fgetpos(FILE *, fpos_t *);
extern int	fseek(FILE *, long, int);
extern int	fsetpos(FILE *, const fpos_t *);
extern long	ftell(FILE *);
extern void	rewind(FILE *);
extern void	clearerr(FILE *);
extern int	feof(FILE *);
extern int	ferror(FILE *);
extern void	perror(const char *);

extern int	__filbuf(FILE *);
extern int	__flsbuf(int, FILE *);

 





extern FILE	*fdopen(int, const char *);
extern char	*ctermid(char *);
extern int	fileno(FILE *);



 


# 237 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/stdio.h" 3


 




extern FILE	*popen(const char *, const char *);
extern char	*cuserid(char *);
extern char	*tempnam(const char *, const char *);
extern int	getopt(int, char *const *, const char *);

extern int	getsubopt(char **, char *const *, char **);

extern char	*optarg;
extern int	optind, opterr, optopt;
extern int	getw(FILE *);
extern int	putw(int, FILE *);
extern int	pclose(FILE *);



# 341 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/stdio.h" 3


 
































# 395 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/stdio.h" 3









# 33 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/floatingpoint.h" 2 3


# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/sys/ieeefp.h" 1 3
 






#pragma ident	"@(#)ieeefp.h	2.7 94/11/09"





 



enum fp_direction_type {	 
	fp_nearest	= 0,
	fp_tozero	= 1,
	fp_positive	= 2,
	fp_negative	= 3
};

enum fp_precision_type {	 
	fp_extended	= 0,
	fp_single	= 1,
	fp_double	= 2,
	fp_precision_3	= 3
};

enum fp_exception_type {	 
	fp_inexact	= 0,
	fp_division	= 1,
	fp_underflow	= 2,
	fp_overflow	= 3,
	fp_invalid	= 4
};

enum fp_trap_enable_type {	 
	fp_trap_inexact	= 0,
	fp_trap_division	= 1,
	fp_trap_underflow	= 2,
	fp_trap_overflow	= 3,
	fp_trap_invalid	= 4
};


# 81 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/sys/ieeefp.h" 3


# 122 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/sys/ieeefp.h" 3


enum fp_class_type {		 
	fp_zero		= 0,
	fp_subnormal	= 1,
	fp_normal	= 2,
	fp_infinity   	= 3,
	fp_quiet	= 4,
	fp_signaling	= 5
};






# 35 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/floatingpoint.h" 2 3














typedef int sigfpe_code_type;	 

typedef void (*sigfpe_handler_type)();	 





extern sigfpe_handler_type sigfpe  (sigfpe_code_type, sigfpe_handler_type)  ;

 


typedef float single;			



typedef unsigned extended[3];


typedef long double quadruple;	 

typedef unsigned fp_exception_field_type;
				 



 




typedef char decimal_string[512 ];	
				 

typedef struct {
	enum fp_class_type fpclass;
	int	sign;
	int	exponent;
	decimal_string ds;	 


	int	more;		 


	int 	ndigits;	 


} decimal_record;

enum decimal_form {
	fixed_form,		 


	floating_form		 

};

typedef struct {
	enum fp_direction_type rd;	
				 
	enum decimal_form df;	 

	int ndigits;		 
} decimal_mode;

enum decimal_string_form {	 
	invalid_form,		 
	whitespace_form,	 
	fixed_int_form,		 
	fixed_intdot_form,	 
	fixed_dotfrac_form,	 
	fixed_intdotfrac_form,	 
	floating_int_form,	 	
	floating_intdot_form,	 
	floating_dotfrac_form,	 
	floating_intdotfrac_form, 
	inf_form,		 
	infinity_form,		 
	nan_form,		 
	nanstring_form		 
};

extern void single_to_decimal  (single *, decimal_mode *, decimal_record *,
				fp_exception_field_type *)  ;
extern void double_to_decimal  (double *, decimal_mode *, decimal_record *,
				fp_exception_field_type *)  ;
extern void extended_to_decimal  (extended *, decimal_mode *,
				decimal_record *, fp_exception_field_type *)  ;
extern void quadruple_to_decimal  (quadruple *, decimal_mode *,
				decimal_record *, fp_exception_field_type *)  ;

extern void decimal_to_single  (single *, decimal_mode *, decimal_record *,
				fp_exception_field_type *)  ;
extern void decimal_to_double  (double *, decimal_mode *, decimal_record *,
				fp_exception_field_type *)  ;
extern void decimal_to_extended  (extended *, decimal_mode *,
				decimal_record *, fp_exception_field_type *)  ;
extern void decimal_to_quadruple  (quadruple *, decimal_mode *,
				decimal_record *, fp_exception_field_type *)  ;

extern void string_to_decimal  (char **, int, int, decimal_record *,
				enum decimal_string_form *, char **)  ;
extern void func_to_decimal  (char **, int, int, decimal_record *,
				enum decimal_string_form *, char **,
				int (*)(void), int *, int (*)(int))  ;
extern void file_to_decimal  (char **, int, int, decimal_record *,
				enum decimal_string_form *, char **,
				FILE *, int *)  ;

extern char *seconvert  (single *, int, int *, int *, char *)  ;
extern char *sfconvert  (single *, int, int *, int *, char *)  ;
extern char *sgconvert  (single *, int, int, char *)  ;
extern char *econvert  (double, int, int *, int *, char *)  ;
extern char *fconvert  (double, int, int *, int *, char *)  ;
extern char *gconvert  (double, int, int, char *)  ;
extern char *qeconvert  (quadruple *, int, int *, int *, char *)  ;
extern char *qfconvert  (quadruple *, int, int *, int *, char *)  ;
extern char *qgconvert  (quadruple *, int, int, char *)  ;

extern char *ecvt  (double, int, int *, int *)  ;
extern char *fcvt  (double, int, int *, int *)  ;
extern char *gcvt  (double, int, char *)  ;

 



extern double atof  (const char *)  ;
extern double strtod  (const char *, char **)  ;






# 218 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/math.h" 2 3









# 134 "../wh/mystdlib.h" 2

# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/limits.h" 1 3
 


 





 
# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/syslimits.h" 1 3
 
 

 
 
 




#pragma ident	"@(#)limits.h	1.26	95/08/24 SMI"	







 



























 



























 



























 






 































				 
















						 



						 


















 








































 








 















# 11 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/limits.h" 2 3





 



 



 




 





 



 












 





 



 








 



 









 




 








 






 









# 135 "../wh/mystdlib.h" 2

# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/float.h" 1 3
 


 

    


    


    


    


    


    


    


    


    


    


    



    


    


    


    


    


    


    


    


    



    


    


    



union __convert_long_double {
  unsigned __convert_long_double_i[4];
  long double __convert_long_double_d;
};


    


    


    


    


    


    




# 136 "../wh/mystdlib.h" 2




 








 

 





















 









 



















# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/sys/utsname.h" 1 3
 
 

 
 
 

 







#pragma ident	"@(#)utsname.h	1.24	95/07/14 SMI"	







 




# 48 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/sys/utsname.h" 3

	 


				 
				 

struct utsname {
	char	sysname[257 ];
	char	nodename[257 ];
	char	release[257 ];
	char	version[257 ];
	char	machine[257 ];
};





extern struct utsname utsname;




# 118 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/sys/utsname.h" 3



extern int uname(struct utsname *);













# 203 "../wh/mystdlib.h" 2


 





 








# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/stdlib.h" 1 3
 
 

 
 
 




#pragma ident	"@(#)stdlib.h	1.27	95/08/28 SMI"	












typedef	struct {
	int	quot;
	int	rem;
} div_t;

typedef struct {
	long	quot;
	long	rem;
} ldiv_t;


typedef struct {
	long long	quot;
	long long	rem;
} lldiv_t;




























typedef long int wchar_t;




extern unsigned char	__ctype[];



extern double atof(const char *);
extern int atoi(const char *);
extern long int atol(const char *);
extern double strtod(const char *, char **);
extern long int strtol(const char *, char **, int);
extern unsigned long int strtoul(const char *, char **, int);

extern int rand(void);
extern void srand(unsigned int);





extern void *calloc(size_t, size_t);
extern void free(void *);
extern void *malloc(size_t);
extern void *realloc(void *, size_t);

extern void abort(void);
extern int atexit(void (*)(void));
extern void exit(int);
extern char *getenv(const char *);
extern int system(const char *);

extern void *bsearch(const void *, const void *, size_t, size_t,
	int (*)(const void *, const void *));
extern void qsort(void *, size_t, size_t,
	int (*)(const void *, const void *));

extern int abs(int);
extern div_t div(int, int);
extern long int labs(long);
extern ldiv_t ldiv(long, long);

extern int mbtowc(wchar_t *, const char *, size_t);
extern int mblen(const char *, size_t);
extern int wctomb(char *, wchar_t);

extern size_t mbstowcs(wchar_t *, const char *, size_t);
extern size_t wcstombs(char *, const wchar_t *, size_t);





extern double drand48(void);
extern double erand48(unsigned short *);
extern long jrand48(unsigned short *);
extern void lcong48(unsigned short *);
extern long lrand48(void);
extern long mrand48(void);
extern long nrand48(unsigned short *);
extern unsigned short *seed48(unsigned short *);
extern void srand48(long);
extern int putenv(const char *);
extern void setkey(const char *);






extern void swab(const char *, char *, int);





extern long a64l(const char *);
extern int dup2(int, int);
extern char *ecvt(double, int, int *, int *);
extern char *fcvt(double, int, int *, int *);
extern char *qecvt(long double, int, int *, int *);
extern char *qfcvt(long double, int, int *, int *);
extern char *qgcvt(long double, int, char *);
extern char *getcwd(char *, size_t);
extern char *getlogin(void);
extern int getopt(int, char *const *, const char *);
extern int getsubopt(char **, char *const *, char **);
extern char *optarg;
extern int optind, opterr, optopt;
extern char *getpass(const char *);
extern int getpw(uid_t, char *);
extern char *gcvt(double, int, char *);
extern int isatty(int);
extern char *l64a(long);
extern void *memalign(size_t, size_t);
extern char *mktemp(char *);
extern char *realpath(char *, char *);
extern char *ttyname(int);
extern int ttyslot(void);
extern void *valloc(size_t);
extern char *ptsname(int);
extern int  grantpt(int);
extern int  unlockpt(int);


extern long long atoll(const char *);
extern long long llabs(long long);
extern lldiv_t lldiv(long long, long long);
extern char *lltostr(long long, char *);
extern long long strtoll(const char *, char **, int);
extern unsigned long long strtoull(const char *, char **, int);
extern char *ulltostr(unsigned long long, char *);




# 282 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/stdlib.h" 3







# 220 "../wh/mystdlib.h" 2

# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/string.h" 1 3
 
 

 
 
 




#pragma ident	"@(#)string.h	1.17	95/08/28 SMI"	


















extern void *memcpy(void *, const void *, size_t);
extern void *memmove(void *, const void *, size_t);
extern char *strcpy(char *, const char *);
extern char *strncpy(char *, const char *, size_t);

extern char *strcat(char *, const char *);
extern char *strncat(char *, const char *, size_t);

extern int memcmp(const void *, const void *, size_t);
extern int strcmp(const char *, const char *);
extern int strcoll(const char *, const char *);
extern int strncmp(const char *, const char *, size_t);
extern size_t strxfrm(char *, const char *, size_t);

extern void *memchr(const void *, int, size_t);
extern char *strchr(const char *, int);
extern size_t strcspn(const char *, const char *);
extern char *strpbrk(const char *, const char *);
extern char *strrchr(const char *, int);
extern size_t strspn(const char *, const char *);
extern char *strstr(const char *, const char *);
extern char *strtok(char *, const char *);




extern void *memset(void *, int, size_t);
extern char *strerror(int);
extern size_t strlen(const char *);




extern void *memccpy(void *, const void *, int, size_t);






extern char *strdup(const char *);
extern char *strsignal(int);
extern int ffs(const int);
extern int strcasecmp(const char *, const char *);
extern int strncasecmp(const char *, const char *, size_t);



# 119 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/string.h" 3







# 221 "../wh/mystdlib.h" 2


# 1 "/usr/include/fcntl.h" 1 3
 




 
 

 
 
 




#pragma ident	"@(#)fcntl.h	1.14	97/12/05 SMI"	







# 1 "/usr/include/sys/fcntl.h" 1 3
 
 

 
 
 

 







#pragma ident	"@(#)fcntl.h	1.45	98/07/17 SMI"	









 















				 









 







 










 



# 89 "/usr/include/sys/fcntl.h" 3












 










				 

 






 












# 154 "/usr/include/sys/fcntl.h" 3





 



 
typedef struct flock {
	short	l_type;
	short	l_whence;
	off_t	l_start;
	off_t	l_len;		 
	int	l_sysid;
	pid_t	l_pid;
	long	l_pad[4];		 
} flock_t;

# 188 "/usr/include/sys/fcntl.h" 3


 

# 232 "/usr/include/sys/fcntl.h" 3


# 244 "/usr/include/sys/fcntl.h" 3


 







 






 







 


typedef struct fshare {
	short	f_access;
	short	f_deny;
	int	f_id;
} fshare_t;

 






 














# 24 "/usr/include/fcntl.h" 2 3






# 47 "/usr/include/fcntl.h" 3


 
# 58 "/usr/include/fcntl.h" 3


# 68 "/usr/include/fcntl.h" 3




extern int fcntl(int, int, ...);
extern int open(const char *, int, ...);
extern int creat(const char *, mode_t);


extern int directio(int, int);


 






# 104 "/usr/include/fcntl.h" 3







# 223 "../wh/mystdlib.h" 2



# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/sys/stat.h" 1 3
 
 

 
 
 




#pragma ident	"@(#)stat.h	1.26	95/08/14 SMI"	












 



# 70 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/sys/stat.h" 3


	 

struct	stat {
	dev_t	st_dev;
	long	st_pad1[3];	 
	ino_t	st_ino;
	mode_t	st_mode;
	nlink_t st_nlink;
	uid_t 	st_uid;
	gid_t 	st_gid;
	dev_t	st_rdev;
	long	st_pad2[2];
	off_t	st_size;
	long	st_pad3;	 
	timestruc_t st_atim;
	timestruc_t st_mtim;
	timestruc_t st_ctim;
	long	st_blksize;
	long	st_blocks;
	char	st_fstype[16 ];
	long	st_pad4[8];	 
};














 

 






















 
























 







extern int fstat(int, struct stat *);
extern int stat(const char *, struct stat *);


extern int lstat(const char *, struct stat *);
extern int mknod(const char *, mode_t, dev_t);



extern int fchmod(int, mode_t);


extern int chmod(const char *, mode_t);
extern int mkdir(const char *, mode_t);
extern int mkfifo(const char *, mode_t);
extern mode_t umask(mode_t);

# 195 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/sys/stat.h" 3








# 226 "../wh/mystdlib.h" 2




# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/signal.h" 1 3
 
 

 
 
 




#pragma ident	"@(#)signal.h	1.27	95/08/30 SMI"	



# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/sys/signal.h" 1 3
 
 

 
 
 

 







#pragma ident	"@(#)signal.h	1.44	95/03/16 SMI"	















































 


extern long _sysconf(int);	 



# 89 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/sys/signal.h" 3


























 






typedef struct {		 
	unsigned long	__sigbits[4];
} sigset_t;

typedef	struct {
	unsigned long	__sigbits[2];
} k_sigset_t;

 










struct  sigaction  {
	int sa_flags;
	union {



		void (*_handler)();




		void (*_sigaction)(int, siginfo_t *, void *);

	}	_funcptr;
	sigset_t sa_mask;
	int sa_resv[2];
};



 






			 

 














 


 


 





			 
			 
			 












struct sigaltstack {
	char	*ss_sp;
	int	ss_size;
	int	ss_flags;
};

typedef struct sigaltstack stack_t;



# 287 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/sys/signal.h" 3







# 15 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/signal.h" 2 3






typedef int	sig_atomic_t;



extern const char	**_sys_siglistp;	 
extern const int	_sys_siglistn;		 










extern void (*signal(int, void (*)(int)))(int);

extern int raise(int);




extern int kill(pid_t, int);
extern int sigaction(int, const struct sigaction *, struct sigaction *);

extern int sigaddset(sigset_t *, int);


extern int sigdelset(sigset_t *, int);


extern int sigemptyset(sigset_t *);


extern int sigfillset(sigset_t *);


extern int sigismember(const sigset_t *, int);

extern int sigpending(sigset_t *);
extern int sigprocmask(int, const sigset_t *, sigset_t *);
extern int sigsuspend(const sigset_t *);




# 1 "/usr/include/sys/procset.h" 1 3
 




 
 

 
 
 




#pragma ident	"@(#)procset.h	1.19	99/07/12 SMI"	








 










 




typedef enum

	idtype		 

		{
	P_PID,		 
	P_PPID,		 
	P_PGID,		 
			 
	P_SID,		 
	P_CID,		 
	P_UID,		 
	P_GID,		 
	P_ALL,		 
	P_LWPID		 
} idtype_t;


 





typedef enum idop {
	POP_DIFF,	 
			 
			 
	POP_AND,	 
			 
			 
	POP_OR,		 
			 
			 
	POP_XOR		 
			 
			 
} idop_t;


 




typedef struct procset {
	idop_t		p_op;	 
				 
				 
				 

	idtype_t	p_lidtype;
				 
				 
	id_t		p_lid;	 

	idtype_t	p_ridtype;
				 
				 
	id_t		p_rid;	 
} procset_t;

 












# 127 "/usr/include/sys/procset.h" 3







# 68 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/signal.h" 2 3

extern int gsignal(int);
extern void (*sigset(int, void (*)(int)))(int);
extern int sighold(int);
extern int sigrelse(int);
extern int sigignore(int);
extern int sigpause(int);
extern int (*ssignal(int, int (*)(int)))(int);
extern int sigaltstack(const stack_t *, stack_t *);
extern int sigsend(idtype_t, id_t, int);
extern int sigsendset(const procset_t *, int);
extern int sig2str(int, char *);
extern int str2sig(const char *, int *);








extern int sigwaitinfo(const sigset_t *, siginfo_t *);
extern int sigtimedwait(const sigset_t *, siginfo_t *, const struct timespec *);
extern int sigqueue(pid_t, int, const union sigval);


# 149 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/signal.h" 3


 









# 176 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/signal.h" 3


extern int sigwait(sigset_t *);




# 209 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/signal.h" 3









# 230 "../wh/mystdlib.h" 2

# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/unistd.h" 1 3
 
 

 
 
 




#pragma ident	"@(#)unistd.h	1.33	95/08/28 SMI"	










 













 















 




 














 























extern int access(const char *, int);


extern int acct(const char *);

extern unsigned alarm(unsigned);


extern int brk(void *);

extern int chdir(const char *);
extern int chown(const char *, uid_t, gid_t);

extern int chroot(const char *);

extern int close(int);







extern char *ctermid(char *);

extern char *cuserid(char *);
extern int dup(int);
extern int dup2(int, int);




extern int execl(const char *, const char *, ...);
extern int execle(const char *, const char *, ...);
extern int execlp(const char *, const char *, ...);
extern int execv(const char *, char *const *);
extern int execve(const char *, char *const *, char *const *);
extern int execvp(const char *, char *const *);
extern void _exit(int);


extern int fattach(int, const char *);
extern int fchdir(int);
extern int fchown(int, uid_t, gid_t);
extern int fchroot(int);



extern int fdatasync(int);



extern int fdetach(const char *);

extern pid_t fork(void);


extern pid_t fork1(void);

extern long fpathconf(int, int);


extern int fsync(int);



extern int ftruncate(int, off_t);

extern char *getcwd(char *, size_t);
extern gid_t getegid(void);
extern uid_t geteuid(void);
extern gid_t getgid(void);
extern int getgroups(int, gid_t *);
extern char *getlogin(void);









extern pid_t getpgid(pid_t);

extern pid_t getpid(void);
extern pid_t getppid(void);
extern pid_t getpgrp(void);


char *gettxt(const char *, const char *);



extern pid_t getsid(pid_t);

extern uid_t getuid(void);


extern int ioctl(int, int, ...);

extern int isatty(int);
extern int link(const char *, const char *);


extern int lchown(const char *, uid_t, gid_t);
extern offset_t llseek(int, offset_t, int);
extern int lockf(int, int, long);

extern off_t lseek(int, off_t, int);


extern int mincore(caddr_t, size_t, char *);


extern int nice(int);

extern long pathconf(const char *, int);
extern int pause(void);
extern int pipe(int *);


extern ssize_t pread(int, void *, size_t, off_t);
extern void profil(unsigned short *, size_t, int, unsigned);
extern int ptrace(int, pid_t, int, int);
extern ssize_t pwrite(int, const void *, size_t, off_t);

extern ssize_t read(int, void *, unsigned);


extern int readlink(const char *, void *, int);



extern int rename(const char *, const char *);

extern int rmdir(const char *);


extern void *sbrk(int);

extern int setgid(gid_t);


extern int setegid(gid_t);



extern int setgroups(int, const gid_t *);

extern int setpgid(pid_t, pid_t);


extern pid_t setpgrp(void);

extern pid_t setsid(void);
extern int setuid(uid_t);


extern int seteuid(uid_t);

extern unsigned sleep(unsigned);


extern int stime(const time_t *);







extern int symlink(const char *, const char *);
extern void sync(void);

extern long sysconf(int);
extern pid_t tcgetpgrp(int);
extern int tcsetpgrp(int, pid_t);


extern int truncate(const char *, off_t);

extern char *ttyname(int);
extern int unlink(const char *);


extern pid_t vfork(void);
extern void vhangup(void);

extern ssize_t write(int, const void *, unsigned);


extern void yield(void);


# 448 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/unistd.h" 3


 







#pragma unknown_control_flow(vfork)




 


# 540 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/unistd.h" 3







# 231 "../wh/mystdlib.h" 2








typedef size_t mysize_t;
 
typedef off_t myoff_t;
typedef mysize_t myFile_t;




# 267 "../wh/mystdlib.h"



 

# 382 "../wh/mystdlib.h"

 
 
 




 






 

int lockf(int filedes, int request, off_t size );
int gethostname(char *name, int namelen);


 

# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/stdarg.h" 1 3
 




























# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/va-sparc.h" 1 3
 


 




# 19 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/va-sparc.h" 3






 

typedef void * __gnuc_va_list;




 





# 50 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/va-sparc.h" 3

 










# 89 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/va-sparc.h" 3



void va_end (__gnuc_va_list);		 

 

enum __va_type_classes {
  __no_type_class = -1,
  __void_type_class,
  __integer_type_class,
  __char_type_class,
  __enumeral_type_class,
  __boolean_type_class,
  __pointer_type_class,
  __reference_type_class,
  __offset_type_class,
  __real_type_class,
  __complex_type_class,
  __function_type_class,
  __method_type_class,
  __record_type_class,
  __union_type_class,
  __array_type_class,
  __string_type_class,
  __set_type_class,
  __file_type_class,
  __lang_type_class
};




 




 




# 176 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/va-sparc.h" 3





 

 



# 201 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/va-sparc.h" 3



# 30 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/stdarg.h" 2 3

# 100 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/stdarg.h" 3








 
 














 










typedef __gnuc_va_list va_list;

# 169 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.5/2.7.2/include/stdarg.h" 3






# 405 "../wh/mystdlib.h" 2










  
 int vsprintf (char *buffer, const char *format, va_list arglist);


 

# 452 "../wh/mystdlib.h"


 

# 468 "../wh/mystdlib.h"


 


 











 
# 51 "../wh/regular.h" 2

# 1 "../wh/aceiotypes.h" 1
 


































typedef struct AceInStruct *ACEIN ;
typedef struct AceOutStruct *ACEOUT ;
typedef struct AceTmpStruct *ACETMP ;




# 52 "../wh/regular.h" 2

# 1 "../wh/strsubs.h" 1
 

































int strNumWords(char *string) ;




# 53 "../wh/regular.h" 2



 
 
 





 
 
 

 

















 

typedef enum {FALSE=0,TRUE=1} BOOL ;



 








 

typedef unsigned char UCHAR ;  

 
 
 
 
typedef unsigned int KEY ;



typedef void (*VoidRoutine)(void) ;
typedef void (*Arg1Routine)(void *arg1) ;

 



 




typedef char* magic_t;


 





 
 
 





 
 
 
 


typedef struct _STORE_HANDLE_STRUCT *STORE_HANDLE ;  

 
STORE_HANDLE handleHandleCreate_dbg (STORE_HANDLE handle,
				     const char *hfname, int hlineno) ;
void *halloc_dbg(int size, STORE_HANDLE handle,
		 const char *hfname, int hlineno) ;
void *handleAlloc_dbg(void (*final)(void *), STORE_HANDLE handle, int size,
		      const char *hfname, int hlineno) ;
char *strnew_dbg(char *old, STORE_HANDLE handle,
		 const char *hfname, int hlineno) ;
void uMessFree (void *cp) ;

 

 





 
 
 
 
 
 
 
 
 

 


 





 








 







 




 





void blockSetFinalise(void *block, void (*final)(void *)) ;

 


void handleSetFinalise(STORE_HANDLE handle, void (*final)(void *), void *arg);

 
void handleInfo (STORE_HANDLE handle, int *number, int *size) ;
void messalloccheck (void) ;	 

int messAllocStatus (int *np) ;  



 
 


 
 
 
void utilsInit(void) ;


 
 
 
 
 
extern uid_t ruid, euid ;

char *getLogin (BOOL isReal) ;

 
char *getSystemName(void) ;

 


char *getUserHomeDir (char *user_name, STORE_HANDLE h);

 

BOOL getCmdLineOption (int *argcp, char **argv,
		       char *arg_name, char **arg_val);

 
 
 
void checkCmdLineForSleep(int *argcp, char **argv) ;


 
 

 
 
 
 
 
 
 









 
 
 
 
 
 
 

 
 
 





typedef struct freestruct
  { KEY  key ;
    char *text ;
  } FREEOPT ;

void freeinit (void) ;
int freeCurrLevel(void) ;			     
char* freecard (int level) ;	 
void freecardback (void) ;   
void freeforcecard (char *string);
int  freesettext (char *string, char *parms) ;  
int  freesetfile (FILE *fil, char *parms) ;
int  freesetpipe (FILE *fil, char *parms) ;   
void freeclose(int level) ;  
void freespecial (char *set) ;	 
BOOL freeread (FILE *fil) ;	 
int  freeline (FILE *fil) ;	 
int  freestreamline (int level) ; 
char *freeword (void) ;







char *freewordcut (char *cutset, char *cutter) ;
void freeback (void) ;		 
BOOL freeint (int *p) ;
BOOL freefloat (float *p) ;
BOOL freedouble (double *p) ;
BOOL freekey (KEY *kpt, FREEOPT *options) ;
BOOL freekeymatch (char *text, KEY *kpt, FREEOPT *options) ;
void freemenu (void (*proc)(KEY), FREEOPT *options) ;
char *freekey2text (KEY k, FREEOPT *o)  ;   
BOOL freeselect (KEY *kpt, FREEOPT *options) ;
BOOL freelevelselect (int level,
				    KEY *kpt, FREEOPT *options);
void freedump (FREEOPT *options) ;
BOOL freestep (char x) ;
void freenext (void) ;
BOOL freeprompt (char *prompt, char *dfault, char *fmt) ; 
BOOL freecheck (char *fmt) ;	 
int  freefmtlength (char *fmt) ;
BOOL freequery (char *query) ;
char *freepos (void) ;		 
char *freeprotect (char* text) ;  
char* freeunprotect (char *text) ;  

extern char FREE_UPPER[] ;


extern char FREE_LOWER[] ;





 
 
 

 
void uMessSetErrorOrigin(const char *filename, int line_num) ;
void uMessCrash(char *format, ...) ;

 
 
 
 
 
 
 
 
 
 
 
 

void messSetMsgInfo(char *progname, char *progversion,
		    char *userid, char *machineid) ;  

char *messGetErrorProgram (void) ;  


char *messprintf (char *format, ...) ;	  
				 
				 

 
char *hprintf(STORE_HANDLE handle, char *format, ...);


void messout (char *format, ...) ;			     
void messerror (char *format, ...) ;			     
void messExit(char *format, ...) ;			     


							     
BOOL messQuery (char *text,...) ;			     
ACEIN messPrompt (char *prompt, char *dfault, char *fmt, 
		  STORE_HANDLE handle) ;
	 



void messdump (char *format, ...) ;  
void messbeep (void) ;  
BOOL messIsInterruptCalled (void);
	 
void messStatus (char* text);
	 



 
 
 
 
 
 
 
 
 
typedef void (*OutRoutine)(char *message, void *user_pointer);
typedef BOOL (*QueryRoutine)(char *question) ;
typedef ACEIN (*PromptRoutine)(char*, char*, char*, STORE_HANDLE) ;
typedef BOOL (*IsInterruptRoutine)(void) ;

struct messContextStruct {
  OutRoutine user_func;
  void *user_pointer;
};

struct messContextStruct  messOutRegister (struct messContextStruct outContext);
struct messContextStruct  messErrorRegister (struct messContextStruct errorContext);
struct messContextStruct  messExitRegister (struct messContextStruct exitContext);
struct messContextStruct  messCrashRegister (struct messContextStruct crashContext);
struct messContextStruct  messDumpRegister (struct messContextStruct  dumpContext) ;
struct messContextStruct  messStatusRegister (struct messContextStruct  statusContext);
QueryRoutine	   messQueryRegister (QueryRoutine func) ;
PromptRoutine	   messPromptRegister (PromptRoutine func) ;
VoidRoutine	   messBeepRegister (VoidRoutine func) ;
IsInterruptRoutine messIsInterruptRegister (IsInterruptRoutine func) ;


 

char* messSysErrorText (void) ; 
	 

char* messErrnoText (int error) ;
 

int messErrorCount (void);
	 


 
 
 
 
 
 
 
 
   






jmp_buf* messCatchError (jmp_buf* ) ;			     
jmp_buf* messCatchCrash (jmp_buf* ) ;			     
char*	 messCaughtMessage (void) ;			     




 
 
 

 
# 1 "../wh/array.h" 1
 




































 
unsigned int stackused (void) ;
 
 

 






 

typedef struct ArrayStruct
  { char* base ;     
    int   dim ;      
    int   size ;
    int   max ;      
    int   id ;       
    int   magic ;
  } *Array ;
 
     







Array   uArrayCreate_dbg (int n, int size, STORE_HANDLE handle,
			    const char *hfname,int hlineno) ;
void    arrayExtend_dbg (Array a, int n, const char *hfname,int hlineno) ;
Array	arrayCopy_dbg(Array a, STORE_HANDLE handle, const char *hfname,int hlineno) ; 
Array   uArrayReCreate_dbg (Array a, int n, int size, const char *hfname,int hlineno) ;
void    uArrayDestroy_dbg (Array a,
			   const char *hfname, int hlineno);
char    *uArray_dbg (Array a, int index,
		     const char *hfname, int hlineno);
char    *uArrCheck_dbg (Array a, int index,
			const char *hfname, int hlineno) ;
char    *uArrayCheck_dbg (Array a, int index,
			  const char *hfname, int hlineno) ;
























      

Array   arrayTruncatedCopy_dbg (Array a, int x1, int x2,
				const char *hfname, int hlineno) ;


void    arrayStatus (int *nmadep,int* nusedp, int *memAllocp, int *memUsedp) ;
int     arrayReportMark (void) ;  
void    arrayReport (int j) ;	 



             
typedef int array_order (void*, void*);
              
BOOL    arrayInsert(Array a, void * s, array_order *order);
BOOL    arrayRemove(Array a, void * s, array_order *order);
void    arraySort(Array a,  array_order *order) ;
void    arraySortPos (Array a, int pos, array_order *order);
void    arrayCompress(Array a) ;
BOOL    arrayFind(Array a, void *s, int *ip, array_order *order);
BOOL    arrayIsEntry_dbg(Array a, int i, void *s,
			 const char *hfname, int hlineno);


 
 
typedef struct StackStruct       
  { Array a ;
    int magic ;
    char* ptr ;          
    char* pos ;          

    char* safe ;         
    BOOL  textOnly;  




   
  } *Stack ;
 
         


Stack   stackHandleCreate_dbg (int n, STORE_HANDLE handle,
			       const char *hfname, int hlineno) ;



Stack   stackReCreate_dbg (Stack s, int n,
			   const char *hfname, int hlineno);


Stack   stackCopy_dbg (Stack, STORE_HANDLE handle,
		       const char *hfname, int hlineno);


void    stackTextOnly(Stack s);

void    uStackDestroy (Stack s);


void    stackExtend_dbg (Stack s, int n,
			 const char *hfname, int hlineno) ;


void    stackClear (Stack s) ;




 









 
   

# 207 "../wh/array.h"




















void uStackDoublePush(Stack stk, double x);
double uStackDoublePop(Stack stk);
double uStackDoubleNext(Stack stk);










void    pushText (Stack s, char *text) ;
char*   popText (Stack s) ;	 
void    catText (Stack s, char *text) ;   
void	stackTokeniseTextOn(Stack s, char *text, char *delimiters) ;  

int     stackMark (Stack s) ;               
int     stackPos (Stack s) ;               
void    stackCursor (Stack s, int mark) ;   

char*   stackNextText (Stack s) ;
 
char *stackText_dbg (Stack s, int mark, const char *hfname, int hlineno);





void    catBinary (Stack s, char* data, int size) ;
 
 
 
int     uLinesText (char *text, int width) ;
char    *uNextLine (char *text) ;
char    *uPopLine (char *text) ;
char    **uBrokenLines (char *text, int width) ;  
char    *uBrokenText (char *text, int width) ;  

 

typedef struct AssStruct
  { int magic ;                  
    int id ;                     
    int n ;			 
    int m ;			 
    int i ;                      
    void **in,**out ;
    unsigned int mask ;		 
  } *Associator ; 
 


Associator assHandleCreate_dbg (STORE_HANDLE handle,
				const char *hfname, int hlineno) ;
Associator assBigCreate_dbg (int size,
			     const char *hfname, int hlineno) ;
Associator assReCreate_dbg (Associator a,
			    const char *hfname, int hlineno) ;






void    uAssDestroy (Associator a) ;

BOOL    uAssFind (Associator a, void* xin, void* *pout) ;
BOOL    uAssFindNext(Associator a, void* xin, void * *pout);

             

BOOL    assInsert (Associator a, void* xin, void* xout) ;
             
void    assMultipleInsert(Associator a, void* xin, void* xout);
            
BOOL    assRemove (Associator a, void* xin) ;
             
BOOL    assPairRemove (Associator a, void* xin, void* xout) ;
             
void    assDump (Associator a) ;
            
void    assClear (Associator a) ;
BOOL    uAssNext (Associator a, void* *pin, void* *pout) ;

 





 

 
# 489 "../wh/regular.h" 2


 
 
 

 
char *filGetFullPath (char *dir, STORE_HANDLE handle);

 
 
char *filGetFilename(char *path);

 
 
char *filGetExtension(char *path);

char *filName (char *name, char *ending, char *spec) ;
BOOL filCheckName(char *name, char *ending, char *spec);
char *filGetName(char *name, char *ending, 
		 char *spec, STORE_HANDLE handle);

 
BOOL  filAge (char *name, char *ending,
	      int *diffYears, int *diffMonths, int *diffDays,
	      int *diffHours, int *diffMins, int *diffSecs);

FILE *filopen (char *name, char *ending, char *spec) ;
FILE *filmail (char *address) ;
void filclose (FILE* fil) ;

BOOL filremove (char *name, char *ending) ;
BOOL filCopyFile (char *existingFile, char *newFile) ;

FILE *filtmpopen (char **nameptr, char *spec) ;
FILE *filTmpOpenWithSuffix (char **nameptr, char *suffix, char *spec);
BOOL filtmpremove (char *name) ;
void filtmpcleanup (void) ;

 
typedef FILE* (*QueryOpenRoutine)(char*, char*, char*, char*, char*) ;
QueryOpenRoutine filQueryOpenRegister (QueryOpenRoutine newRoutine);
		 

FILE *filqueryopen (char *dirname, char *filname,
		    char *ending, char *spec, char *title);

	 



 
 
 
typedef struct FilDirStruct {
  Array entries;
  STORE_HANDLE handle;
} *FilDir;

 




FilDir filDirHandleCreate (char *dirName,
			   char *ending, 
			   char *spec,
			   STORE_HANDLE handle);


FilDir filDirHandleCopy (FilDir fd, STORE_HANDLE handle);


 








 

 

int utArrondi (float x) ;
int utMainPart (float p) ;
int utMainRoundPart (float p) ;
double utDoubleMainPart (double p) ;

 

double randfloat (void) ;
double randgauss (void) ;
int randint (void) ;
void randsave (int *num_arr) ;
void randrestore (int *num_arr) ;


 
 
 

void invokeDebugger(void) ;


 
int regExpMatch (char *text,char *REtemplate) ;


 
 

















 
# 41 "freesubs.c" 2

# 1 "../wh/version.h" 1
 





































 
 


 
 
 
 
 
 
 
char *utAppGetCompileDate(void) ;
 
 
 
 
 
 
 
 
 
 







 
 
 
 
 
 
 
 

 
 
 
 



 
 
 
 
 



 
 
 




 
 
 
 
 
 
 
 
 
 
 
 
 

# 123 "../wh/version.h"



# 135 "../wh/version.h"



# 42 "freesubs.c" 2



 
 








static const char *ut_copyright_string = "@(#) \n" "@(#) --------------------------------------------------------------------------\n" "@(#) Title/Version:  "  "Free library"    " - " "1"   "." "1"   "." "2"   "\n" "@(#)      Compiled:  ""May 17 2001"" ""15:47:53""\n" "@(#)   Description:  "   "Sanger Centre Informatics utilities library."  "\n" "@(#) Copyright (c):  J Thierry-Mieg and R Durbin, 1998 \n" "@(#) \n" "@(#) This file contains the above Sanger Informatics Group library, \n" "@(#) written by   Richard Durbin (Sanger Centre, UK) rd@sanger.ac.uk \n" "@(#)              Jean Thierry-Mieg (CRBM du CNRS, France) mieg@kaa.crbm.cnrs-mop.fr \n" "@(#)              Ed Griffiths (Sanger Centre, UK) edgrif@sanger.ac.uk \n" "@(#)              Fred Wobus (Sanger Centre, UK) fw@sanger.ac.uk \n" "@(#) You may redistribute this software subject to the conditions in the \n" "@(#) accompanying copyright file. Anyone interested in obtaining an up to date \n" "@(#) version should contact one of the authors at the above email addresses. \n"  "@(#) --------------------------------------------------------------------------\n" "@(#) \n" ; 


 


BOOL isInteractive = TRUE ;       

 


typedef struct
  { FILE *fil ;
    char *text ;
    char special[24] ;
    int npar ;
    int parMark[80 ] ;
    int line ;
    BOOL isPipe ;
  } STREAM ;
static STREAM   stream[80 ] ;
static int	streamlevel ;
static FILE	*currfil ;	 
static char	*currtext ;	 
static Stack    parStack ;
static int	maxcard = 1024 ;
static unsigned char *card, *word, *cardEnd, *pos ;
static Associator filAss ;
 



 
 
 
void freeinit (void)
{ static BOOL isInitialised = FALSE ;
  
  if (!isInitialised)
    { streamlevel = 0 ;
      currtext = 0 ;
      stream[streamlevel].fil = currfil = (&__iob[0])  ;
      stream[streamlevel].text = 0 ;
      freespecial ("\n\t\\/@%") ;
      card = (unsigned char *) halloc_dbg( maxcard , 0, "freesubs.c", 99)  ;
      cardEnd = &card[maxcard-1] ;
      pos = card ;
      word = (unsigned char *) halloc_dbg( maxcard , 0, "freesubs.c", 102)  ;
      filAss = assHandleCreate_dbg(0, "freesubs.c", 103)  ;
      parStack = stackHandleCreate_dbg( 128 , 0, "freesubs.c", 104)  ;
      isInitialised = TRUE ;
    }
}

 

 
 
int freeCurrLevel(void)
  {
  return streamlevel ;
  }

 

static void freeExtend (unsigned char **pin)
{	 
  unsigned char *oldCard = card ;

  maxcard *= 2 ;
  card = (unsigned char *) halloc_dbg( maxcard , 0, "freesubs.c", 125)  ;
  if (oldCard)      
    memcpy (card, oldCard, maxcard/2) ;
  cardEnd = &card[maxcard-1] ;
  *pin += (card - oldCard) ;
  (( oldCard ) ? uMessFree((void*)( oldCard )),( oldCard )=0,TRUE : FALSE)  ;
  (( word ) ? uMessFree((void*)( word )),( word )=0,TRUE : FALSE)  ;
  word = (unsigned char *) halloc_dbg( maxcard , 0, "freesubs.c", 132)  ;
}
 
 

static char special[256] ;

void freespecial (char* text)
{
  if (!text)
    uMessSetErrorOrigin("freesubs.c", 142),uMessCrash  ("freespecial received 0 text") ;
  if (strlen(text) > 23)
    uMessSetErrorOrigin("freesubs.c", 144),uMessCrash  ("freespecial received a string longer than 23") ;
  if (text != stream[streamlevel].special)
    strcpy (stream[streamlevel].special, text) ;
  memset (special, 0, (mysize_t) 256) ;
  while (*text)
    special [((int) *text++) & 0xFF] = TRUE ;
  special[0] = TRUE ;
  special[(unsigned char)(-1) ] = TRUE ;		 
}
 
 
 
void freeforcecard (char *string)
{ int level = freesettext (string, "") ;
  freespecial ("") ;
  freecard (level) ;
}
 
 
 
char* freecard (int level)	 
{ 
  unsigned char *in,ch,*cp ;
  int kpar ;
  int isecho = FALSE ;		 
  FILE *fil ;
  BOOL acceptShell, acceptCommand ;

restart :
  if (level > streamlevel)
    return 0 ;

  if (isecho)
    printf (!currfil ? "From text >" : "From file >") ;
  in = card ; --in ;

  acceptCommand = special['@'] ;
  acceptShell = special['$'] ;
 
  while (TRUE)
    { if (++in >= cardEnd)
	freeExtend (&in) ;

      *in = (currfil ? (--( currfil )->_cnt < 0 ? __filbuf( currfil ) : (int)*( currfil )->_ptr++)  : *currtext++)  ;
    lao:
      if (special[((int) *in) & 0xFF] && *in != '$' && *in != '@' )
	switch (*in)
	  {




	  case '\n':		 
	  case ';':		 
	    goto got_line ;
	  case (unsigned char) (-1) :
	  case '\0':
	    freeclose(streamlevel) ;
	    goto got_line;
	  case '\t':      
	    if (isecho)	 
	      (--(  (&__iob[1])  )->_cnt < 0 ? __flsbuf((unsigned char) ( ( *in ) ), (  (&__iob[1])  )) : (int)(*(  (&__iob[1])  )->_ptr++ = ( ( *in ) )))   ;
            *in++ = ' ' ;
            while ((in - card) % 8)
              { if (in >= cardEnd)
                  freeExtend (&in) ;
                *in++ = ' ' ;
              }
	    --in ;
	    continue ;  
	  case '/':		 
	    if ((ch = (currfil ? (--( currfil )->_cnt < 0 ? __filbuf( currfil ) : (int)*( currfil )->_ptr++)  : *currtext++) ) == '/')
	      { while ((ch = (currfil ? (--( currfil )->_cnt < 0 ? __filbuf( currfil ) : (int)*( currfil )->_ptr++)  : *currtext++) ) != '\n' && ch != (unsigned char)(-1) ) ;
		goto got_line ;
	      }
	    else
	      { if (isecho) (--(  (&__iob[1])  )->_cnt < 0 ? __flsbuf((unsigned char) ( ( *in ) ), (  (&__iob[1])  )) : (int)(*(  (&__iob[1])  )->_ptr++ = ( ( *in ) )))   ;
		if (currfil)                      
		  ungetc (ch, currfil) ;
		else
		  --currtext ;
	      }
	    break ;
	  case '%':		 
	    --in ; kpar = 0 ;
	    while (isdigit (ch = (currfil ? (--( currfil )->_cnt < 0 ? __filbuf( currfil ) : (int)*( currfil )->_ptr++)  : *currtext++) ))
	      kpar = kpar*10 + (ch - '0') ;
	    if (kpar > 0 && kpar <= stream[streamlevel].npar)
	      for (cp = (unsigned char *) stackText_dbg( parStack ,  
			     stream[streamlevel].parMark[kpar-1] ,"freesubs.c", 233)  ; *cp ; ++cp)
		{ if (++in >= cardEnd)
		    freeExtend (&in) ;
		  *in = *cp ;
		  if (isecho)
		    (--(  (&__iob[1])  )->_cnt < 0 ? __flsbuf((unsigned char) ( ( *in ) ), (  (&__iob[1])  )) : (int)(*(  (&__iob[1])  )->_ptr++ = ( ( *in ) )))   ;
		}
	    else
	      messout ("Parameter %%%d can not be substituted", kpar) ;
	    if (++in >= cardEnd)
	      freeExtend (&in) ;
	    *in = ch ; 
	    goto lao ;  
	  case '\\':		 
	    *in = (currfil ? (--( currfil )->_cnt < 0 ? __filbuf( currfil ) : (int)*( currfil )->_ptr++)  : *currtext++)  ;
	    if (*in == '\n')     
	      { if (isInteractive && !streamlevel)
		  printf ("  Continuation >") ;
		while ((ch = (currfil ? (--( currfil )->_cnt < 0 ? __filbuf( currfil ) : (int)*( currfil )->_ptr++)  : *currtext++) ) == ' ' || ch == '\t') ;
			 
		if (currfil)                      
		  ungetc (ch, currfil) ;
		else
		  --currtext ;
		stream[streamlevel].line++ ;
		--in ;
	      }

	    else if (*in == 'n')  
	      { *in = '\n' ; 
	      }

	    else   
	      { *(in+1) = *in ;
		*in = '\\' ;
		if (++in >= cardEnd)
		  freeExtend (&in) ;
	      }
	    break ;
	  default:
	    messerror ("freesubs got unrecognised special character 0x%x = %c\n",
		     *in, *in) ;
	  }
      else
	{ if (!isprint(*in) && *in != '\t' && *in != '\n')  
	    --in ;
	  else if (isecho)	 
	    (--(  (&__iob[1])  )->_cnt < 0 ? __flsbuf((unsigned char) ( ( *in ) ), (  (&__iob[1])  )) : (int)(*(  (&__iob[1])  )->_ptr++ = ( ( *in ) )))   ;
	}
    }				 
 
got_line:
  stream[streamlevel].line++ ;
  *in = 0 ;
  if (isecho)
    (--(  (&__iob[1])  )->_cnt < 0 ? __flsbuf((unsigned char) ( ( '\n' ) ), (  (&__iob[1])  )) : (int)(*(  (&__iob[1])  )->_ptr++ = ( ( '\n' ) )))   ;
  pos = card ;
  while (*pos == ' '|| *pos == '\t') ++pos  ;
  if (acceptCommand && (*pos ==  '@'  && ++pos) )         
    { char *name ;
      if ((name = freeword ()) && 
	  (fil = filopen (name, 0, "r")))
	freesetfile (fil, (char*) pos) ;
      goto restart ;
    }
  if (acceptShell && (*pos ==  '$'  && ++pos) )         
    {

      system ((char*)pos) ;

      goto restart ;
    }

  return (char*) card ;
}
 
 

void freecardback (void)     
{ stream[streamlevel].line-- ;
  freesettext ((char*) card, "") ;
}

 
 
BOOL freeread (FILE *fil)                 
{
  unsigned char ch, *in = card ;
  int  *line, chint ;
  
  if (! uAssFind(( filAss ),(  fil ),(void**)(  &line )) )
    { line = (int*) halloc_dbg( sizeof (int) , 0, "freesubs.c", 324)  ;
      assInsert (filAss, fil, line) ;
    }
 
  --in ;
  while (TRUE)
    { ++in ;
      if (in >= cardEnd)
	    freeExtend (&in) ;
	  chint = (--( fil )->_cnt < 0 ? __filbuf( fil ) : (int)*( fil )->_ptr++)  ;
	  if ((( fil )->_flag & 0040 ) )
	  	messerror ("chint was bad");
	  *in = chint ;
      switch (*in)
        {
	case '\n' :
	  ++*line ;
	case (unsigned char) (-1)  :
	  goto got_line ;
	case '/' :		 
	  if ((ch = (--( fil )->_cnt < 0 ? __filbuf( fil ) : (int)*( fil )->_ptr++) ) == '/')
	    { while ((--( fil )->_cnt < 0 ? __filbuf( fil ) : (int)*( fil )->_ptr++)  != '\n' && ! (( fil )->_flag & 0020 ) ) ;
	      ++*line ;
	      if (in > card)	 
		goto got_line ;
	      else
		--in ;  
	    }
	  else
	    ungetc (ch,fil) ;
	  break ;
	case '\\' :		 
	  *in = (--( fil )->_cnt < 0 ? __filbuf( fil ) : (int)*( fil )->_ptr++)  ;
	  if (*in == '\n')	 
	    { ++*line ;
	      while (isspace (*in = (--( fil )->_cnt < 0 ? __filbuf( fil ) : (int)*( fil )->_ptr++) )) ;     
	    }
	  else if (*in == '"' || *in == '\\')  
	    { *(in+1) = *in ;
	      *in = '\\' ;
	      ++in ;
	    }
	   
	default:
	  if (!isprint (*in) && *in != '\t')	 
	    --in ;
	}
    }
 
got_line :
  *in = 0 ;
  pos = card ;
  while (*pos == ' '|| *pos == '\t') ++pos  ;
  if ((( fil )->_flag & 0020 ) )
    { assRemove (filAss, fil) ;
      (( line ) ? uMessFree((void*)( line )),( line )=0,TRUE : FALSE)  ;
    }
  return *pos || ! (( fil )->_flag & 0020 )  ;
}

int freeline (FILE *fil)
{ int *line ;

  if (uAssFind(( filAss ),(  fil ),(void**)(  &line )) )
    return *line ;
  else
    return 0 ;
}
 
int freestreamline (int level)
{ 
  return stream[level].line  ;
}
 
 


static void freenewstream (char *parms)
{
  int kpar ;

  stream[streamlevel].fil = currfil ;
  stream[streamlevel].text = currtext ;
  if (++streamlevel == 80 )
    uMessSetErrorOrigin("freesubs.c", 408),uMessCrash  ("MAXSTREAM overflow in freenewstream") ;
  strcpy (stream[streamlevel].special, stream[streamlevel-1].special) ;

  stream[streamlevel].npar = 0 ;
  stream[streamlevel].line = 1 ;

 if (!parms || !*parms)
    return ;                            
  pos = (unsigned char *) parms ;			 

  for (kpar = 0 ; kpar < 80  && freeword () ; kpar++)  
    { stream[streamlevel].parMark[kpar] = stackMark (parStack) ;
      pushText (parStack, (char*) word) ;
    }

  stream[streamlevel].npar = kpar ;
  stream[streamlevel].isPipe = FALSE ;
  pos = card ;			 
  *card = 0 ;
}
 
int freesettext (char *string, char *parms)
{
  freenewstream (parms) ;

  currfil = 0 ;
  currtext = string ;

  return streamlevel ;
}

int freesetfile (FILE *fil, char *parms)
{
  freenewstream (parms) ;

  currfil = fil ;
  currtext = 0 ;

  return streamlevel ;
}

int freesetpipe (FILE *fil, char *parms)
{
  freenewstream (parms) ;

  currfil = fil ;
  currtext = 0 ;
  stream[streamlevel].isPipe = TRUE ;
  return streamlevel ;
}

void freeclose(int level)
{ int kpar ;
  while (streamlevel >= level)
    { if (currfil && currfil != (&__iob[0])  && currfil != (&__iob[1]) )
	{
	  if (stream[streamlevel].isPipe)
	    pclose (currfil) ;
	  else
	    filclose (currfil) ;
	}
      for (kpar = stream[streamlevel].npar ; kpar-- ;)
	popText (parStack) ;
      --streamlevel ;
      currfil = stream[streamlevel].fil ;
      currtext = stream[streamlevel].text ;
      freespecial (stream[streamlevel].special) ;
    }
}

 
 



 
char *freeword (void)
{
  unsigned char *cw ;
 
  while (*pos == ' '|| *pos == '\t') ++pos  ;              

  if ((*pos ==  '"'  && ++pos) )
    { for (cw = word ; ! (*pos ==  '"'  && ++pos)  && *pos ; *cw++ = *pos++)
	if ((*pos ==  '\\'  && ++pos) )	 
	  if (!*pos)
	    break ;
      while (*pos == ' '|| *pos == '\t') ++pos  ;
      *cw = 0 ;
      return (char*) word ;	 
    }

		 
  for (cw = word ; isgraph (*pos) && *pos != '\t' ; *cw++ = *pos++)
    if ((*pos ==  '\\'  && ++pos) )	 
      if (!*pos)
	break ;
  while (*pos == ' '|| *pos == '\t') ++pos  ;
  *cw = 0 ;
  return *word ? (char*) word : 0 ;
}
 
 

# 539 "freesubs.c"

 
 
 
char *freewordcut (char *cutset, char *cutter)
         





{ unsigned char *cc,*cw ;
 
  for (cw = word ; *pos ; *cw++ = *pos++)
    for (cc = (unsigned char *) cutset ; *cc ; ++cc)
      if (*cc == *pos)
        goto wcut ;
wcut:
  *cutter = *pos ;
  if (*pos)
    ++pos ;
  while (*pos == ' '|| *pos == '\t') ++pos  ;
  *cw = 0 ;
  return *word ? (char*) word : 0 ;
}
 
 
 
void freeback (void)     
 
 {unsigned char *now = pos ;
  unsigned char *old = pos ;
 
  pos = card ; while (*pos == ' '|| *pos == '\t') ++pos  ;
  while  (pos < now)
   {old = pos ;
    freeword () ;
   }
  pos = old ;
 }
 

 
 
 
 
 
 
 
 
 
 
 
 
BOOL freeint (int *p)
 {BOOL result = FALSE ;
  unsigned char *keep ;
  enum {DECIMAL_BASE = 10} ;
  char *endptr ;
  long int bigint ;

  keep = pos ;
  if (freeword ())
    {  
      if (strcmp((char *)word, "NULL") == 0)
	{ *p = (- 2147483647  -1)   ;
	  result = TRUE ;
	}
      else
	{
	errno = 0 ;
	bigint = strtol((char *)word, &endptr, DECIMAL_BASE) ;

	if ((bigint == 0 && endptr == (char *)word)	     
	    || (endptr != (char *)(word + strlen((char *)word)))  
	    || (errno == 34 )			     
            || (bigint <= (- 2147483647  -1)  || bigint >= 2147483647  ))     
	  {
	  pos = keep ;
	  return FALSE ;
	  }
	else
	  {
	  *p = (int)bigint ;
	  result = TRUE ;
	  }
	}
    }
  else
    { pos = keep ;
    result = FALSE ;
    }
  
  return result ;
 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
BOOL freefloat (float *p)
{
  BOOL result = FALSE ;  
  unsigned char *keep ;
  double bigfloat ;
  char *endptr ;

  keep = pos ;
  if (freeword ())
    {
      if (strcmp ((char*)word, "NULL") == 0)
	{
	  *p = - 3.40282347e+38F   ;				     
	  result = TRUE ;
	}
      else
	{
	  errno = 0 ;
	  bigfloat = strtod((char *)word, &endptr) ;

	  if ((bigfloat == +0.0 && endptr == (char *)word)   
	      || (endptr != (char *)(word + strlen((char *)word)))  
	      || (errno == 34 )			     
	      || (bigfloat < 0 && (bigfloat >= - 1.17549435e-38F  || bigfloat <= - 3.40282347e+38F ))
	      || (bigfloat > 0 && (bigfloat <= 1.17549435e-38F  || bigfloat >= 3.40282347e+38F )))
	    {						     
	      pos = keep ;
	      result = FALSE ;
	    }
	  else
	    {
	      *p = (float)bigfloat ;
	      result = TRUE ;
	    }
	}
    }
  else
    {
      pos = keep ;
      result = FALSE ;
    }

  return result ;
}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
BOOL freedouble (double *p)
{ 
  BOOL result = FALSE ;  
  unsigned char *keep ;
  double bigfloat ;
  char *endptr ;

  keep = pos ;
  if (freeword ())
    {
      if (strcmp ((char*)word, "NULL") == 0)
	{
	  *p = - 1.7976931348623157e+308   ;				     
	  result = TRUE ;
	}
      else
	{
	  errno = 0 ;
	  bigfloat = strtod((char *)word, &endptr) ;

	  if ((bigfloat == +0.0 && endptr == (char *)word)   
	      || (endptr != (char *)(word + strlen((char *)word)))  
	      || (errno == 34 )			     
	      || (bigfloat < 0 && (bigfloat == - 2.2250738585072014e-308  || bigfloat == - 1.7976931348623157e+308 ))
	      || (bigfloat > 0 && (bigfloat == 2.2250738585072014e-308  || bigfloat == 1.7976931348623157e+308 )))
	    {						     
	      pos = keep ;
	      result = FALSE ;
	    }
	  else
	    {
	      *p = bigfloat ;
	      result = TRUE ;
	    }
	}
    }
  else
    {
      pos = keep ;
      result = FALSE ;
    }

  return result ;
}
 


 
 
static int ambiguouskey;
 
BOOL freekey (KEY *kpt, FREEOPT *options)
{
  unsigned char  *keep = pos ;

  if (!freeword())
    return FALSE ;

  if (freekeymatch ((char*) word, kpt, options))
    return TRUE;
 
  if (ambiguouskey)
    messout ("Keyword %s is ambiguous",word) ;
  else if (word[0] != '?')
    messout ("Keyword %s does not match",word) ;
 
  pos = keep ;
  return FALSE ;
}
 
 
 
BOOL freekeymatch (char *cp, KEY *kpt, FREEOPT *options)
{
  char  *io,*iw ;
  int   nopt = (int)options->key ;
  KEY   key ;
 
  ambiguouskey = FALSE;
  if (!nopt || !cp)
    return FALSE ;
 
  while (TRUE)
    { iw = cp ;
      io = (++options)->text ;

      while ((FREE_UPPER[( *iw++ ) & 0xff])  == (FREE_UPPER[( *io++ ) & 0xff]) )
	if (!*iw)
	  goto foundit ;
      if (!--nopt)
        return FALSE ;
    }
 
foundit :
  key = options->key ;
 
  if (*io && *io != ' ')		 
    while (--nopt)	 
      { io = (++options)->text ;
	iw = (char*) word ;
	while ((FREE_UPPER[( *iw++ ) & 0xff])  == (FREE_UPPER[( *io++ ) & 0xff]) )
	  if (!*iw)
	    { ambiguouskey = TRUE;
	      return FALSE ;
	    }
      }
 
  *kpt = key ;
  return TRUE ;
}
 
 
   
char *freekey2text (KEY k, FREEOPT *o)  
{ int i = o->key ; char *title = o->text ;
  if (i<0)
    uMessSetErrorOrigin("freesubs.c", 825),uMessCrash ("Negative number of options in freekey2text") ;
  while (o++, i--) 
    if (o->key == k)
      return (o->text) ;
  return title ;
}

 
 
BOOL freeselect (KEY *kpt, FREEOPT *options)      
{
  if (isInteractive)
    printf ("%s > ",options[0].text) ;
  freecard (0) ;                        
  if (isInteractive)
    while (freestep ('?'))             
      { int i ;
	for (i = 1 ; i <= options[0].key ; i++)
	  printf ("  %s\n",options[i].text) ;
	printf ("%s > ",options[0].text) ;
	freecard (0) ;
      }
  return freekey (kpt,options) ;
}
   
BOOL freelevelselect (int level, KEY *kpt, FREEOPT *options)      
{
  if (isInteractive)
    printf ("%s > ",options[0].text) ;
  if (!freecard (level))  
    { *kpt = (KEY)(-1) ;  
      return TRUE ;                       
    }
  if (isInteractive)
    while (freestep ('?'))             
      { int i ;
	for (i = 1 ; i <= options[0].key ; i++)
	  printf ("  %s\n",options[i].text) ;
	printf ("%s > ",options[0].text) ;
	if (!freecard (level))  
	 { *kpt = (KEY)(-1) ;  
	   return TRUE ;                       
	 }
       }
  return freekey (kpt,options) ;
} 

 
 
BOOL freequery (char *query)
{
  if (isInteractive)
    { int retval, answer = 0 ;
      printf ("%s (y or n) ",query) ;
      answer = (--( (&__iob[0])  )->_cnt < 0 ? __filbuf( (&__iob[0])  ) : (int)*( (&__iob[0])  )->_ptr++)   ;
      retval = (answer == 'y' || answer == 'Y') ? TRUE : FALSE ;
      while (answer != (unsigned char) (-1)  &&
	     answer != -1 &&  
	     answer != '\n')
        answer = (--( (&__iob[0])  )->_cnt < 0 ? __filbuf( (&__iob[0])  ) : (int)*( (&__iob[0])  )->_ptr++)   ;
      return retval ;
    }
  else
    return TRUE ;
}
 
 
 
BOOL freeprompt (char *prompt, char *dfault, char *fmt)
{ 
  if (isInteractive)
    printf("%s ? > ",prompt);
  freecard (0) ;                        
  if (freecheck (fmt))
    return TRUE ;
  else
    { messout ("input mismatch : format '%s' expected, card was\n%s",
	       fmt, card) ;
      return FALSE ;
   }
}
 
 
 
int freefmtlength (char *fmt)
 
 {char *cp ;
  int length = 0 ;
 
  if (isdigit((int)*fmt))
   {sscanf (fmt,"%d",&length) ;
    return length ;
   }
 
  for (cp = fmt ; *cp ; ++cp)
    switch (*cp)
     {
case 'i' : case 'f' : case 'd' : length += 8 ; break ;
case 'w' : length += 32 ; break ;
case 't' : length += 80 ; break ;
case 'o' :
      if (*++cp)
        uMessSetErrorOrigin("freesubs.c", 927),uMessCrash  ("'o' can not end free format %s",fmt) ;
      length += 2 ; break ;
     }
 
  if (!length)
    length = 40 ;
  return length ;
 }
 
 
 
BOOL freecheck (char *fmt)
         

 {unsigned char *keep = pos ;
  union {int i ; float r ; double d ;}
          target ;
  char *fp ;
  unsigned char *start ;
  int nquote = 1 ;
 
  for (fp = fmt ; *fp ; ++fp)
    switch (*fp)
     {
case 'w' : if (freeword ()) break ; else goto retFALSE ;
case 'i' : if (freeint (&target.i)) break ; else goto retFALSE ;
case 'f' : if (freefloat (&target.r)) break ; else goto retFALSE ;
case 'd' : if (freedouble (&target.d)) break ; else goto retFALSE ;
case 't' :       
      for (start = pos ; *pos ; ++pos)
        if (*pos == '"' || *pos == '\\')
          ++nquote ;
      *(pos+nquote+1) = '"' ;		 
      for ( ; pos >= start ; --pos)
	{ *(pos + nquote) = *pos ;
	  if (*pos == '"' || *pos == '\\')
	    *(pos + --nquote) = '\\' ;
        }
      *start = '"' ;
      goto retTRUE ;
case 'z' : if (freeword ()) goto retFALSE ; else goto retTRUE ;
case 'o' :
      if (!*++fp) uMessSetErrorOrigin("freesubs.c", 969),uMessCrash  ("'o' can not end free format %s",fmt) ;
      freestep (*fp) ; break ;
case 'b' : break;  
default :
      if (!isdigit((int)*fp) && !isspace((int)*fp))
        messerror ("unrecognised char %d = %c in free format %s",
		   *fp, *fp, fmt) ;
     }
 
retTRUE :
  pos = keep ; return TRUE ;
retFALSE :
  pos = keep ; return FALSE ;
 }
 
 
 
BOOL freestep (char x)
 {return (*pos && (FREE_UPPER[( *pos ) & 0xff])  == x && pos++) ;
 }
 
void freenext (void)
 {while (*pos == ' '|| *pos == '\t') ++pos  ;
 }
 
char FREE_UPPER[] =
{ 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,
  16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,
  32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,
  48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,
  64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,
  80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,
  96,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,
  80,81,82,83,84,85,86,87,88,89,90,123,124,125,126,127
} ;

char FREE_LOWER[] =
{  0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15, 
  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,  
  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,  
  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,  
  64,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,  91,  92,  93,  94,  95,
  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127
} ;

char* freepos (void)		 
{ return (char*) pos ;
}

 
 


int freeArrondi (float x)
{
  if (x >= 0)
    return (int) (x + 0.5) ;
  else
    return (int) (x - 0.5) ;
}

 
  



int freeMainPart (float p)
{
  register int i = 1, sign = 1;
  
  if (!p)
    return 0 ;
  if (p < 0) 
    { sign  = -1 ; p = -p ; }
  while(i <= p + .00001) 
    i = 10 * i;
  i /= 10 ;

  if (2 * i > p)
    return i * sign;
  if(5 * i > p)
    return 2 * i * sign;
  return
    5*i*sign;
}

 
  



int freeMainRoundPart (float p)
{
  register int i = 1, sign = 1;

  if (!p)
    return 0 ;
  if (p < 0) 
    {sign = -1 ; p = -p ; }	 
  while (i < p + .1) 
    i = 10 * i;
  if (4 * i < 5 * p) 
    return i * sign;
  i /= 2;
  if (4 * i < 5 * p) 
    return i * sign;
  i =  (2 * i) / 5;
  if (4 * i < 5 * p)
    return i * sign;
  i = i/2; 
  return i * sign;
}

 
 
double freeDoubleMainPart (double p)
{
  register double i = 1, sign = 1;

  if (!p)
    return 0.;
  if(p < 0) 
    {sign = -1; p = -p;}
  i = (double) exp(log((double)10.0) * (double)(1 + (int)(log10((double)p)))) ;
  if (4 * i < 5 * p) 
    return i * sign;
  i /= 2;
  if (4 * i < 5 * p)
    return i * sign;
  i = (2 * i) / 5;
  if (4 * i < 5 * p)
    return i*sign;
  i = i/2;
  return i*sign;
}

 
 

char* freeunprotect (char *text)
{
  static char *buf = 0 ;
  char *cp, *cp0, *cq ;
  (( buf ) ? uMessFree((void*)( buf )),( buf )=0,TRUE : FALSE)  ;
  buf = strnew_dbg( text ? text : "" ,   0 ,"freesubs.c",1115)  ;

   
  cp = buf ;
  while (*cp == ' ' || *cp == '\t') cp++ ;
  if (*cp == '"') cp++ ;
  while (*cp == ' ' || *cp == '\t') cp++ ;

  cq = cp + strlen(cp) - 1 ;

  while (cq > cp && (*cq == ' ' || *cq == '\t')) *cq-- = 0 ;

  if (*cq == '"')  
    {
      int i = 0 ; char *cr = cq - 1 ;
      while (cr > cp && *cr == '\\')
	{ i++ ; cr-- ; }
      if ( i%2 == 0)
	*cq-- = 0 ;   
    }
  while (cq > cp && (*cq == ' ' || *cq == '\t')) *cq-- = 0 ;

   
  cp0 = cq = cp-- ;
  while (*++cp)
    switch (*cp)
      {
      case '\\': 
	if (*(cp+1) == '\\') { cp++ ; *cq++ = '\\' ; break ;}
	if (*(cp+1) == '\n') { cp ++ ; break ; }  
	if (*(cp+1) == 'n') { cp ++ ; *cq++ = '\n' ; break ; }
	break ;
      default: *cq++ = *cp ;
      }
  *cq = 0 ;    
  return cp0 ;
}

char* freeprotect (char* text)	 
{
  static Array a = 0 ;
  char *cp, *cq ;
  int base ;

		 

  if (a && text >= ((( char *)(( a )->base + ( 0 )*( a )->size)))  && text < ((( char *)(( a )->base + ( (( a )->max)  )*( a )->size))) )
    { base = text - ((( char *)(( a )->base + ( 0 )*( a )->size)))  ;
      (*(  char *)uArray_dbg( a ,  base+3*(1+strlen(text)) , "freesubs.c", 1163))  = 0 ;  
      text = ((( char *)(( a )->base + ( 0 )*( a )->size)))  + base ;             
      base += 1 + strlen(text) ;
    }
  else
    { a = uArrayReCreate_dbg( a ,  128 ,sizeof(  char ), "freesubs.c", 1168)  ;
      base = 0 ;
      (*(  char *)uArray_dbg( a ,  2*(1+strlen(text)) , "freesubs.c", 1170))  = 0 ;  
    }

  cq = (((  char *)(( a )->base + (  base )*( a )->size)))  ;
  *cq++ = '"' ;
  for (cp = text ; *cp ; *cq++ = *cp++)
    { if (*cp == '\\' || *cp == '"' || 		        
	  *cp == '/' || *cp == '%' || *cp == ';' ||
	  *cp == '\t' || *cp == '\n')
	*cq++ = '\\' ;
      if (*cp == '\n') {*cq++ = 'n' ; *cq++ = '\\' ; }  
    }
  *cq++ = '"' ;
  *cq = 0 ;
  return (((  char *)(( a )->base + (  base )*( a )->size)))  ;
}

char* freejavaprotect (char* text)	 
{
  static Array a = 0 ;
  char *cp, *cq ;
  int base ;

		 

  if (a && text >= ((( char *)(( a )->base + ( 0 )*( a )->size)))  && text < ((( char *)(( a )->base + ( (( a )->max)  )*( a )->size))) )
    { base = text - ((( char *)(( a )->base + ( 0 )*( a )->size)))  ;
      (*(  char *)uArray_dbg( a ,  base+3*(1+strlen(text)) , "freesubs.c", 1197))  = 0 ;  
      text = ((( char *)(( a )->base + ( 0 )*( a )->size)))  + base ;             
      base += 1 + strlen(text) ;
    }
  else
    { a = uArrayReCreate_dbg( a ,  128 ,sizeof(  char ), "freesubs.c", 1202)  ;
      base = 0 ;
      (*(  char *)uArray_dbg( a ,  2*(1+strlen(text)) , "freesubs.c", 1204))  = 0 ;  
    }

  cq = (((  char *)(( a )->base + (  base )*( a )->size)))  ;
  cp = text;
  while (*cp) 
    switch (*cp)
      {
      case '\n':
	*cq++ = '\\';
	*cq++ = 'n';
	cp++;
	break;
      case '\\': case '?':
	*cq++ = '\\' ;
	 
      default:
	*cq++ = *cp++;
      }
  *cq = 0 ;
  return (((  char *)(( a )->base + (  base )*( a )->size)))  ;
}


 
 
 
 
char* freeXMLprotect (char* text)	 
{
  static Array a = 0 ;
  char *cp, *cq ;
  int base ;

   
   
   
   
   
  if (a && text >= ((( char *)(( a )->base + ( 0 )*( a )->size)))  && text < ((( char *)(( a )->base + ( (( a )->max)  )*( a )->size))) )
    { base = text - ((( char *)(( a )->base + ( 0 )*( a )->size)))  ;
      (*(  char *)uArray_dbg( a ,  base+7*(1+strlen(text)) , "freesubs.c", 1245))  = 0 ;  
      text = ((( char *)(( a )->base + ( 0 )*( a )->size)))  + base ;             
      base += 1 + strlen(text) ;
    }
  else
    { a = uArrayReCreate_dbg( a ,  128 ,sizeof(  char ), "freesubs.c", 1250)  ;
      base = 0 ;
      (*(  char *)uArray_dbg( a ,  6*(1+strlen(text)) , "freesubs.c", 1252))  = 0 ;  
    }

  cq = (((  char *)(( a )->base + (  base )*( a )->size)))  ;
  cp = text ;
  while (*cp) 
    switch (*cp)
      {
      case '<':
	strcat (cq, "&lt;") ; cq += 4 ;
	cp++;
	break;
      case '>':
	strcat (cq, "&gt;") ; cq += 4 ;
	cp++;
	break;
      case '"':
	strcat (cq, "&quot;") ; cq += 6 ;
	cp++;
	break;
      case '\'':
	strcat (cq, "&apos;") ; cq += 6 ;
	cp++;
	break;
      case '&':
	strcat (cq, "&amp;") ; cq += 5 ;
	cp++;
	break;
      case '\n':
	strcat (cq, "&amp;") ; cq += 5 ;
	cp++;
	break;

      default:
	*cq++ = *cp++;
      }
  *cq = 0 ;
  return (((  char *)(( a )->base + (  base )*( a )->size)))  ;
}




# 1359 "freesubs.c"




 
 

# 1 "../wh/mytime.h" 1
 





































    




typedef unsigned int mytime_t;	 

 
# 55 "../wh/mytime.h"






 

 
mytime_t timeParse (char *cp) ;

 
char*    timeShow2 (char* ace_time, mytime_t t) ;  
char*    timeShow (mytime_t t) ;

 

BOOL	 timeDiffSecs (mytime_t t1, mytime_t t2, int *tdiff) ; 
BOOL	 timeDiffMins (mytime_t t1, mytime_t t2, int *tdiff) ; 
BOOL	 timeDiffHours (mytime_t t1, mytime_t t2, int *tdiff) ; 
BOOL	 timeDiffDays (mytime_t t1, mytime_t t2, int *tdiff) ; 
BOOL	 timeDiffMonths (mytime_t t1, mytime_t t2, int *tdiff) ; 
BOOL	 timeDiffYears (mytime_t t1, mytime_t t2, int *tdiff) ;   

 
BOOL     timeComparison (int op,  
			 mytime_t timeLeft, mytime_t timeRight);
 


char *timeDiffShow2 (char *buf, mytime_t t1, mytime_t t2)  ; 
char*    timeDiffShow (mytime_t t1, mytime_t t2) ;
char*	 timeShowFormat (mytime_t t, char *format, char *buf, int len) ;
char*    timeShowJava2 (char* ace_time, mytime_t t) ; 
char*    timeShowJava (mytime_t t) ;
mytime_t timeNow (void) ;
void     timeDiff (mytime_t t1, mytime_t t2, int *ydiff, int *mdiff,
                  int *ddiff, int *hdiff, int *mindiff, int *sdiff, 
                  int *minus) ;
int      monthLength (int year, int month, int minus) ;



# 1366 "freesubs.c" 2


char *timeShowJava (mytime_t t) 
{
  static char ace_time[25] ;
  return timeShowJava2 (ace_time, t) ;
}

 

char *timeShow (mytime_t t) 
{
  static char ace_time[25] ;
  
  return timeShow2 (ace_time, t) ;
}

 

char *timeDiffShow (mytime_t t1, mytime_t t2) 
{
  static char buf[25] ;

  return timeDiffShow2 (buf, t1, t2) ;
}

 
 
 
 
