# 1 "conf.c"
 




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

 
 
 

 







#pragma ident	"@(#)ctype.h	1.33	99/08/10 SMI"	

# 1 "/usr/include/iso/ctype_iso.h" 1 3
 
 

 
 
 

 




 














#pragma ident	"@(#)ctype_iso.h	1.1	99/08/09 SMI" 

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




 
 
 




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

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







#pragma ident	"@(#)isa_defs.h	1.20	99/05/04 SMI"

 






















































































































































 





# 267 "/usr/include/sys/isa_defs.h" 3


 






 






 









 
















 







 





 







 








 



# 366 "/usr/include/sys/isa_defs.h" 3


 















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






 












 








































 



























 



















 






















 



























 










# 30 "/usr/include/iso/ctype_iso.h" 2 3

































extern int isalnum(int);
extern int isalpha(int);
extern int iscntrl(int);
extern int isdigit(int);
extern int isgraph(int);
extern int islower(int);
extern int isprint(int);
extern int ispunct(int);
extern int isspace(int);
extern int isupper(int);
extern int isxdigit(int);







extern int tolower(int);
extern int toupper(int);





extern unsigned char	__ctype[];
extern unsigned int	*__ctype_mask;
extern int		*__trans_upper;
extern int		*__trans_lower;



# 129 "/usr/include/iso/ctype_iso.h" 3


# 144 "/usr/include/iso/ctype_iso.h" 3



















# 183 "/usr/include/iso/ctype_iso.h" 3







# 18 "/usr/include/ctype.h" 2 3


 



# 38 "/usr/include/ctype.h" 3











extern int isascii(int);
extern int toascii(int);
extern int _tolower(int);
extern int _toupper(int);























# 87 "/usr/include/ctype.h" 3







# 6 "conf.c" 2

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




 
 

 
 
 




#pragma ident	"@(#)stdlib.h	1.47	99/11/03 SMI"	

# 1 "/usr/include/iso/stdlib_iso.h" 1 3
 




 
 

 
 
 

 














#pragma ident	"@(#)stdlib_iso.h	1.2	99/12/21 SMI" 








extern unsigned char	__ctype[];










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

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






typedef unsigned int    size_t;		 




















typedef long	wchar_t;





extern void abort(void);
extern int abs(int);
extern int atexit(void (*)(void));
extern double atof(const char *);
extern int atoi(const char *);
extern long int atol(const char *);
extern void *bsearch(const void *, const void *, size_t, size_t,
	int (*)(const void *, const void *));
extern void *calloc(size_t, size_t);
extern div_t div(int, int);
extern void exit(int);
extern void free(void *);
extern char *getenv(const char *);
extern long int labs(long);
extern ldiv_t ldiv(long, long);
extern void *malloc(size_t);
extern int mblen(const char *, size_t);
extern size_t mbstowcs(wchar_t *, const char *, size_t);
extern int mbtowc(wchar_t *, const char *, size_t);
extern void qsort(void *, size_t, size_t,
	int (*)(const void *, const void *));
extern int rand(void);
extern void *realloc(void *, size_t);
extern void srand(unsigned int);
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 system(const char *);
extern int wctomb(char *, wchar_t);
extern size_t wcstombs(char *, const wchar_t *, size_t);

# 152 "/usr/include/iso/stdlib_iso.h" 3











# 18 "/usr/include/stdlib.h" 2 3







 



# 61 "/usr/include/stdlib.h" 3







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







typedef long	uid_t;			 





 
# 94 "/usr/include/stdlib.h" 3


 
# 105 "/usr/include/stdlib.h" 3







extern void _exithandle(void);




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(char *);
extern void setkey(const char *);












typedef int	ssize_t;	 



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





extern int	mkstemp(char *);




extern int	mkstemp64(char *);





extern long a64l(const char *);
extern char *ecvt(double, int, int *, int *);
extern char *fcvt(double, int, int *, int *);
extern char *gcvt(double, int, char *);
extern int getsubopt(char **, char *const *, char **);
extern int  grantpt(int);
extern char *initstate(unsigned, char *, size_t);
extern char *l64a(long);
extern char *mktemp(char *);
extern char *ptsname(int);
extern long random(void);
extern char *realpath(const char *, char *);
extern char *setstate(const char *);
extern void srandom(unsigned);
extern int ttyslot(void);
extern int  unlockpt(int);
extern void *valloc(size_t);




extern int dup2(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 const char *getexecname(void);
extern char *getlogin(void);
extern int getopt(int, char *const *, const char *);
extern char *optarg;
extern int optind, opterr, optopt;
extern char *getpass(const char *);
extern char *getpassphrase(const char *);
extern int getpw(uid_t, char *);
extern int isatty(int);
extern void *memalign(size_t, size_t);
extern char *ttyname(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 *);




# 305 "/usr/include/stdlib.h" 3







# 7 "conf.c" 2

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

 
 
 

 




 






#pragma ident	"@(#)stdio.h	1.78	99/12/08 SMI"	

# 1 "/usr/include/iso/stdio_iso.h" 1 3
 
 

 
 
 

 




 











 






#pragma ident	"@(#)stdio_iso.h	1.2	99/10/25 SMI"
 


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







#pragma ident	"@(#)va_list.h	1.12	99/05/04 SMI"

 














typedef void *__va_list;









# 36 "/usr/include/iso/stdio_iso.h" 2 3

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







#pragma ident	"@(#)stdio_tag.h	1.3	98/04/20 SMI"











typedef struct __FILE  __FILE;







# 37 "/usr/include/iso/stdio_iso.h" 2 3

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







#pragma ident	"@(#)stdio_impl.h	1.8	99/06/10 SMI"
















# 36 "/usr/include/stdio_impl.h" 3


struct __FILE 	 
{




	ssize_t		_cnt;	 
	unsigned char	*_ptr;	 

	unsigned char	*_base;	 
	unsigned char	_flag;	 
	unsigned char	_file;	 
	unsigned	__orientation:2;  
	unsigned	__ionolock:1;	 
	unsigned	__filler:5;
};








# 38 "/usr/include/iso/stdio_iso.h" 2 3


 












 





typedef	long long	__longlong_t;















typedef	__FILE FILE;












typedef long		fpos_t;


















 







































extern __FILE	__iob[20 ];
















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 *, __va_list);
extern int	vprintf(const char *, __va_list);
extern int	vsprintf(char *, const char *, __va_list);
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	putc(int, FILE *);



