This commit was manufactured by cvs2svn to create tag 'FreeBSD-release/1.0'.
[unix-history] / usr.bin / elvis / config.h
index ef121fd..9ad48e8 100644 (file)
 /*
  * vi configuration file
 /*
  * vi configuration file
+ * We try to automatically configure to various compilers and operating
+ * systems. Extend the autoconf section as needed.
  */
 
  */
 
+#ifndef _CONFIG_H
+# define _CONFIG_H
+
+/*************************** autoconf section ************************/
+
+/* Commodore-Amiga */
+#ifdef amiga
+# define AMIGA         1
+# define COMPILED_BY   "Manx Aztec C 5.2b"
+# define TINYSTACK     1
+#endif
+
+/* standard unix V (?) */
+#ifdef M_SYSV
+# define UNIXV         1
+# ifdef M_XENIX
+#  ifndef M_I386
+#   define TINYSTACK   1
+#  endif
+# endif
+# undef COHERENT
+#endif
+
+/* xelos system, University of Ulm */
+#ifdef xelos
+# define UNIXV         1
+#endif
+
+/* BSD UNIX? */
+#ifdef bsd
 # define BSD           1
 # define BSD           1
+#else
+# ifdef sun
+#  ifndef M_SYSV
+#   define BSD         1
+#  endif
+# endif
+#endif
+
+/* Microsoft C: sorry, Watcom does the same thing */
+#ifdef M_I86
+# ifndef M_SYSV
+#  define MSDOS                1
+#  ifdef IBMC2
+#   define COMPILED_BY "IBM C/2 1.00"
+#  else
+#   define MICROSOFT   1
+#   define COMPILED_BY "Microsoft C 5.10"
+#  endif
+#  define TINYSTACK    1
+# endif
+#endif
+
+/* Borland's Turbo C */
+#ifdef __TURBOC__
+# define MSDOS         1
+# define TURBOC                1
+# ifdef __BORLANDC__
+# define COMPILED_BY   "Borland C 2.00"
+# else
+# define COMPILED_BY   (__TURBOC__ >= 661 ? "Turbo C++ 1.00" : "Turbo C 2.00")
+# endif
+# define TINYSTACK     1
+#endif
+
+/* Tos Mark-Williams */
+#ifdef M68000
+# define TOS 1
+# define COMPILED_BY   "Mark Williams C"
+# define TINYSTACK     1
+#endif
+
+/* Tos GNU-C */
+#ifdef __atarist__
+# ifdef __gem__
+#  define TOS 1
+#  define COMPILED_BY  "GNU-C " __VERSION__
+#  define TINYSTACK    1
+# endif
+#endif
 
 
+/* OS9/68000 */
+#ifdef OSK
+# define COMPILED_BY   "Microware C V2.3 Edition 40"
+# define TINYSTACK     1
+#endif
+
+/* DEC Rainbow, running MS-DOS (handled by earlier MS-DOS tests) */
+/* (would need -DRAINBOW in CFLAGS to compile a Rainbow-compatible .EXE) */
+
+#ifdef VMS
+# define COMPILED_BY    "VAX/VMS VAXC compiler"
+# undef VMS
+# define VMS 1
+#endif
+
+
+#ifdef COHERENT
+# ifdef _I386
+#  define COH_386 1
+#  define COH_286 0
+# else
+#  define COH_386 0
+#  define COH_286 1
+# endif
+# undef COHERENT
+# define COHERENT 1
+#endif
+
+/*************************** end of autoconf section ************************/
 
 /* All undefined symbols are defined to zero here, to allow for older    */
 /* compilers which dont understand #if defined() or #if UNDEFINED_SYMBOL */
 
 
 /* All undefined symbols are defined to zero here, to allow for older    */
 /* compilers which dont understand #if defined() or #if UNDEFINED_SYMBOL */
 
+/*************************** operating systems *****************************/
+#ifndef        BSD
+# define BSD   0               /* UNIX - Berkeley 4.x */
+#endif
+
+#ifndef        UNIXV
 # define UNIXV 0               /* UNIX - AT&T SYSV */
 # define UNIXV 0               /* UNIX - AT&T SYSV */
