/*
 * config.h -- configure various defines for tcsh
 *
 * All source files should #include this FIRST.
 *
 * Edit this to match your system type.
 */
#ifndef _h_config
#define _h_config

#ifdef PL8CC
/* for an RT running the IBM Sys. V version of AIX. -- tells the compiler
   reasonable things. MUST BE the fist thing the compiler sees */
\option MAXD(20000,20000) MAXS(50000,50000) MAXL(20000,20000) MAXH(20000,20000);
\option MAXA(20000,20000) MAXP(500) EL_SIZE(20000) ET_SIZE(30000);
\option OPTIONS UNSAFE;
#endif

#if defined(_AIX) && defined(_I386) && defined(aiws)
# undef aiws	/* not an rt */
#endif /* _AIX && _386 && aiws */

/****************** System dependant compilation flags ****************/
/*
 * POSIX	This system supports IEEE Std 1003.1-1988 (POSIX).
 */
#if defined(_IBMR2)
#define POSIX
#else
#undef POSIX
#endif

/*
 * POSIXJOBS	This system supports the optional IEEE Std 1003.1-1988 (POSIX)
 *		job control facilities.
 */
#ifndef aiws
#define POSIXJOBS
#else
#undef POSIXJOBS
#endif

/*
 * POSIXSIGS	Use the POSIX signal facilities to emulate BSD signals.
 */
#ifdef _AIX32
#define POSIXSIGS
#else
#undef POSIXSIGS
#endif

/*
 * VFORK	This machine has a vfork().  
 *		It used to be that for job control to work, this define
 *		was mandatory. This is not the case any more.
 *		If you think you still need it, but you don't have vfork, 
 *		define this anyway and then do #define vfork fork.  
 *		I do this anyway on a Sun because of yellow pages brain damage,
 *		[should not be needed under 4.1]
 *		and on the iris4d cause	SGI's fork is sufficiently "virtual" 
 *		that vfork isn't necessary.  (Besides, SGI's vfork is weird).
 *		Note that some machines eg. rs6000 have a vfork, but not
 *		with the berkeley semantics, so we cannot use it there either.
 */
#undef VFORK

/*
 * BSDJOBS	You have BSD-style job control (both process groups and
 *		a tty that deals correctly
 */
#ifndef aiws
# define BSDJOBS
#else
# undef BSDJOBS
#endif

/*
 * BSDSIGS	You have 4.2-style signals, rather than USG style.
 *		Note: POSIX systems should not define this unless they
 *		have sigvec() and friends (ie: 4.3BSD-RENO, HP-UX).
 */
/* AIX 3.2.5 might need undef'ing this */
#define BSDSIGS

/*
 * BSDTIMES	You have BSD-style process time stuff (like rusage)
 *		This may or may not be true.  For example, Apple Unix
 *		(OREO) has BSDJOBS and BSDSIGS but not BSDTIMES.
 */
#ifndef aiws
# define BSDTIMES
#else
# undef BSDTIMES
#endif

/*
 * BSDLIMIT	You have BSD-style resource limit stuff (getrlimit/setrlimit)
 */
#ifndef aiws
# define BSDLIMIT
#else
# undef BSDLIMIT
#endif 

/*
 * BSDNICE	Your system uses setpriority() instead of nice, to
 *		change a processes scheduling priority
 */
#ifndef aiws
# define BSDNICE
#else
# undef BSDNICE
#endif

/*
 * TERMIO	You have struct termio instead of struct sgttyb.
 * 		This is usually the case for SYSV systems, where
 *		BSD uses sgttyb. POSIX systems should define this
 *		anyway, even though they use struct termios.
 */
#if defined(_IBMR2) || defined(aiws)
# define TERMIO
#else
# undef TERMIO
#endif /* _IBMR2 || aiws */

/*
 * SYSVRELYour machine is SYSV based (HPUX, A/UX)
 *		NOTE: don't do this if you are on a Pyramid -- tcsh is
 *		built in a BSD universe.
 *		Set SYSVREL to 1, 2, 3, or 4, depending the version of System V
 *		you are running. Or set it to 0 if you are not SYSV based
 */
#ifndef aiws
# define SYSVREL	0
#else
# define SYSVREL	2
#endif /* aiws */

/*
 * YPBUGS	Work around Sun YP bugs that cause expansion of ~username
 *		to send command output to /dev/null
 */
#undef YPBUGS

/*
 * SIGVOID	Define this if your signal handlers return void.  On older
 *		systems, signal returns int, but on newer ones, it returns void.
 */
#if (defined(_AIX) && defined(_I386)) || defined(aiws)
# undef SIGVOID
#else /* _AIX && _I386 */
# define SIGVOID 
#endif /* (_AIX && _I386) || aiws */

/*
 * HAVEDUP2	Define this if your system supports dup2().
 */
#define HAVEDUP2

/*
 * UTHOST	Does the utmp file have a host field?
 */
#ifndef aiws
# define UTHOST
#else
# undef UTHOST
#endif

/*
 * DIRENT	Your system has <dirent.h> instead of <sys/dir.h>
 */
#define DIRENT

/****************** local defines *********************/
/*
 * IBMAIX	You are running aix on the ps2, rs6000, on ibm370
 */
#define IBMAIX

/*
 * TCF		You have the transparent computing facility.
 */
#if !defined(_IBMR2) && !defined(aiws)
# define TCF	/* ps2 and 370 have TCF */
#else
# undef TCF	/* The rs6000 and the rt does not have TCF yet */
#endif

#if defined(_AIX) && defined(_I386)
# define _AIXPS2	/* give a more sane name */
#endif /* _AIX && _386 */

#if defined(_AIXPS2)
# define _NO_PROTO
# define _BSD
# define _BSD_INCLUDES
#endif /* _AIXPS2 */

#if defined(_IBMR2)
# define _POSIX_SOURCE
# define _ALL_SOURCE	/* for window size etc, extra tty chars etc. */
#endif

#ifdef NLS
# undef NLS	/* Let us decide in config_f.h... */
#endif /* NLS */

/*
 * NOSTRCOLL	We don't have strcoll()
 */
#ifndef _IBMR2
# define NOSTRCOLL	/* only the rs6000 has strcoll() */
#endif

/*
 * Function pointer comparisons are broken
 */
#ifdef aiws
#define void int
#endif /* aiws */

/* > 2GB file support (stat64 etc.) */
#define _LARGE_FILES

/****************** configurable hacks ****************/
/* have been moved to config_f.h */

#include "config_f.h"

#if defined(_AIXPS2) || defined(aiws)
# undef NLS
# undef NLS_CATALOGS
#endif

#endif /* _h_config */