extern int	getchar(void);
extern int	putchar(int);

extern char	*gets(char *);
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 *);


# 275 "/usr/include/iso/stdio_iso.h" 3












# 295 "/usr/include/iso/stdio_iso.h" 3













































# 22 "/usr/include/stdio.h" 2 3


 







 



# 81 "/usr/include/stdio.h" 3










typedef long		off_t;







typedef __longlong_t	off64_t;









typedef __longlong_t	fpos64_t;



 























extern unsigned char	 _sibuf[], _sobuf[];


 
# 176 "/usr/include/stdio.h" 3



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


 
# 206 "/usr/include/stdio.h" 3









extern void setbuffer(FILE *, char *, size_t);
extern int setlinebuf(FILE *);




 
extern int	snprintf(char *, size_t, const char *, ...);




extern int	vsnprintf(char *, size_t, const char *, __va_list);


 





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



 


# 255 "/usr/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 *);



 



extern int	fseeko(FILE *, off_t, int);
extern off_t	ftello(FILE *);


 





extern FILE	*fopen64(const char *, const char *);
extern FILE	*freopen64(const char *, const char *, FILE *);
extern FILE	*tmpfile64(void);
extern int	fgetpos64(FILE *, fpos64_t *);
extern int	fsetpos64(FILE *, const fpos64_t *);
extern int	fseeko64(FILE *, off64_t, int);
extern off64_t	ftello64(FILE *);


# 366 "/usr/include/stdio.h" 3




# 393 "/usr/include/stdio.h" 3









# 8 "conf.c" 2

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

 
 
 

 







#pragma ident	"@(#)string.h	1.24	99/08/10 SMI"	

# 1 "/usr/include/iso/string_iso.h" 1 3
 
 

 
 
 

 




 














#pragma ident	"@(#)string_iso.h	1.2	99/11/09 SMI"
 






























extern int memcmp(const void *, const void *, size_t);
extern void *memcpy(void *, const void *, size_t);
extern void *memmove(void *, const void *, size_t);
extern void *memset(void *, int, size_t);
extern char *strcat(char *, const char *);
extern int strcmp(const char *, const char *);
extern char *strcpy(char *, const char *);
extern int strcoll(const char *, const char *);
extern size_t strcspn(const char *, const char *);
extern char *strerror(int);
extern size_t strlen(const char *);
extern char *strncat(char *, const char *, size_t);
extern int strncmp(const char *, const char *, size_t);
extern char *strncpy(char *, const char *, size_t);
extern size_t strspn(const char *, const char *);
extern char *strtok(char *, const char *);
extern size_t strxfrm(char *, const char *, size_t);
# 111 "/usr/include/iso/string_iso.h" 3

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


# 144 "/usr/include/iso/string_iso.h" 3











# 18 "/usr/include/string.h" 2 3


 



# 48 "/usr/include/string.h" 3















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




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





extern char *strdup(const char *);


# 110 "/usr/include/string.h" 3







# 9 "conf.c" 2

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

 
 
 

 







#pragma ident	"@(#)unistd.h	1.58	99/11/11 SMI"	



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

 
 
 

 








#pragma ident	"@(#)types.h	1.69	03/08/07 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;		 






# 25 "/usr/include/sys/types.h" 2 3


 









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







#pragma ident	"@(#)int_types.h	1.6	97/08/20 SMI"

 




































 













typedef char			int8_t;





typedef short			int16_t;
typedef int			int32_t;




typedef	long long		int64_t;



typedef unsigned char		uint8_t;
typedef unsigned short		uint16_t;
typedef unsigned int		uint32_t;




typedef unsigned long long	uint64_t;



 




typedef int64_t			intmax_t;
typedef uint64_t		uintmax_t;





 








typedef	int			intptr_t;
typedef	unsigned int		uintptr_t;


 




typedef char			int_least8_t;





typedef short			int_least16_t;
typedef int			int_least32_t;




typedef long long		int_least64_t;



typedef unsigned char		uint_least8_t;
typedef unsigned short		uint_least16_t;
typedef unsigned int		uint_least32_t;




typedef unsigned long long	uint_least64_t;








# 37 "/usr/include/sys/types.h" 2 3











 





typedef	long long		longlong_t;
typedef	unsigned long long	u_longlong_t;
# 66 "/usr/include/sys/types.h" 3


 








typedef long		t_scalar_t;	 
typedef unsigned long	t_uscalar_t;


 


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	short		cnt_t;		 


typedef	ulong_t		paddr_t;	 









typedef	int	ptrdiff_t;		 



 


typedef	ulong_t		pfn_t;		 
typedef	ulong_t		pgcnt_t;	 
typedef	long		spgcnt_t;	 

typedef	uchar_t		use_t;		 
typedef	short		sysid_t;
typedef	short		index_t;
typedef void		*timeout_id_t;	 
typedef void		*bufcall_id_t;	 

 







# 146 "/usr/include/sys/types.h" 3



typedef ulong_t		ino_t;		 
typedef long		blkcnt_t;	 
typedef ulong_t		fsblkcnt_t;	 
typedef ulong_t		fsfilcnt_t;	 