+#endif
+
+#ifndef        UNIX7
 # define UNIX7 0               /* UNIX - version 7 */
 # define UNIX7 0               /* UNIX - version 7 */
+#endif
+
+#ifndef        MSDOS
 # define MSDOS 0               /* PC           */
 # define MSDOS 0               /* PC           */
+#endif
+
+#ifndef        TOS
 # define TOS   0               /* Atari ST     */
 # define TOS   0               /* Atari ST     */
+#endif
+
+#ifndef        AMIGA
 # define AMIGA 0               /* Commodore Amiga */
 # define AMIGA 0               /* Commodore Amiga */
+#endif
+
+#ifndef OSK
 # define OSK   0               /* OS-9 / 68k */
 # define OSK   0               /* OS-9 / 68k */
+#endif
+
+#ifndef COHERENT
 # define COHERENT 0            /* Coherent */
 # define COHERENT 0            /* Coherent */
+#endif
+
+#ifndef RAINBOW                        /* DEC Rainbow support, under MS-DOS */
+# define RAINBOW 0
+#endif
+
+#ifndef VMS
+# define VMS 0                  /* VAX/VMS */
+#endif
+
+                               /* Minix has no predefines */
+#if !BSD && !UNIXV && !UNIX7 && !MSDOS && !TOS && !AMIGA && !OSK && !COHERENT && !VMS
+# define MINIX 1
+#else
 # define MINIX 0
 # define MINIX 0
+#endif
 
 
+                               /* generic combination of Unices */
+#if UNIXV || UNIX7 || BSD || MINIX || COHERENT
 # define ANY_UNIX 1
 # define ANY_UNIX 1
+#else
+# define ANY_UNIX 0
+#endif
+
+#ifndef TINYSTACK
+# define TINYSTACK 0
+#endif
+
+/*************************** compilers **************************************/
+#ifndef        AZTEC_C
+# define AZTEC_C       0
+#endif
+
+#ifndef        MICROSOFT
+# define MICROSOFT     0
+#endif
+
+#ifndef        TURBOC
+# define TURBOC                0
+#endif
+
+/* Should we use "new style" ANSI C prototypes? */
+#ifdef __STDC__
+# define NEWSTYLE 1
+#endif
+#ifdef __cplusplus
+# define NEWSTYLE 1
+#endif
+#ifndef NEWSTYLE
+# define NEWSTYLE 0
+#endif
+
+#if NEWSTYLE
+# define P_(s) s
+#else
+# define P_(s) ()
+#endif
 
 /******************************* Credit ************************************/
 
 #if MSDOS
 # define CREDIT "Ported to MS-DOS by Guntram Blohm & Martin Patzel"
 
 /******************************* Credit ************************************/
 
 #if MSDOS
 # define CREDIT "Ported to MS-DOS by Guntram Blohm & Martin Patzel"
+# if RAINBOW
+#  define CREDIT2 "Rainbow support added by Willett Kempton"
+# endif
+#endif
+
+#if AMIGA
+# define CREDIT "Ported to AmigaDOS 2.04 by Mike Rieser & Dale Rahn"
 #endif
 
 #if TOS
 #endif
 
 #if TOS
 # define CREDIT        "Ported to Coherent by Esa Ahola"
 #endif
 
 # define CREDIT        "Ported to Coherent by Esa Ahola"
 #endif
 
+#if VMS
+# define CREDIT "Ported to VAX/VMS by John Campbell"
+#endif
 /*************************** functions depending on OS *********************/
 
 /*************************** functions depending on OS *********************/
 
+/* There are two terminal-related functions that we need: ttyread() and
+ * ttywrite().  The ttyread() function implements read-with-timeout and is
+ * a true function on all systems.  The ttywrite() function is almost always
+ * just a macro...
+ */
+#if !TOS && !AMIGA
+# define ttywrite(buf, len)    write(1, buf, (unsigned)(len))  /* raw write */
+#endif
+
+/* The strchr() function is an official standard now, so everybody has it
+ * except Unix version 7 (which is old) and BSD Unix (which is academic).
+ * Those guys use something called index() to do the same thing.
+ */
+#if BSD || UNIX7 || OSK
+# define strchr        index
+# define strrchr rindex
+#endif
+#if !NEWSTYLE
 extern char *strchr();
 extern char *strchr();
