/* @(#) options.h 2.22 88/08/24 15:27:36 */

/*
The contents of this file are hereby released to the public domain.
									-- Rahul Dhesi 1991/07/06

For documentation about this file, see options.doc.
*/

#define ZOO /* always defined */
#define PORTABLE		/* always defined */
#define ZOOCOMMENT	/* always defined */


/***********************************************************************/
/* SYSTEM V (should be compatible with most releases)                  */
/***********************************************************************/

#ifdef SYS_V
#define FILTER
#define IO_MACROS
#define EXISTS(f)    (access(f, 00) == 0)
#define FNLIMIT 14
#define CHEKDIR
#define NIXTIME
#define NIXFNAME
#define NEEDCTYP
#define NOENUM
#define REN_LINK
#define SETBUF
#define GETTZ
#define FATTR
#define T_SIGNAL	void
#define VARARGS
#define NEED_MEMMOVE
/* #define NEED_MEMCPY */
#define T_UINT16		unsigned short /* must be 16 bit unsigned */
#define HAVE_ISATTY
/* #define NEED_VPRINTF */
#endif /* SYS_V */

/***********************************************************************/
/* Turbo C++ 1.0 under MS-DOS 								  */
/***********************************************************************/

#ifdef TURBOC
#undef PORTABLE
#define ANSI_HDRS
#define USE_ASCII
#define SPECINIT
#define SPECEXIT
#define PURIFY
#define DISK_CH ':'
#define IGNORECASE
#define WILDCARD "*.*"
#define FOLD
#define FORCESLASH
#define FNLIMIT 12
#define CUR_DIR "."
#define PATH_SEP ":/\\"
#define EXT_SEP  ":/\\."
#define SETMODE
/* 0x8000 and 0x4000 taken from <fcntl.h> for Turbo C */
#define MODE_BIN(f)      setmode(fileno(f), 0x8000)
#define MODE_TEXT(f)     setmode(fileno(f), 0x4000)
#define NEED_STDIO
#define ANSI_PROTO
#define VOIDPTR void *
#define REN_STDC
#define STDARG
#define T_UINT16		unsigned short /* must be 16 bit unsigned */
/* #define UNBUF_IO */
/* #define UNBUF_LIMIT	512 */
#define T_SIGNAL void
#define DIRECT_CONVERT
#define STDARG
#define CHECK_BREAK
#define check_break kbhit
#define HAVE_ISATTY
#ifdef	PORTABLE /* for testing only */
# define SPECNEXT
# define NIXTIME
# undef WILDCARD
#endif
#endif /* TURBOC */

/***********************************************************************/
/* Older BSD 4.3 and most derivatives											  */
/***********************************************************************/

#ifdef BSD4_3
#define NOSTRCHR /* not really needed for 4.3BSD */
#define FILTER
#define IO_MACROS
#define EXISTS(f)    (access(f, 00) == 0)
#define FNLIMIT 1023
#define CHEKDIR
#define NIXTIME
#define NIXFNAME
#define NEEDCTYP
#define NOENUM
#define REN_STDC
#define SETBUF
#define GETTZ
#define FATTR
#define T_SIGNAL	int
#define VARARGS
#define NEED_MEMMOVE
#define T_UINT16		unsigned short /* must be 16 bit unsigned */
#define HAVE_ISATTY
#define NEED_VPRINTF /* older BSDs only; newer ones have vprintf */
#endif /* BSD4_3 */

/*  Ultrix 4.1 */
#ifdef ULTRIX
#define NO_STDIO_FN	/* avoid declaring certain stdio functions */
#define NOSTRCHR /* needed? */
#define FILTER
#define IO_MACROS
#define EXISTS(f)    (access(f, 00) == 0)
#define FNLIMIT 1023
#define CHEKDIR
#define NIXTIME
#define NIXFNAME
#define NEEDCTYP
#define NOENUM
#define REN_STDC
#define SETBUF
#define GETTZ
#define FATTR
#define T_SIGNAL	void
#define VARARGS
#define NEED_MEMMOVE
#define T_UINT16	unsigned short /* must be 16 bit unsigned */
#define HAVE_ISATTY
/* #define NEED_VPRINTF */
#define BSD4_3 /* for I/O definitions */
#endif /* ULTRIX */

/***********************************************************************/
/* Newer BSD 4.4 (projected)                                           */
/***********************************************************************/

#ifdef BSD4_4
/* #define NOSTRCHR */
#define FILTER
#define IO_MACROS
#define EXISTS(f)    (access(f, 00) == 0)
#define FNLIMIT 1023
#define CHEKDIR
#define NIXTIME
#define NIXFNAME
#define NEEDCTYP
/* #define NOENUM */
#define REN_STDC
#define SETBUF
#define GETTZ
#define FATTR
#define T_SIGNAL	void
/* #define VARARGS */
/* #define NEED_MEMMOVE */
#define T_UINT16		unsigned short /* must be 16 bit unsigned */
#define HAVE_ISATTY
/* #define NEED_VPRINTF */
#endif /* BSD4_4 */

/***********************************************************************/
/* VAX/VMS version 5.3 or so														  */
/***********************************************************************/

#ifdef VMS