typedef u_longlong_t	ino64_t;	 
typedef longlong_t	blkcnt64_t;	 
typedef u_longlong_t	fsblkcnt64_t;	 
typedef u_longlong_t	fsfilcnt64_t;	 






typedef	long		blksize_t;	 





typedef enum { B_FALSE, B_TRUE } boolean_t;


 







typedef int64_t		pad64_t;
typedef	uint64_t	upad64_t;
# 205 "/usr/include/sys/types.h" 3


typedef	longlong_t	offset_t;
typedef	u_longlong_t	u_offset_t;
typedef u_longlong_t	len_t;
typedef	longlong_t	diskaddr_t;

 




# 225 "/usr/include/sys/types.h" 3



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


# 245 "/usr/include/sys/types.h" 3



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


typedef uint_t k_fltset_t;	 

 











typedef	long		id_t;		 


 



typedef uint_t		useconds_t;	 



typedef long	suseconds_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	uid_t	gid_t;			 

typedef id_t    taskid_t;
typedef id_t    projid_t;

 




typedef	uint_t	pthread_t;	 
typedef	uint_t	pthread_key_t;	 

typedef	struct _pthread_mutex {		 
	struct {
		uint16_t	__pthread_mutex_flag1;
		uint8_t		__pthread_mutex_flag2;
		uint8_t		__pthread_mutex_ceiling;
		uint16_t 	__pthread_mutex_type;
		uint16_t 	__pthread_mutex_magic;
	} __pthread_mutex_flags;
	union {
		struct {
			uint8_t	__pthread_mutex_pad[8];
		} __pthread_mutex_lock64;
		struct {
			uint32_t __pthread_ownerpid;
			uint32_t __pthread_lockword;
		} __pthread_mutex_lock32;
		upad64_t __pthread_mutex_owner64;
	} __pthread_mutex_lock;
	upad64_t __pthread_mutex_data;
} pthread_mutex_t;

typedef	struct _pthread_cond {		 
	struct {
		uint8_t		__pthread_cond_flag[4];
		uint16_t 	__pthread_cond_type;
		uint16_t 	__pthread_cond_magic;
	} __pthread_cond_flags;
	upad64_t __pthread_cond_data;
} pthread_cond_t;

 


typedef	struct _pthread_rwlock {	 
	int32_t		__pthread_rwlock_readers;
	uint16_t	__pthread_rwlock_type;
	uint16_t	__pthread_rwlock_magic;
	upad64_t	__pthread_rwlock_pad1[3];
	upad64_t	__pthread_rwlock_pad2[2];
	upad64_t	__pthread_rwlock_pad3[2];
} pthread_rwlock_t;

 


typedef struct _pthread_attr {
	void	*__pthread_attrp;
} pthread_attr_t;

 


typedef struct _pthread_mutexattr {
	void	*__pthread_mutexattrp;
} pthread_mutexattr_t;

 


typedef struct _pthread_condattr {
	void	*__pthread_condattrp;
} pthread_condattr_t;

 


typedef	struct _once {
	upad64_t	__pthread_once_pad[4];
} pthread_once_t;

 



typedef struct _pthread_rwlockattr {
	void	*__pthread_rwlockattrp;
} pthread_rwlockattr_t;

typedef ulong_t	dev_t;			 





typedef	ulong_t	nlink_t;		 
typedef	long	pid_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;
 

# 511 "/usr/include/sys/types.h" 3




 














 





 
typedef unsigned char	u_char;
typedef unsigned short	u_short;
typedef unsigned int	u_int;
typedef unsigned long	u_long;
typedef struct _quad { int val[2]; } quad_t;	 
typedef quad_t		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.67	03/08/07 SMI"	



 






















struct timeval {
	time_t		tv_sec;		 
	suseconds_t	tv_usec;	 
};

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








struct timezone {
	int	tz_minuteswest;	 
	int	tz_dsttime;	 
};








 





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

 
 
 

 





# 569 "/usr/include/sys/types.h" 3

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






















 


















 






				 
				 

				 
				 


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

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







 











 


typedef	longlong_t	hrtime_t;

# 316 "/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/include/time.h" 1 3
 
 

 
 
 

 







#pragma ident	"@(#)time.h	1.39	99/08/10 SMI"	


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

 
 
 

 





# 569 "/usr/include/sys/types.h" 3

# 19 "/usr/include/time.h" 2 3

# 1 "/usr/include/iso/time_iso.h" 1 3
 
 

 
 
 

 




 














#pragma ident	"@(#)time_iso.h	1.1	99/08/09 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 char *asctime(const struct tm *);
extern clock_t clock(void);
extern char *ctime(const time_t *);
extern double difftime(time_t, time_t);
extern struct tm *gmtime(const time_t *);
extern struct tm *localtime(const time_t *);
extern time_t mktime(struct tm *);
extern time_t time(time_t *);
extern size_t strftime(char *, size_t, const char *, const struct tm *);

# 106 "/usr/include/iso/time_iso.h" 3











# 20 "/usr/include/time.h" 2 3


 



# 40 "/usr/include/time.h" 3



























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















# 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



















 




















# 83 "/usr/include/time.h" 2 3


 












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




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


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;



# 206 "/usr/include/time.h" 3


 



 





























# 315 "/usr/include/time.h" 3







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



 









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

 
 
 

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

# 424 "/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 *);










# 549 "/usr/include/sys/types.h" 2 3




 








 







# 20 "/usr/include/unistd.h" 2 3

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









 




 








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







 



 


 




 





 


















 

 








 




 




 



























 





















 



 





 







 


















 




















 








 

 









 




 











































# 21 "/usr/include/unistd.h" 2 3






 













 















 




 





















 









 






















 









 
# 146 "/usr/include/unistd.h" 3


 
# 167 "/usr/include/unistd.h" 3




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 int getdtablesize(void);

extern gid_t getegid(void);
extern uid_t geteuid(void);
extern gid_t getgid(void);
extern int getgroups(int, gid_t *);