+#endif
+
+/* BSD uses bcopy() instead of memcpy() */
+#if BSD
+# define memcpy(dest, src, siz)        bcopy(src, dest, siz)
+#endif
+
+/* BSD uses getwd() instead of getcwd().  The arguments are a little different,
+ * but we'll ignore that and hope for the best; adding arguments to the macro
+ * would mess up an "extern" declaration of the function.
+ *
+ * Also, the Coherent-286 uses getwd(), but Coherent-386 uses getcwd()
+ */
+#if BSD
+#ifndef __386BSD__
+# define getcwd        getwd
+#endif
+#endif
+#if COH_286
+# define getcwd getwd
+#endif
+extern char *getcwd();
 
 
+/* text versa binary mode for read/write */
+#if !TOS
 #define        tread(fd,buf,n)         read(fd,buf,(unsigned)(n))
 #define twrite(fd,buf,n)       write(fd,buf,(unsigned)(n))
 #define        tread(fd,buf,n)         read(fd,buf,(unsigned)(n))
 #define twrite(fd,buf,n)       write(fd,buf,(unsigned)(n))
+#endif
+
+/**************************** Compiler quirks *********************************/
 
 
-#define ttywrite(buf, len)     write(1, buf, (unsigned)(len))  /* raw write */
+/* the UNIX version 7 and (some) TOS compilers, don't allow "void" */
+#if UNIX7 || TOS
+# define void int
+#endif
+
+/* as far as I know, all compilers except version 7 support unsigned char */
+/* NEWFLASH: the Minix-ST compiler has subtle problems with unsigned char */
+#if UNIX7 || MINIX
+# define UCHAR(c)      ((c) & 0xff)
+# define uchar         char
+#else
+# define UCHAR(c)      ((unsigned char)(c))
+# define uchar         unsigned char
+#endif
 
 
+/* Some compilers prefer to have malloc declared as returning a (void *) */
+/* ANSI, on the other hand, needs the arguments to free() to be cast */
+#ifndef        __STDC__
+# if BSD || AMIGA || MINIX
 extern void *malloc();
 extern void *malloc();
+#  define _free_(ptr)  free((void *)ptr)
+# else
+extern char *malloc();
+#  define _free_(ptr)  free((char *)ptr)
+# endif
+#else
+# define _free_(ptr)   free((void *)ptr)
+#endif /* __STDC__ */
+
+/* everybody but Amiga wants lseek declared here */
+#if !AMIGA
+extern long lseek();
+#endif
 
 
-/* Most compilers could benefit from using the "register" storage class */
-#if 1
-# define REG   register
+/* ANSI C has getenv() declared in stdlib.h, which we've already included.
+ * Other compilers will need it declared here, though.
+ */
+#ifndef __STDC__
+extern char *getenv();
 #endif
 
 #endif
 
-typedef        unsigned char uchar;
-#define        UCHAR(s)        ((unsigned char) (s))
+/* Signal handler functions used to return an int value, which was ignored.
+ * On newer systems, signal handlers are void functions.  Here, we try to
+ * guess the proper return type for this system.
+ */
+#ifdef __STDC__
+# define SIGTYPE void
+#else
+# if MSDOS
+#  define SIGTYPE void
+# else
+#  if UNIXV
+#   define SIGTYPE void                /* Note: This is wrong for SCO Xenix. */
+#  endif
+# endif
+#endif
+#ifndef SIGTYPE
+# define SIGTYPE int
+#endif
 
 /******************* Names of files and environment vars **********************/
 
 
 /******************* Names of files and environment vars **********************/
 