/*
Select VMS pre-4.6 or later next line. Pre-4.6 library does not have
rename() and memset() so zoo defines its own;  4.6 has these, so we
must use them, else VMS library functions will conflict with our
own.
*/
# if 0		/* Make this 1 for VMS version 4.5 or earlier */
#	define NEED_VMS_RENAME	/* used in vms.c */
#	define NEED_MEMSET
# endif
#define REN_STDC
#define IO_MACROS
#define SPEC_WILD
#define EXT_ANYWAY
#define VER_CH ';'
#define SPECEXIT
#define CHEKUDIR
#define FNLIMIT 78
#define DIR_SEP '.'  /* separates dir fields */
#define DISK_CH ':'
#define DIR_LBRACK "[" /* left bracketing symbol dir dir name */
#define PATH_CH "]"
#define PATH_SEP ":]"
#define EXT_SEP ":]."
#define CUR_DIR "."
#define NIXTIME
#define NEEDCTYP
#define NOENUM
#define IGNORECASE
#define SPECMOD
#define SPECNEXT
#define WILDCARD "*.*"
#define FOLD
#define NO_STDIO_FN
#define T_SIGNAL	void
#define T_UINT16		unsigned short /* must be 16 bit unsigned */
#define VARARGS
#endif /* VMS */

/***********************************************************************/
/* AMIGA: DICE or AZTEC C 3.6 												  */
/***********************************************************************/

#ifdef MCH_AMIGA
#define DISK_CH ':'
#define SPECNEXT
/*#define WILDCARD "*"*/
#define IGNORECASE
#define FNLIMIT 30
#define NEEDCTYP
#define CUR_DIR "."
#define PATH_SEP ":/"
#define EXT_SEP  ":/."
#define REN_STDC
/*#define NOENUM*/
/*#define SETBUF*/
#define CHEKUDIR
#define GETUTIME
#define NIXTIME
#define T_UINT16		unsigned short /* must be 16 bit unsigned */
#define T_INT16 short int
#define FATTR
#define FATTR_NAME
#ifdef __STDC__
# define LINT_ARGS							/* old but still used */
# define ANSI_PROTO
# define ANSI_HDRS
# define MORE	 ...
# define STDARG
#else
# define VARARGS
#endif
#define NOTHING void
#define VOIDPTR void *
#define T_SIGNAL void
#define SPECINIT
#define SPECEXIT
/* FAST_EXT requires changes to zooext.c, zooadd*.c, zoo.h;
 * ifndef PORTABLE becomes ifdef FAST_EXT in many cases
 */
#define FAST_EXT
#ifndef __STDC__
# define NEED_MEMCPY
# define NEED_MEMSET
# define NEED_MEMMOVE
# define NEED_VPRINTF
#endif
#ifdef AZTEC_C
# define NEED_SIGNAL /* These SIGNAL defines are related */
# define CHECK_BREAK
# define check_break Chk_Abort
# ifndef SIGINT
#	define SIGINT			1
# endif /* ndef SIGINT */
#endif /* def AZTEC_C */
#endif /* def MCH_AMIGA */

/***********************************************************************/
/* GENERIC **IX SYSTEM -- GOOD STARTING POINT FOR YOURS	 */
/***********************************************************************/

#ifdef GENERIC
/* #define SPECNEXT */
/* #define IGNORECASE */
#define FNLIMIT 14
#define NEEDCTYP
#define CUR_DIR "."
#define PATH_SEP "/"
#define EXT_SEP  "/."
/* #define NOSIGNAL */
/* REN_LINK is UNIX-specific.  Can't find a generic rename() function */
#define REN_LINK
#define NOENUM
/* #define SETBUF */
#define CHEKDIR
#define NIXTIME
#define HAVE_ISATTY
#define NEED_MEMMOVE
#endif /* GENERIC */


/***********************************************************************/
/* REST OF THIS FILE SHOULD NOT NEED ANY CHANGES							  */
/***********************************************************************/

/***********************************************************************/
/*  Common filename conventions for **IX systems							  */
/***********************************************************************/

#ifdef NIXFNAME
#define CUR_DIR "."
#define PATH_SEP "/"
#define EXT_CH '.'
#define EXT_SEP  "/."
#define EXT_DFLT ".zoo"
#endif

/* Compensate for strchr/index differences */
#ifdef NOSTRCHR
#define strchr index
#define strrchr rindex
#endif

/* let non-**IX lints under **IX work (see makefile) */
#ifdef CROSS_LINT
# undef ANSI_HDRS
# undef ANSI_PROTO
# ifdef STDARG
#	undef STDARG
#	define VARARGS
# endif /* STDARG */
#endif

/* assume certain defaults */
#ifndef VOIDPTR
# define VOIDPTR	 char *
#endif

#ifndef VER_DISPLAY
# define VER_DISPLAY ";"
#endif
#ifndef VER_INPUT
# define VER_INPUT ":;"
#endif
#ifndef PATH_CH
# define PATH_CH "/"
#endif
#ifndef EXT_CH
# define EXT_CH '.'
#endif
#ifndef EXT_DFLT
# define EXT_DFLT ".zoo"
#endif

#ifndef STDARG
# ifndef VARARGS
#	define VARARGS
# endif
#endif

#ifndef T_SIGNAL
# define T_SIGNAL int
#endif

#ifdef STDARG
# ifdef VARARGS
# include "DO NOT DEFINE BOTH STDARG AND VARARGS"
# endif
#endif

/* We supply a default for T_UINT16 if it is not defined.  But this
value is critical, so we compile in a runtime check. */

#ifndef T_UINT16
# define T_UINT16 unsigned short
# define CHECK_TUINT /* will do runtime check for correct size */
#endif

/* ANSI compatibility in declarations -- see zoofns.h for usage */
#ifndef PARMS
# ifdef ANSI_PROTO
#	define PARMS(x)      x
# else
#	define PARMS(x)      ()
# endif
#endif