extern long gethostid(void);





extern int gethostname(char *, int);

extern char *getlogin(void);









extern int getpagesize(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 char *getwd(char *);

 






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



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

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


extern int lchown(const char *, uid_t, gid_t);




extern int lockf(int, int, off_t);



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

extern off_t lseek(int, off_t, int);


extern int nice(int);

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


extern offset_t llseek(int, offset_t, int);




extern off_t tell(int);



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




extern ssize_t pread(int, void *, size_t, off_t);



extern void profil(unsigned short *, size_t, unsigned long, unsigned int);



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



extern long ptrace(int, pid_t, long, long);




extern ssize_t pwrite(int, const void *, size_t, off_t);

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


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



extern int resolvepath(const char *, char *, size_t);

extern int rmdir(const char *);


extern void *sbrk(intptr_t);

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 int setregid(gid_t, gid_t);
extern int setreuid(uid_t, uid_t);

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 off_t tell(int);




extern int truncate(const char *, off_t);

extern char *ttyname(int);


extern useconds_t ualarm(useconds_t, useconds_t);

extern int unlink(const char *);


extern int usleep(useconds_t);



extern pid_t vfork(void);



extern void vhangup(void);

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


extern void yield(void);


 


extern int ftruncate64(int, off64_t);
extern off64_t lseek64(int, off64_t, int);
extern ssize_t	pread64(int, void *, size_t, off64_t);
extern ssize_t	pwrite64(int, const void *, size_t, off64_t);
extern off64_t	tell64(int);
extern int	truncate64(const char *, off64_t);
extern int	lockf64(int, int, off64_t);


# 772 "/usr/include/unistd.h" 3


 







#pragma unknown_control_flow(vfork)



 



 





























# 894 "/usr/include/unistd.h" 3







# 10 "conf.c" 2


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




 
 
 

 
 
 
 




#pragma ident	"@(#)stat.h	1.2	99/05/19 SMI"








 





















 



# 156 "/usr/include/sys/stat.h" 3


 


# 178 "/usr/include/sys/stat.h" 3


 



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


 



# 232 "/usr/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;





	blksize_t	st_blksize;
	blkcnt_t	st_blocks;
	char		st_fstype[16 ];
	long		st_pad4[8];	 
};



 


# 295 "/usr/include/sys/stat.h" 3


struct	stat64 {
	dev_t		st_dev;
	long		st_pad1[3];	 
	ino64_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];
	off64_t		st_size;


	timestruc_t	st_atim;
	timestruc_t	st_mtim;
	timestruc_t	st_ctim;





	blksize_t	st_blksize;
	blkcnt64_t	st_blocks;
	char		st_fstype[16 ];
	long		st_pad4[8];	 
};

















# 393 "/usr/include/sys/stat.h" 3


 

 






















 
























 




# 461 "/usr/include/sys/stat.h" 3









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

 


extern int fstat64(int, struct stat64 *);
extern int stat64(const char *, struct stat64 *);
extern int lstat64(const char *, struct stat64 *);


# 507 "/usr/include/sys/stat.h" 3


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







#pragma ident	"@(#)stat_impl.h	1.1	99/05/04 SMI"








 







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


# 44 "/usr/include/sys/stat_impl.h" 3









# 509 "/usr/include/sys/stat.h" 2 3









# 12 "conf.c" 2



# 1 "lkc.h" 1
 







# 1 "expr.h" 1
 













# 1 "/vobs/rome_tls/sun4u-SunOS-5.7/encap/gcc-2.95.3-pthreads/lib/gcc-lib/sparc-sun-solaris2.7/2.95.3/include/stdbool.h" 1 3
 



 

typedef enum
  {
    false = 0,
    true = 1
  } bool;

 



 



# 15 "expr.h" 2



struct file {
	struct file *next;
	struct file *parent;
	char *name;
	int lineno;
	int flags;
};





typedef enum tristate {
	no, mod, yes
} tristate;

enum expr_type {
	E_NONE, E_OR, E_AND, E_NOT, E_EQUAL, E_UNEQUAL, E_CHOICE, E_SYMBOL, E_RANGE
};

union expr_data {
	struct expr *expr;
	struct symbol *sym;
};

struct expr {
	enum expr_type type;
	union expr_data left, right;
};





struct expr_value {
	struct expr *expr;
	tristate tri;
};

struct symbol_value {
	void *val;
	tristate tri;
};

enum symbol_type {
	S_UNKNOWN, S_BOOLEAN, S_TRISTATE, S_INT, S_HEX, S_STRING, S_OTHER
};

enum {
	S_DEF_USER,		 
	S_DEF_AUTO,
};

struct symbol {
	struct symbol *next;
	char *name;
	enum symbol_type type;
	struct symbol_value curr;
	struct symbol_value def[4];
	tristate visible;
	int flags;
	struct property *prop;
	struct expr_value rev_dep;
};

























enum prop_type {
	P_UNKNOWN, P_PROMPT, P_COMMENT, P_MENU, P_DEFAULT, P_CHOICE, P_SELECT, P_RANGE, P_FILE
};

struct property {
	struct property *next;
	struct symbol *sym;
	enum prop_type type;
	const char *text;
	struct expr_value visible;
	struct expr *expr;
	struct menu *menu;
	struct file *file;
	int lineno;
};











struct menu {
	struct menu *next;
	struct menu *parent;
	struct menu *list;
	struct symbol *sym;
	struct property *prompt;
	struct expr *dep;
	unsigned int flags;
	char *help;
	struct file *file;
	int lineno;
	void *data;
};






extern struct file *file_list;
extern struct file *current_file;
struct file *lookup_file(const char *name);