-#define TMPDIR "/var/tmp"
-#define TMPNAME        "%s/elvis%04x%03x" /* temp file */
-#define CUTNAME        "%s/elvis_%04x%03x" /* cut buffer's temp file */
+#if ANY_UNIX
+# ifndef TMPDIR
+#  if MINIX
+#   define TMPDIR      "/usr/tmp"      /* Keep elvis' temp files off RAM disk! */
+#  else
+#   define TMPDIR      "/var/tmp"              /* directory where temp files live */
+#  endif
+# endif
+# ifndef PRSVDIR
+#  define PRSVDIR      "/var/preserve" /* directory where preserved file live */
+# endif
+# ifndef PRSVINDEX
+#  define PRSVINDEX    "/var/preserve/Index" /* index of files in PRSVDIR */
+# endif
 # ifndef EXRC
 #  define EXRC         ".exrc"         /* init file in current directory */
 # endif
 # define SCRATCHOUT    "%s/soXXXXXX"   /* temp file used as input to filter */
 # ifndef EXRC
 #  define EXRC         ".exrc"         /* init file in current directory */
 # endif
 # define SCRATCHOUT    "%s/soXXXXXX"   /* temp file used as input to filter */
-# ifndef EXINIT
-#  define EXINIT       "EXINIT"
-# endif
 # ifndef SHELL
 #  define SHELL                "/bin/sh"       /* default shell */
 # endif
 # ifndef SHELL
 #  define SHELL                "/bin/sh"       /* default shell */
 # endif
+# if COHERENT
+#  ifndef REDIRECT
+#   define REDIRECT    ">"             /* Coherent CC writes errors to stdout */
+#  endif
+# endif
+# define gethome(x)    getenv("HOME")
+#endif
+
+#if AMIGA              /* Specify AMIGA environment */
+# ifndef CC_COMMAND
+#  define CC_COMMAND   "cc"            /* generic C compiler */
+# endif
+# ifndef COLON
+#  define COLON                ':'             /* Amiga files can also end in `:' */
+# endif
+# ifndef SYSEXRC
+#  define SYSEXRC      "S:" EXRC       /* name of ".exrc" file in system dir */
+# endif
+# ifndef MAXRCLEN
+#  define MAXRCLEN     2048            /* max size of a .exrc file */
+# endif
+# ifndef NBUFS
+#  define NBUFS                10              /* must be at least 3 -- more is better */
+# endif
+# ifndef NEEDSYNC
+#  define NEEDSYNC     TRUE            /* assume ":se sync" by default */
+# endif
 # ifndef PRSVDIR
 # ifndef PRSVDIR
-#  define PRSVDIR      "/var/preserve" /* directory where preserved file live */
+#  define PRSVDIR      "Elvis:"        /* directory where preserved file live */
 # endif
 # ifndef PRSVINDEX
 # endif
 # ifndef PRSVINDEX