extern struct symbol symbol_yes, symbol_no, symbol_mod;
extern struct symbol *modules_sym;
extern struct symbol *sym_defconfig_list;
extern int cdebug;
struct expr *expr_alloc_symbol(struct symbol *sym);
struct expr *expr_alloc_one(enum expr_type type, struct expr *ce);
struct expr *expr_alloc_two(enum expr_type type, struct expr *e1, struct expr *e2);
struct expr *expr_alloc_comp(enum expr_type type, struct symbol *s1, struct symbol *s2);
struct expr *expr_alloc_and(struct expr *e1, struct expr *e2);
struct expr *expr_alloc_or(struct expr *e1, struct expr *e2);
struct expr *expr_copy(struct expr *org);
void expr_free(struct expr *e);
int expr_eq(struct expr *e1, struct expr *e2);
void expr_eliminate_eq(struct expr **ep1, struct expr **ep2);
tristate expr_calc_value(struct expr *e);
struct expr *expr_eliminate_yn(struct expr *e);
struct expr *expr_trans_bool(struct expr *e);
struct expr *expr_eliminate_dups(struct expr *e);
struct expr *expr_transform(struct expr *e);
int expr_contains_symbol(struct expr *dep, struct symbol *sym);
bool expr_depends_symbol(struct expr *dep, struct symbol *sym);
struct expr *expr_extract_eq_and(struct expr **ep1, struct expr **ep2);
struct expr *expr_extract_eq_or(struct expr **ep1, struct expr **ep2);
void expr_extract_eq(enum expr_type type, struct expr **ep, struct expr **ep1, struct expr **ep2);
struct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symbol *sym);

void expr_fprint(struct expr *e, FILE *out);
struct gstr;  
void expr_gstr_print(struct expr *e, struct gstr *gs);

static inline int expr_is_yes(struct expr *e)
{
	return !e || (e->type == E_SYMBOL && e->left.sym == &symbol_yes);
}

static inline int expr_is_no(struct expr *e)
{
	return e && (e->type == E_SYMBOL && e->left.sym == &symbol_no);
}







# 9 "lkc.h" 2




















# 1 "lkc_proto.h" 1

 
extern  void   conf_parse   (const char *name)  ;
extern  int   conf_read   (const char *name)  ;
extern  int   conf_read_simple   (const char *name, int)  ;
extern  int   conf_write   (const char *name)  ;
extern  int   conf_write_autoconf   (void)  ;
extern  bool   conf_get_changed   (void)  ;
extern   void   conf_set_changed_callback   (void (*fn)(void))  ;

 
extern  struct menu   rootmenu     ;

extern  bool   menu_is_visible   (struct menu *menu)  ;
extern  const char *   menu_get_prompt   (struct menu *menu)  ;
extern  struct menu *   menu_get_root_menu   (struct menu *menu)  ;
extern  struct menu *   menu_get_parent_menu   (struct menu *menu)  ;
extern  bool   menu_has_help   (struct menu *menu)  ;
extern  const char *   menu_get_help   (struct menu *menu)  ;

 
extern  struct symbol *   symbol_hash   [257 ]  ;

extern  struct symbol *   sym_lookup   (const char *name, int isconst)  ;
extern  struct symbol *   sym_find   (const char *name)  ;
extern  struct symbol **   sym_re_search   (const char *pattern)  ;
extern  const char *   sym_type_name   (enum symbol_type type)  ;
extern  void   sym_calc_value   (struct symbol *sym)  ;
extern  enum symbol_type   sym_get_type   (struct symbol *sym)  ;
extern  bool   sym_tristate_within_range   (struct symbol *sym,tristate tri)  ;
extern  bool   sym_set_tristate_value   (struct symbol *sym,tristate tri)  ;
extern  tristate   sym_toggle_tristate_value   (struct symbol *sym)  ;
extern  bool   sym_string_valid   (struct symbol *sym, const char *newval)  ;
extern  bool   sym_string_within_range   (struct symbol *sym, const char *str)  ;
extern  bool   sym_set_string_value   (struct symbol *sym, const char *newval)  ;
extern  bool   sym_is_changable   (struct symbol *sym)  ;
extern  struct property *   sym_get_choice_prop   (struct symbol *sym)  ;
extern  struct property *   sym_get_default_prop   (struct symbol *sym)  ;
extern  const char *   sym_get_string_value   (struct symbol *sym)  ;

extern  const char *   prop_get_type_name   (enum prop_type type)  ;

 
extern  int   expr_compare_type   (enum expr_type t1, enum expr_type t2)  ;
extern  void   expr_print   (struct expr *e, void (*fn)(void *, struct symbol *, const char *), void *data, int prevtoken)  ;
# 29 "lkc.h" 2



















struct kconf_id {
	int name;
	int token;
	unsigned int flags;
	enum symbol_type stype;
};

int zconfparse(void);
void zconfdump(FILE *out);

extern int zconfdebug;
void zconf_starthelp(void);
FILE *zconf_fopen(const char *name);
void zconf_initscan(const char *name);
void zconf_nextfile(const char *name);
int zconf_lineno(void);
char *zconf_curname(void);

 
const char *conf_get_configname(void);
char *conf_get_default_confname(void);
void sym_set_change_count(int count);
void sym_add_change_count(int count);

 
void kconfig_load(void);

 
void menu_init(void);
struct menu *menu_add_menu(void);
void menu_end_menu(void);
void menu_add_entry(struct symbol *sym);
void menu_end_entry(void);
void menu_add_dep(struct expr *dep);
struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *expr, struct expr *dep);
struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep);
struct property *menu_add_file(enum prop_type type, char *file, struct expr *dep);
void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep);
void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep);
void menu_add_option(int token, char *arg);
void menu_finalize(struct menu *parent);
void menu_set_type(int type);

 
struct file *file_lookup(const char *name);
int file_write_dep(const char *name);