-#  define PRSVINDEX    "/var/preserve/Index" /* index of files in PRSVDIR */
+#  define PRSVINDEX    "Elvis:Index"   /* index of files in PRSVDIR */
+# endif
+# ifndef REDIRECT
+#  define REDIRECT     ">"             /* Amiga writes errors to stdout */
+# endif
+# ifndef SCRATCHIN
+#  define SCRATCHIN    "%sSIXXXXXX"
+# endif
+# ifndef SCRATCHOUT
+#  define SCRATCHOUT   "%sSOXXXXXX"
+# endif
+# ifndef SHELL
+#  define SHELL                "newshell"      /* default shell */
+# endif
+# ifndef TERMTYPE
+#  define TERMTYPE     "amiga"         /* default termtype */
+# endif
+# ifndef TMPDIR                                /* for AMIGA should end in `:' or `/' */
+#  define TMPDIR       "T:"            /* directory where temp files live */
+# endif
+# ifndef TMPNAME
+#  define TMPNAME      "%selv_%x.%x"   /* format of names for temp files */
+# endif
+# define gethome(x)    getenv("HOME")
+#endif
+
+#if MSDOS || TOS
+/* do not change TMPNAME and SCRATCH*: they MUST begin with '%s\\'! */
+# ifndef TMPDIR
+#  define TMPDIR       "C:\\tmp"       /* directory where temp files live */
+# endif
+# ifndef PRSVDIR
+#  define PRSVDIR      "C:\\preserve"  /* directory where preserved file live */
+# endif
+# ifndef PRSVINDEX
+#  define PRSVINDEX    "C:\\preserve\\Index" /* index of files in PRSVDIR */
+# endif
+# define TMPNAME       "%s\\elv_%x.%x" /* temp file */
+# if MSDOS
+#  if MICROSOFT
+#   define CC_COMMAND  "cl -c"         /* C compiler */
+#  else
+#   if __BORLANDC__  /* Borland C */
+#    define CC_COMMAND "bcc"           /* C compiler */
+#   else
+#   if TURBOC        /* Turbo C */
+#    define CC_COMMAND "tcc"           /* C compiler */
+#   endif      /* TURBOC */
+#   endif      /* BORLANDC */
+#  endif               /* MICROSOFT */
+# endif                /* MSDOS */
+# define SCRATCHIN     "%s\\siXXXXXX"  /* DOS ONLY - output of filter program */
+# define SCRATCHOUT    "%s\\soXXXXXX"  /* temp file used as input to filter */
+# define SLASH         '\\'
+# ifndef SHELL
+#  if TOS
+#   define SHELL       "shell.ttp"     /* default shell */
+#  else
+#   define SHELL       "command.com"   /* default shell */
+#  endif
+# endif
+# define NEEDSYNC      TRUE            /* assume ":se sync" by default */
+# if TOS && __GNUC__                   /* probably on other systems, too */
+#  define REDIRECT     "2>"            /* GNUC reports on 2, others on 1 */
+#  define CC_COMMAND   "gcc -c"
+# else
+#  define REDIRECT     ">"             /* shell's redirection of stderr */
+# endif
+#endif
+
+#if VMS
+/* do not change TMPNAME, and SCRATCH*: they MUST begin with '%s\\'! */
+# ifndef TMPDIR
+#  define TMPDIR        "sys$scratch:"  /* directory where temp files live */
 # endif
 # endif
+# define TMPNAME        "%selv_%x.%x;1" /* temp file */
+# define SCRATCHIN      "%ssiXXXXXX"    /* DOS ONLY - output of filter program */
+# define SCRATCHOUT     "%ssoXXXXXX"    /* temp file used as input to filter */
+# define SLASH          '\:'  /* Worry point... jdc */
+# ifndef SHELL
+#   define SHELL        ""      /* default shell */
+# endif
+# define REDIRECT       ">"             /* shell's redirection of stderr */
+# define tread(fd,buf,n)  vms_read(fd,buf,(unsigned)(n))
+# define close vms_close
+# define lseek vms_lseek
+# define unlink vms_delete
+# define delete __delete   /* local routine conflicts w/VMS rtl routine. */
+# define rpipe vms_rpipe
+# define rpclose vms_rpclose
+# define ttyread vms_ttyread
+# define gethome(x) getenv("HOME")
+/* There is no sync() on vms */
+# define sync()
+/* jdc -- seems VMS external symbols are case insensitive */
+# define m_fWord m_fw_ord
+# define m_bWord m_bw_ord
+# define m_eWord m_ew_ord
+# define m_Nsrch m_n_srch
+# define m_Fch   m_f_ch
+# define m_Tch   m_t_ch
+# define v_Xchar v_x_char
+/* jdc -- also, braindead vms curses always found by linker. */
+# define LINES elvis_LINES
+# define COLS  elvis_COLS
+# define curscr elvis_curscr
+# define stdscr elvis_stdscr
+# define initscr elvis_initscr
+# define endwin  elvis_endwin
+# define wrefresh elvis_wrefresh
+#endif
+
+#if OSK
+# ifndef TMPDIR
+#  define TMPDIR       "/dd/tmp"          /* directory where temp files live */
+# endif
+# ifndef PRSVDIR
+#  define PRSVDIR      "/dd/usr/preserve" /* directory where preserved file live */
+# endif
+# ifndef PRSVINDEX
+#  define PRSVINDEX    "/dd/usr/preserve/Index" /* index of files in PRSVDIR */
+# endif
+# ifndef CC_COMMAND
+#  define CC_COMMAND   "cc -r"            /* name of the compiler */
+# endif
+# ifndef EXRC
+#  define EXRC         ".exrc"            /* init file in current directory */
+# endif
+# define SCRATCHOUT    "%s/soXXXXXX"      /* temp file used as input to filter */
+# ifndef SHELL
+#  define SHELL                "shell"            /* default shell */
+# endif
+# define FILEPERMS     (S_IREAD|S_IWRITE) /* file permissions used for creat() */
+# define REDIRECT      ">>-"              /* shell's redirection of stderr */
+# define sync()                                   /* OS9 doesn't need a sync() */
+# define gethome(x)    getenv("HOME")
+#endif
 
 #ifndef        TAGS
 
 #ifndef        TAGS