struct gstr {
	size_t len;
	char  *s;
};
struct gstr str_new(void);
struct gstr str_assign(const char *s);
void str_free(struct gstr *gs);
void str_append(struct gstr *gs, const char *s);
void str_printf(struct gstr *gs, const char *fmt, ...);
const char *str_get(struct gstr *gs);

 
void sym_init(void);
void sym_clear_all_valid(void);
void sym_set_all_changed(void);
void sym_set_changed(struct symbol *sym);
struct symbol *sym_check_deps(struct symbol *sym);
struct property *prop_alloc(enum prop_type type, struct symbol *sym);
struct symbol *prop_get_symbol(struct property *prop);

static inline tristate sym_get_tristate_value(struct symbol *sym)
{
	return sym->curr.tri;
}


static inline struct symbol *sym_get_choice_value(struct symbol *sym)
{
	return (struct symbol *)sym->curr.val;
}

static inline bool sym_set_choice_value(struct symbol *ch, struct symbol *chval)
{
	return sym_set_tristate_value(chval, yes);
}

static inline bool sym_is_choice(struct symbol *sym)
{
	return sym->flags & 0x0010  ? true  : false ;
}

static inline bool sym_is_choice_value(struct symbol *sym)
{
	return sym->flags & 0x0020  ? true  : false ;
}

static inline bool sym_is_optional(struct symbol *sym)
{
	return sym->flags & 0x0100  ? true  : false ;
}

static inline bool sym_has_value(struct symbol *sym)
{
	return sym->flags & 0x10000  ? true  : false ;
}

static inline int loc_rename(const char *old, const char *new)
{



	return rename(old, new);
}

static inline int loc_mkdir(const char *path, int mode)
{



	return mkdir(path, mode);

}






# 15 "conf.c" 2

 


static void conf(struct menu *menu);
static void check_conf(struct menu *menu);

enum {
	ask_all,
	ask_new,
	ask_silent,
	set_default,
	set_yes,
	set_mod,
	set_no,
	set_random
} input_mode = ask_all;
char *defconfig_file;

static int indent = 1;
static int valid_stdin = 1;
static int conf_cnt;
static char line[128];
static struct menu *rootEntry;

static char nohelp_text[] = ( "Sorry, no help available for this option yet.\n" ) ;

static const char *get_help(struct menu *menu)
{
	if (menu_has_help(menu))
		return menu_get_help(menu);
	else
		return nohelp_text;
}

static void strip(char *str)
{
	char *p = str;
	int l;

	while ((((__ctype + 1)[ *p ] & 0x00000008 ) ))
		p++;
	l = strlen(p);
	if (p != str)
		memmove(str, p, l + 1);
	if (!l)
		return;
	p = str + l - 1;
	while ((((__ctype + 1)[ *p ] & 0x00000008 ) ))
		*p-- = 0;
}

static void check_stdin(void)
{
	if (!valid_stdin && input_mode == ask_silent) {
		printf(((const char *) (  "aborted!\n\n"  ))  );
		printf(((const char *) (  "Console input/output is redirected. "  ))  );
		printf(((const char *) (  "Run 'make oldconfig' to update configuration.\n\n"  ))  );
		exit(1);
	}
}

static int conf_askvalue(struct symbol *sym, const char *def)
{
	enum symbol_type type = sym_get_type(sym);
	tristate val;

	if (!sym_has_value(sym))
		printf("(NEW) ");

	line[0] = '\n';
	line[1] = 0;

	if (!sym_is_changable(sym)) {
		printf("%s\n", def);
		line[0] = '\n';
		line[1] = 0;
		return 0;
	}

	switch (input_mode) {
	case set_no:
	case set_mod:
	case set_yes:
	case set_random:
		if (sym_has_value(sym)) {
			printf("%s\n", def);
			return 0;
		}
		break;
	case ask_new:
	case ask_silent:
		if (sym_has_value(sym)) {
			printf("%s\n", def);
			return 0;
		}
		check_stdin();
	case ask_all:
		fflush((&__iob[1]) );
		fgets(line, 128, (&__iob[0]) );
		return 1;
	case set_default:
		printf("%s\n", def);
		return 1;
	default:
		break;
	}

	switch (type) {
	case S_INT:
	case S_HEX:
	case S_STRING:
		printf("%s\n", def);
		return 1;
	default:
		;
	}
	switch (input_mode) {
	case set_yes:
		if (sym_tristate_within_range(sym, yes)) {
			line[0] = 'y';
			line[1] = '\n';
			line[2] = 0;
			break;
		}
	case set_mod:
		if (type == S_TRISTATE) {
			if (sym_tristate_within_range(sym, mod)) {
				line[0] = 'm';
				line[1] = '\n';
				line[2] = 0;
				break;
			}
		} else {
			if (sym_tristate_within_range(sym, yes)) {
				line[0] = 'y';
				line[1] = '\n';
				line[2] = 0;
				break;
			}
		}
	case set_no:
		if (sym_tristate_within_range(sym, no)) {
			line[0] = 'n';
			line[1] = '\n';
			line[2] = 0;
			break;
		}
	case set_random:
		do {
			val = (tristate)(random() % 3);
		} while (!sym_tristate_within_range(sym, val));
		switch (val) {
		case no: line[0] = 'n'; break;
		case mod: line[0] = 'm'; break;
		case yes: line[0] = 'y'; break;
		}
		line[1] = '\n';
		line[2] = 0;
		break;
	default:
		break;
	}
	printf("%s", line);
	return 1;
}

int conf_string(struct menu *menu)
{
	struct symbol *sym = menu->sym;
	const char *def;

	while (1) {
		printf("%*s%s ", indent - 1, "", menu->prompt->text);
		

        printf("(%s) ", sym->name); 

		def = sym_get_string_value(sym);
		if (sym_get_string_value(sym))
			printf("[%s] ", def);
		if (!conf_askvalue(sym, def))
			return 0;
		switch (line[0]) {
		case '\n':
			break;
		case '?':
			 
			if (line[1] == '\n') {
				printf("\n%s\n", get_help(menu));
				def = 0 ;
				break;
			}
		default:
			line[strlen(line)-1] = 0;
			def = line;
		}
		if (def && sym_set_string_value(sym, def))
			return 0;
	}
}

static int conf_sym(struct menu *menu)
{
	struct symbol *sym = menu->sym;
	int type;
	tristate oldval, newval;

	while (1) {
		printf("%*s%s ", indent - 1, "", menu->prompt->text);

		if (sym->name)
			printf("(%s) ", sym->name); 

		type = sym_get_type(sym);
		(--(  (&__iob[1])  )->_cnt < 0 ? __flsbuf(( ( '[' ) ), (  (&__iob[1])  )) : (int)(*(  (&__iob[1])  )->_ptr++ = (unsigned char) ( ( '[' ) )))  ;
		oldval = sym_get_tristate_value(sym);
		switch (oldval) {
		case no:
			(--(  (&__iob[1])  )->_cnt < 0 ? __flsbuf(( ( 'N' ) ), (  (&__iob[1])  )) : (int)(*(  (&__iob[1])  )->_ptr++ = (unsigned char) ( ( 'N' ) )))  ;
			break;
		case mod:
			(--(  (&__iob[1])  )->_cnt < 0 ? __flsbuf(( ( 'M' ) ), (  (&__iob[1])  )) : (int)(*(  (&__iob[1])  )->_ptr++ = (unsigned char) ( ( 'M' ) )))  ;
			break;
		case yes:
			(--(  (&__iob[1])  )->_cnt < 0 ? __flsbuf(( ( 'Y' ) ), (  (&__iob[1])  )) : (int)(*(  (&__iob[1])  )->_ptr++ = (unsigned char) ( ( 'Y' ) )))  ;
			break;
		}
		if (oldval != no && sym_tristate_within_range(sym, no))
			printf("/n");
		if (oldval != mod && sym_tristate_within_range(sym, mod))
			printf("/m");
		if (oldval != yes && sym_tristate_within_range(sym, yes))
			printf("/y");
		if (menu_has_help(menu))
			printf("/?");
		printf("] ");
		if (!conf_askvalue(sym, sym_get_string_value(sym)))
			return 0;
		strip(line);

		switch (line[0]) {
		case 'n':
		case 'N':
			newval = no;
			if (!line[1] || !strcmp(&line[1], "o"))
				break;
			continue;
		case 'm':
		case 'M':
			newval = mod;
			if (!line[1])
				break;
			continue;
		case 'y':
		case 'Y':
			newval = yes;
			if (!line[1] || !strcmp(&line[1], "es"))
				break;
			continue;
		case 0:
			newval = oldval;
			break;
		case '?':
			goto help;
		default:
			continue;
		}
		if (sym_set_tristate_value(sym, newval))
			return 0;
help:
		printf("\n%s\n", get_help(menu));
	}
}

static int conf_choice(struct menu *menu)
{
	struct symbol *sym, *def_sym;
	struct menu *child;
	int type;
	bool is_new;

	sym = menu->sym;
	type = sym_get_type(sym);
	is_new = !sym_has_value(sym);
	if (sym_is_changable(sym)) {
		conf_sym(menu);
		sym_calc_value(sym);
		switch (sym_get_tristate_value(sym)) {
		case no:
			return 1;
		case mod:
			return 0;
		case yes:
			break;
		}
	} else {
		switch (sym_get_tristate_value(sym)) {
		case no:
			return 1;
		case mod:
			printf("%*s%s\n", indent - 1, "", menu_get_prompt(menu));
			return 0;
		case yes:
			break;
		}
	}

	while (1) {
		int cnt, def;

		printf("%*s%s\n", indent - 1, "", menu_get_prompt(menu));
		def_sym = sym_get_choice_value(sym);
		cnt = def = 0;
		line[0] = 0;
		for (child = menu->list; child; child = child->next) {
			if (!menu_is_visible(child))
				continue;
			if (!child->sym) {
				printf("%*c %s\n", indent, '*', menu_get_prompt(child));
				continue;
			}
			cnt++;
			if (child->sym == def_sym) {
				def = cnt;
				printf("%*c", indent, '>');
			} else
				printf("%*c", indent, ' ');
			printf(" %d. %s", cnt, menu_get_prompt(child));
			

            if (child->sym->name)
				printf(" (%s)", child->sym->name);  

			if (!sym_has_value(child->sym))
				printf(" (NEW)");
			printf("\n");
		}
		printf("%*schoice", indent - 1, "");
		if (cnt == 1) {
			printf("[1]: 1\n");
			goto conf_childs;
		}
		printf("[1-%d", cnt);
		if (menu_has_help(menu))
			printf("?");
		printf("]: ");
		switch (input_mode) {
		case ask_new:
		case ask_silent:
			if (!is_new) {
				cnt = def;
				printf("%d\n", cnt);
				break;
			}
			check_stdin();
		case ask_all:
			fflush((&__iob[1]) );
			fgets(line, 128, (&__iob[0]) );
			strip(line);
			if (line[0] == '?') {
				printf("\n%s\n", get_help(menu));
				continue;
			}
			if (!line[0])
				cnt = def;
			else if (((__ctype + 1)[ line[0] ] & 0x00000004 ) )
				cnt = atoi(line);
			else
				continue;
			break;
		case set_random:
			def = (random() % cnt) + 1;
		case set_default:
		case set_yes:
		case set_mod:
		case set_no:
			cnt = def;
			printf("%d\n", cnt);
			break;
		}

	conf_childs:
		for (child = menu->list; child; child = child->next) {
			if (!child->sym || !menu_is_visible(child))
				continue;
			if (!--cnt)
				break;
		}
		if (!child)
			continue;
		if (line[strlen(line) - 1] == '?') {
			printf("\n%s\n", get_help(child));
			continue;
		}
		sym_set_choice_value(sym, child->sym);
		if (child->list) {
			indent += 2;
			conf(child->list);
			indent -= 2;
		}
		return 1;
	}
}