-# define TAGS          "tags"          /* tags file */
+# define TAGS          "tags"          /* name of the tags file */
+#endif
+
+#ifndef TMPNAME
+# define TMPNAME       "%s/elv_%x.%x"  /* format of names for temp files */
+#endif
+
+#ifndef EXINIT
+# define EXINIT                "EXINIT"        /* name of EXINIT environment variable */
+#endif
+
+#ifndef        EXRC
+# define EXRC          "elvis.rc"      /* name of ".exrc" file in current dir */
+#endif
+
+#ifndef HMEXRC
+# define HMEXRC                EXRC            /* name of ".exrc" file in home dir */
 #endif
 
 #ifndef        KEYWORDPRG
 #endif
 
 #ifndef        KEYWORDPRG
@@ -92,7 +571,7 @@ typedef      unsigned char uchar;
 #endif
 
 #ifndef ERRLIST
 #endif
 
 #ifndef ERRLIST
-# define ERRLIST       "errlist"
+# define ERRLIST       "errs"
 #endif
 
 #ifndef        SLASH
 #endif
 
 #ifndef        SLASH
@@ -104,7 +583,7 @@ typedef     unsigned char uchar;
 #endif
 
 #ifndef REG
 #endif
 
 #ifndef REG
-# define REG
+# define REG           register
 #endif
 
 #ifndef NEEDSYNC
 #endif
 
 #ifndef NEEDSYNC
@@ -115,6 +594,10 @@ typedef    unsigned char uchar;
 # define FILEPERMS     0666
 #endif
 
 # define FILEPERMS     0666
 #endif
 
+#ifndef PRESERVE
+# define PRESERVE      "/usr/libexec/elvispreserve"    /* name of the "preserve" program */
+#endif
+
 #ifndef CC_COMMAND
 # define CC_COMMAND    "cc -c"
 #endif
 #ifndef CC_COMMAND
 # define CC_COMMAND    "cc -c"
 #endif
@@ -127,18 +610,6 @@ typedef    unsigned char uchar;
 # define REDIRECT      "2>"
 #endif
 
 # define REDIRECT      "2>"
 #endif
 
-#ifndef PRESERVE
-# define PRESERVE      "/usr/libexec/elvispreserve"    /* name of the "preserve" program */
-#endif
-
-#if    !defined(CRUNCH) && defined(LETS_GET_SMALL)
-#define CRUNCH
-#endif
-
-#if    defined(CRUNCH) && !defined(LETS_GET_SMALL)
-#define LETS_GET_SMALL
-#endif
-
 #ifndef BLKSIZE
 # ifdef CRUNCH
 #  define BLKSIZE      1024
 #ifndef BLKSIZE
 # ifdef CRUNCH
 #  define BLKSIZE      1024
@@ -151,16 +622,12 @@ typedef   unsigned char uchar;
 # define KEYBUFSIZE    1000
 #endif
 
 # define KEYBUFSIZE    1000
 #endif
 
-#ifdef LETS_GET_SMALL
-#define NO_CHARATTR
-#define NO_DIGRAPH
-#define NO_SENTENCE
-#define NO_EXTENSIONS
-#define NO_MAGIC
-#define NO_ERRLIST
-#define NO_MODELINE
-#define NO_SHOWMATCH
-#define        NO_SHOWMODE
-#define NO_OPTCOLS
-#define NO_MKEXRC
+#ifndef MAILER
+# define MAILER                "mail"
 #endif
 #endif
+
+#ifndef gethome
+extern char *gethome();
+#endif
+
+#endif  /* ndef _CONFIG_H */