static void conf(struct menu *menu)
{
	struct symbol *sym;
	struct property *prop;
	struct menu *child;

	if (!menu_is_visible(menu))
		return;

	sym = menu->sym;
	prop = menu->prompt;
	if (prop) {
		const char *prompt;

		switch (prop->type) {
		case P_MENU:
			if (input_mode == ask_silent && rootEntry != menu) {
				check_conf(menu);
				return;
			}
		case P_COMMENT:
			prompt = menu_get_prompt(menu);
			if (prompt)
				printf("%*c\n%*c %s\n%*c\n",
					indent, '*',
					indent, '*', prompt,
					indent, '*');
		default:
			;
		}
	}

	if (!sym)
		goto conf_childs;

	if (sym_is_choice(sym)) {
		conf_choice(menu);
		if (sym->curr.tri != mod)
			return;
		goto conf_childs;
	}

	switch (sym->type) {
	case S_INT:
	case S_HEX:
	case S_STRING:
		conf_string(menu);
		break;
	default:
		conf_sym(menu);
		break;
	}

conf_childs:
	if (sym)
		indent += 2;
	for (child = menu->list; child; child = child->next)
		conf(child);
	if (sym)
		indent -= 2;
}

static void check_conf(struct menu *menu)
{
	struct symbol *sym;
	struct menu *child;

	if (!menu_is_visible(menu))
		return;

	sym = menu->sym;
	if (sym && !sym_has_value(sym)) {
		if (sym_is_changable(sym) ||
		    (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)) {
			if (!conf_cnt++)
				printf(((const char *) (  "*\n* Restart config...\n*\n"  ))  );
			rootEntry = menu_get_parent_menu(menu);
			conf(rootEntry);
		}
	}

	for (child = menu->list; child; child = child->next)
		check_conf(child);
}

int main(int ac, char **av)
{
	int i = 1;
	const char *name;
	struct stat tmpstat;

	if (ac > i && av[i][0] == '-') {
		switch (av[i++][1]) {
		case 'o':
			input_mode = ask_new;
			break;
		case 's':
			input_mode = ask_silent;
			valid_stdin = isatty(0) && isatty(1) && isatty(2);
			break;
		case 'd':
			input_mode = set_default;
			break;
		case 'D':
			input_mode = set_default;
			defconfig_file = av[i++];
			if (!defconfig_file) {
				printf(((const char *) (  "%s: No default config file specified\n"  ))  ,
					av[0]);
				exit(1);
			}
			break;
		case 'n':
			input_mode = set_no;
			break;
		case 'm':
			input_mode = set_mod;
			break;
		case 'y':
			input_mode = set_yes;
			break;
		case 'r':
			input_mode = set_random;
			srandom(time(0 ));
			break;
		case 'h':
		case '?':
			fprintf((&__iob[2]) , "See README for usage info\n");
			exit(0);
		}
	}
  	name = av[i];
	if (!name) {
		printf(((const char *) (  "%s: VxConfig file missing\n"  ))  , av[0]);
		exit(1);
	}
	conf_parse(name);
	 
	switch (input_mode) {
	case set_default:
		if (!defconfig_file)
			defconfig_file = conf_get_default_confname();
		if (conf_read(defconfig_file)) {
			printf("***\n"
				"*** Can't find default configuration \"%s\"!\n"
				"***\n", defconfig_file);
			exit(1);
		}
		break;
	case ask_silent:
		if (stat("vxlib.mk", &tmpstat)) {
			printf(((const char *) (  "***\n"
				"missing configuration file can not run in silent mode"
				"***\n"  ))  );
			exit(1);
		}
	case ask_all:
	case ask_new:
		conf_read(0 );
		break;
	case set_no:
	case set_mod:
	case set_yes:
	case set_random:
		name = getenv("VCONFIG_ALLCONFIG");
		if (name && !stat(name, &tmpstat)) {
			conf_read_simple(name, S_DEF_USER);
			break;
		}
		switch (input_mode) {
		case set_no:	 name = "allno.config"; break;
		case set_mod:	 name = "allmod.config"; break;
		case set_yes:	 name = "allyes.config"; break;
		case set_random: name = "allrandom.config"; break;
		default: break;
		}
		if (!stat(name, &tmpstat))
			conf_read_simple(name, S_DEF_USER);
		else if (!stat("all.config", &tmpstat))
			conf_read_simple("all.config", S_DEF_USER);
		break;
	default:
		break;
	}

	if (input_mode != ask_silent) {
		rootEntry = &rootmenu;
		conf(&rootmenu);
		if (input_mode == ask_all) {
			input_mode = ask_silent;
			valid_stdin = 1;
		}
	} else if (conf_get_changed()) {
		name = getenv("VCONFIG_NOSILENTUPDATE");
		if (name && *name) {
			fprintf((&__iob[2]) , ((const char *) (  "\n*** VxWorks Library configuration requires explicit update.\n\n"  ))  );
			return 1;
		}
	} else
		goto skip_check;

	do {
		conf_cnt = 0;
		check_conf(&rootmenu);
	} while (conf_cnt);
	if (conf_write(0 )) {
		fprintf((&__iob[2]) , ((const char *) (  "\n*** Error during writing of the VxWorks Library configuration.\n\n"  ))  );
		return 1;
	}
skip_check:
	if (input_mode == ask_silent && conf_write_autoconf()) {
		fprintf((&__iob[2]) , ((const char *) (  "\n*** Error during writing of the VxWorks Library configuration.\n\n"  ))  );
		return 1;
	}

	return 0;
}
