Logo Search packages:      
Sourcecode: jove version File versions

sysdep.h

/**************************************************************************
 * This program is Copyright (C) 1986-2002 by Jonathan Payne.  JOVE is    *
 * provided by Jonathan and Jovehacks without charge and without          *
 * warranty.  You may copy, modify, and/or distribute JOVE, provided that *
 * this notice is included in all the source files and documentation.     *
 **************************************************************************/

/*
 * System Feature Selection: describe OS and C system to JOVE.  See sysdep.doc
 * for a better description of what the different #define feature symbols
 * mean.  If you add new ones, please keep the syntax of the first #ifdef, so
 * that "grep System: sysdep.h" catches the first line of all symbols.
 */

/* System: Solaris 2.0, SunOS 5.0 -- use SYSVR4 and GRANTPT_BUG */

/* System: Solaris 2.x, SunOS 5.x -- use SYSVR4 */

#ifdef SUNOS41    /* System: SunOS4.1 to 4.1.3 */
# define TERMIOS  1
# define USE_GETCWD     1
# define POSIX_UNISTD   1
# define USE_SELECT     1
# define PTYPROCS 1
# define BSD_PTYS 1     /* beware security flaw! */
# define POSIX_PROCS    1
# define BSD_SIGS 1
# define JOB_CONTROL    1
# define BSD_SETPGRP    1
# define USE_KILLPG     1
# define USE_GETPWNAM   1
# define USE_GETHOSTNAME      1
# define NO_STRERROR    1
# define USE_FSYNC      1
# define USE_FSTAT      1
# define USE_FCHMOD     1
# define HAS_SYMLINKS   1
# define USE_CTYPE      1
#endif

#ifdef SUNOS40    /* System: SunOS4.0 to 4.0.3c */
/* Almost identical to SUNOS41, main difference is that SUNOS41 uses
 * POSIX_PROCS, this one uses BSD_WAIT/WAIT3, USE_MEMORY_H.
 * Beware: TERMIO under SunOS 4.0 does not allow VSUSP to be changed,
 * so we cannot use it.
 */
/* try to patch over <termios.h> problems */
# define TERMIOS  1
# define setsid() /* SunOS 4.0 apparently has no concept of session */
# define cfgetospeed(p) (CBAUD & (p)->c_cflag)
# define tcgetattr(fd, p)     ioctl((fd), TCGETS, (UnivPtr)(p))
# define tcsetattr(fd, oa, p) ioctl((fd), (oa), (UnivPtr)(p))
/* fake values for "optional_actions" (oa) arg to tcsetattr */
#  define TCSANOW TCSETS
#  define TCSADRAIN     TCSETSW
#  define TCSAFLUSH     TCSETSF
/* end of <termios.h> patches */

# define USE_GETCWD     1
# define USE_SELECT     1
# define PTYPROCS 1
# define BSD_PTYS 1     /* beware security flaw! */
# define BSD_WAIT 1
# define WAIT3          1
# define BSD_SIGS 1
# define JOB_CONTROL    1
# define USE_VFORK      1
# define BSD_SETPGRP    1
# define USE_KILLPG     1
# define USE_GETPWNAM   1
# define USE_GETHOSTNAME      1
# define NO_STRERROR    1
# define USE_FSYNC      1
# define USE_FSTAT      1
# define USE_FCHMOD     1
# define HAS_SYMLINKS   1
# define USE_MEMORY_H   1
#endif

#ifdef SUNOS3     /* System: SunOS before 4.0, eg. 3.5. not recently tested */
/* This is very close to BSD4 */
# define SGTTY          1
# define USE_GETWD      1
# define USE_SELECT     1
# define PTYPROCS 1
# define BSD_PTYS 1     /* beware security flaw! */
# define BSD_WAIT 1
# define WAIT3          1
# define BSD_SIGS 1
# define JOB_CONTROL    1
# define USE_VFORK      1
# define BSD_SETPGRP    1
# define USE_KILLPG     1
# define BSD_DIR  1
# define USE_GETPWNAM   1
# define SIGRESTYPE     int
# define SIGRESVALUE    0
# define USE_GETHOSTNAME      1
# define NO_STRERROR    1
# define USE_FSYNC      1
# define USE_FSTAT      1
# define USE_FCHMOD     1
# define HAS_SYMLINKS   1
/* # define USE_BCOPY   1 */
/* # define USE_INDEX   1 */
#endif

#ifdef AIX3_2     /* System: IBM RS6000 running AIX 3.2 */
# define AIX            1
# define FULL_UNISTD    1
# define USE_GETWD      1
# define TERMIOS  1     /* uses termio struct for terminal modes */
# define USE_UNAME      1
# define USE_SELECT     1
# define USE_SELECT_H   1
# define PTYPROCS 1
# define BSD_PTYS 1     /* beware security flaw! */
# define NO_EOF_FROM_PTY    1 /* BUG! */
# define POSIX_PROCS    1
# define WAIT3          1
# define POSIX_SIGS     1
# define JOB_CONTROL    1
# define USE_GETPWNAM   1
# define USE_UNAME      1
# define USE_FSYNC      1
# define USE_FSTAT      1
# define USE_FCHMOD     1
# define HAS_SYMLINKS   1
# define USE_CTYPE      1
#endif

#ifdef AIX4_2     /* System: IBM AIX 4.2 */
# define AIX            1
# define FULL_UNISTD    1
# define USE_GETWD      1
# define TERMIOS  1     /* uses termio struct for terminal modes */
# define USE_UNAME      1
# define USE_SELECT     1
# define USE_SELECT_H   1
# define PTYPROCS 1
# define BSD_PTYS 1     /* beware security flaw! */
# define NO_EOF_FROM_PTY    1 /* BUG! */
# define POSIX_PROCS    1
# define WAIT3          1
# define POSIX_SIGS     1
# define JOB_CONTROL    1
# define USE_GETPWNAM   1
# define USE_UNAME      1
# define USE_FSYNC      1
# define USE_FSTAT      1
# define USE_FCHMOD     1
# define HAS_SYMLINKS   1
# define USE_CTYPE      1
  /* Only difference from AIX3_2, perhaps due to switching from
   * -ltermcap to -lcurses (-ltermcap seems to have disappeared):
   */
# define DEFINE_PC_BC_UP_OSPEED     1     /* May be needed for all SYSVR2 */
#endif

#ifdef __convex__ /* System: ConvexOS (versions 10.x - 11.x) */
/* Note: this must be placed before BSDPOSIX ifdef (we define BSDPOSIX). */
# define BSDPOSIX 1     /* mostly like BSDPOSIX */
# define STICKY_TTYSTATE      1     /* fudge: many progs stupidly set ISTRIP */
# define ISO_8859_1     1     /* fudge: <ctype.h> doesn't work for 8-bit chars, but X does */
#endif

#ifdef CYGWIN32 /* System: Cygnus Support Cygwin32 POSIX-like environment
      on Win95/NT (see README.c32) */
#define FILENAME_CASEINSENSITIVE    1
#define BSDPOSIX  1
#endif

#ifdef __QNX__    /* System: QNX OS for x86 family */
/* Note: this must be placed before BSDPOSIX ifdef (we define BSDPOSIX). */
# define BSDPOSIX 1
# define ONLCR          OPOST /* how to do ONLCR */
# define USE_SELECT_H   1
#endif

#ifdef BSDPOSIX_STDC    /* Same as BSDPOSIX, but with a Standard enough C */
# define REALSTDC 1
# define BSDPOSIX 1
#endif

#ifdef BSDPOSIX   /* System: Posix system with BSD flavouring for ptys */
/* System: BSDI, 386BSD, BSD4.4, NetBSD -- BSDPOSIX */
/* System: DEC Ultrix 4.2 -- BSDPOSIX */
/* System: DEC OSF/1 V1.3 -- BSDPOSIX + NO_TIOCREMOTE + NO_TIOCSIGNAL */
/* System: LINUX (MCC-Interim release) -- BSDPOSIX */
/* Also seems to work for SunOS4.1.3! */
# define TERMIOS  1
# define USE_GETCWD     1
# define FULL_UNISTD    1
# define USE_SELECT     1
# define PTYPROCS 1
# define BSD_PTYS 1     /* beware security flaw! */
# define POSIX_PROCS    1
# define POSIX_SIGS     1
# define JOB_CONTROL    1
# define BSD_SETPGRP    1
# define USE_KILLPG     1
# define USE_GETPWNAM   1
# define USE_GETHOSTNAME      1
# define USE_FSYNC      1
# define USE_FSTAT      1
# define USE_FCHMOD     1
# define HAS_SYMLINKS   1
# ifndef ISO_8859_1 /* fudge for __convex__ (see above) */
#  define USE_CTYPE     1
# endif
#endif

#ifdef IRIX
# define _BSD_COMPAT    1     /* Turn on BSD setpgrp and other neat things */
# define TERMIOS  1
# define USE_GETCWD     1
# define FULL_UNISTD    1
# define USE_SELECT     1
# define PTYPROCS 1
# define POSIX_PROCS    1
# define POSIX_SIGS     1
# define JOB_CONTROL    1
# ifdef IRIX4
   /* Should work for IRIX 4.0.4 back to 3.2 or 3.3.  This is a Posix system
    * with its own way of doing PTYS.  Older versions may need MIPS_CC_BUG
    * defined as well.
    */
#  define IRIX_PTYS     1
#  define NO_TIOCREMOTE 1
#  define SIGRESTYPE    int
#  define SIGRESVALUE   0
# else
   /* IRIX 5 and later */
#  define SVR4_PTYS     1
#  define NO_TIOCREMOTE 1
#  define NO_TIOCSIGNAL 1
#  define SIGRESTYPE    void
#  define SIGRESVALUE   /*void!*/
# endif
# define BSD_SETPGRP    1
# define USE_GETPWNAM   1
# define USE_KILLPG     1
# define USE_GETHOSTNAME      1
# define HAS_SYMLINKS   1
# define USE_CTYPE      1
#endif

#ifdef SYSVR4     /* System: System V, Release 4 and derivatives */
/* System: Consensys V4 -- use SYSVR4 and GRANTPT_BUG */
/* System: DEC OSF/1 V2.0 or later -- use SYSVR4 */
/* System: DEC OSF R1.3MK -- use SYSVR4 */
/* System: Digital UNIX V4.0 and later -- use SYSVR4 and GRANTPT_BUG */
/* System: Red Hat LINUX 6.x or 7.x -- use SYSVR4 and _XOPEN_SOURCE=500 */
/* System: Solaris 2.0, SunOS 5.0 -- use SYSVR4 and GRANTPT_BUG */
/* System: Solaris 2.x, SunOS 5.x -- use SYSVR4 */
/* Note: some versions of System V Release 4 have a bug in that affects
 * interactive processes.  Examples include Consensys V4 and SunOS 5.0
 * also known as Solaris 5.0.  See the description of GRANTPT_BUG in
 * sysdep.doc.  It turns out that this bug is documented as a feature
 * in "The Single UNIX Specification", Version 2!
 */
# define TERMIOS  1
# define USE_GETCWD     1
# define FULL_UNISTD    1
# define USE_SELECT     1
# define PTYPROCS 1
# define SVR4_PTYS      1
# define POSIX_PROCS    1
# define POSIX_SIGS     1
# define JOB_CONTROL    1
# define USE_UNAME      1
# define USE_GETPWNAM   1
# define USE_FSYNC      1
# define USE_FSTAT      1
# define USE_FCHMOD     1
# define HAS_SYMLINKS   1
# define REALSTDC 1
# define USE_CTYPE      1
#endif

#ifdef HPUX /* System: Hewlett-Packard HP-UX 9.01 & 11, probably others */
# define TERMIOS  1
# define USE_BSDTTYINCLUDE    1     /* No other way to turn off ^Y */
# define USE_GETCWD     1
# define FULL_UNISTD    1
# define USE_SELECT     1
# define PTYPROCS 1
# define BSD_PTYS 1     /* beware security flaw! */
# define POSIX_PROCS    1
# define NO_EOF_FROM_PTY    1 /* BUG! */
# define POSIX_SIGS     1
# define JOB_CONTROL    1
# define USE_UNAME      1
# define DEFINE_PC_BC_UP_OSPEED     1     /* May be needed for all SYSVR2 */
# define HAS_SYMLINKS   1
#endif

#ifdef BSD4 /* System: Berkeley BSD4.x, 2.9, 2.10, MIPS RiscOS 4.x */
/* MIPS needs -systype bsd43, older releases (before 4.50?) may need
 * MIPS_CC_BUG defined as well.
 */
# define SGTTY          1
# define USE_GETWD      1
# define USE_SELECT     1
# define PTYPROCS 1
# define BSD_PTYS 1     /* beware security flaw! */
# define BSD_WAIT 1
# define WAIT3          1
# define BSD_SIGS 1
# define JOB_CONTROL    1
# define USE_VFORK      1
# define BSD_SETPGRP    1
# define USE_KILLPG     1
# define BSD_DIR  1
# define HAS_SYMLINKS   1
# define SIGRESTYPE     int
# define SIGRESVALUE    0
# define USE_GETHOSTNAME      1
# define NO_STRERROR    1
# define USE_FSYNC      1
# define USE_FSTAT      1
# define USE_FCHMOD     1
# define USE_BCOPY      1
# define USE_INDEX      1
#endif

#ifdef SCO_ODT3   /* System: SCO ODT 3.0 */
# define TERMIOS  1
/* # define FULL_UNISTD 1 */  /* Not tested!  May be worth trying. */
# define USE_GETCWD     1
# define POSIX_UNISTD   1
# define USE_SELECT     1
# define PTYPROCS 1
# define BSD_PTYS 1     /* beware security flaw! */
# define POSIX_PROCS    1
# define JOB_CONTROL    1
# define USE_UNAME      1
/* In SCO ODT 3.0, a wait() will never finish if SIGCHLD is being held.
 * We think that this is a bug.  It's rumoured to be "fixed" in the next
 * release.  JOVE's IPROCS code no longer triggers this bug.
 */
# define PTYPROCS 1
# define HAS_SYMLINKS   1
# define USE_CTYPE      1
#endif

#ifdef _MSC_VER   /* System: Microsoft C for the IBM-PC under MSDOS or WIN32 */
/* 4.16.0.38 tested under VC++ 5.0 / VS 97 */
/* 4.16.0.62 tested under Visual C++ 6.0 SP5 */
# if defined(_WIN32) && !defined(WIN32)
#  define WIN32 _WIN32
# endif
# ifdef WIN32
#  define WINRESIZE     1
# else /* ! WIN32 => MSDOS */
#  define IBMPCDOS            1
#  define MALLOC_CACHE  1     /* DGROUP gets full otherwise */
#  if defined(M_I86LM)  /* large memory model */
#   define NBUF         62    /* NBUF*JBUFSIZ must be less than 64 kB */
#  else
#   define NBUF         3
#   define FAR_LINES    1     /* to squeeze larger files, distance Lines */
#  endif
# endif
# define REALSTDC 1     /* MS C only defines __STDC__ if you use /Za */
# define NO_MKSTEMP     1
# define _POSIX_  1     /* suppresses MS's min and max in VC++ 5.0 */
# define jmode_t  int   /* no mode_t on WIN32 */
#endif

#ifdef ZTCDOS     /* System: Zortech C V3.0 for the IBM-PC under MSDOS */
# define IBMPCDOS       1
# define getch          jgetch      /* UGH!  Zortech steals from our namespace. */
# define MALLOC_CACHE   1     /* DGROUP gets full otherwise */
# define REALSTDC 1     /* close enough for us, but ZTCDOS doesn't define __STDC__ */
# ifdef M_I86LM         /* large memory model */
#  define NBUF          62    /* NBUF*JBUFSIZ must be less than 64 kB */
# else
#  define NBUF          3
#  define FAR_LINES     1     /* to squeeze larger files, distance Lines */
# endif
  /* (1) specify stack size, and
   * (2) request support of wildcards in command-line args (UGH!)
   */
# define STACK_DECL     unsigned int _stack = 0x2000; WILDCARDS
# define dostime_t      dos_time_t  /* is Zortech out of step? */
# define _dos_gettime   dos_gettime
# define NO_MKSTEMP     1
# define NO_MKTEMP      1
#endif

#if defined(__WATCOMC__) && defined(MSDOS)      /* System: Watcom C V10.0 for the IBM-PC under MSDOS */
# define IBMPCDOS       1
# define MALLOC_CACHE   1     /* DGROUP gets full otherwise */
# define REALSTDC 1     /* close enough for us, but ZTCDOS doesn't define __STDC__ */
# ifdef M_I86LM         /* large memory model */
#  define NBUF          62    /* NBUF*JBUFSIZ must be less than 64 kB */
# else
#  define NBUF          3
#  define FAR_LINES     1     /* to squeeze larger files, distance Lines */
# endif
# define NO_MKSTEMP     1
# define NO_MKTEMP      1
#endif

#ifdef __BORLANDC__     /* System: Borland C/C++ (v3.1) for the IBM-PC under MSDOS */
# define IBMPCDOS       1
# define MALLOC_CACHE   1     /* DGROUP gets full otherwise */
# define REALSTDC 1     /* close enough for us, but not strict ANSI */
# ifdef __LARGE__
#  define NBUF          62    /* NBUF*JBUFSIZ must be less than 64 kB */
#  define FAR_LINES 1   /* to squeeze larger files, distance Lines */
# else
#  ifdef __MEDIUM__
#    define NBUF  3
#    define FAR_LINES 1 /* to squeeze larger files, distance Lines */
#  endif
# endif
# define STACK_DECL     unsigned int _stklen = 0x2000;            /* Borland's way of specifying stack size */
/* probably: # define NO_MKSTEMP    1 */
/* probably: # define NO_MKTEMP     1 */
#endif

/* All the systems marked with XXX_ are ones that this version of Jove (4.16)
 * has not been tested on.  4.15 was the transition from implicit #ifdefs
 * scattered throughout the code to feature-based ifdefs that MUST be
 * enabled in sysdep.h.  The #ifdef XXX_* below have been left in to provide a
 * guide to re-porting this version to those architectures.  If you do so
 * successfully, please send a copy of these changes to
 * jovehacks@cs.toronto.edu and we'll try to incorporate those changes above
 * and get rid of the XXX_.
 */

#ifdef XXX_M_XENIX      /* System: Microsoft or SCO Xenix */
/* #define NBUF   48 */ /* if we are on a 286, NBUF*JBUFSIZ must be less than 64 kB */
# define BSD_DIR  1
#endif

#ifdef XXX_SYSV         /* System: System V Rel. 2, System III */
# define TERMIO         1
# define USE_PWD
# define NONBLOCKINGREAD      1
# define USE_MEMORY_H   1
# define DIRENT_EMULATE 1     /* for truly old versions? */
#endif

#ifdef XXX_A_UX         /* System: A/UX on a MacII (Do *not* define "MAC") */
/* It might be better to try BSDPOSIX for newer A/UX. */
# define BSD_WAIT 1
# define BSD_DIR  1
# define WAIT3          1
# define BSD_SIGS 1     /* ??? */
# define USE_KILLPG     1
# define TERMIO         1     /* uses termio struct for terminal modes */
# define USE_GETHOSTNAME      1
# define USE_SELECT     1
#endif

#ifdef XXX_OLDMIPS      /* System: MIPS-SYSV, Irix before 3.3. */
/* Older MIPS (UMIPS-SYSV, anything other than their 4.3 port before
 * RISCOS4.x) and SGI 4D OSes (anything before Irix3.3) have BSD style wait,
 * and directory routines if you link -lbsd and define -I/usr/include/bsd on
 * the compile line. But they have SysV style signals.  Jove was ported to the
 * SGI 68K boxes once, but it the mods seem to have been lost.
 */
# define BSD_WAIT 1     /* Berkeley style sys/wait.h */
# define BSD_DIR  1     /* Berkeley style dirent routines */
#endif

#ifdef XXX_MSC51  /* System: Microsoft C 5.1 on IBM PC under DOS*/
/* This hasn't been tested recently.  Consider stealing ZTCDOS settings. */
# define IBMPCDOS       1
# define NO_PTRPROTO    1
# define REALSTDC 1     /* well, almost */
# ifdef M_I86LM         /* large memory model */
#  define NBUF          62    /* NBUF*JBUFSIZ must be less than 64 kB */
# else
#  define SMALL         1
# endif
/* probably: # define NO_MKSTEMP    1 */
/* probably: # define NO_MKTEMP     1 */
#endif

#ifdef THINK_C    /* System: Think C version 5.0 on the Macintosh */
# define MAC 1
# define REALSTDC 1     /* we hope */
# define MALLOC_CACHE   1   /* Only 32K of static space on Mac, so... */
  typedef long    off_t;
# define USE_GETCWD     1
# define USE_INO  1     /* we fake it */
  typedef int     dev_t;
  typedef int     ino_t;
# define DIRECTORY_ADD_SLASH 1
# define NO_MKSTEMP     1     /* no mkstemp library routine */
# define NO_MKTEMP      1     /* no mktemp library routine */
# define NO_FCNTL 1     /* no <fcntl.h> header */
# define EOL      '\r'  /* end-of-line character for files */
# define WINRESIZE      1
# define AUTO_BUFS      1     /* slim down data segment */
#endif

/**************** Common Characteristics ****************/

#ifdef pdp11
/* On the PDP-11, UNIX allocates at least 8K for the stack.
 * In order not to waste this space, we allocate
 * a bunch of buffers as autos.
 */
# define AUTO_BUFS      1
#endif

#ifdef IBMPCDOS   /* Common characteristics for IBM-PC MS-DOS systems. */
# ifndef MSDOS
#  define MSDOS   1
# endif
# define PCNONASCII     0xFF  /* prefix for peculiar IBM PC key codes */
# define NO_JSTDOUT     1     /* don't use jstdout */
# define CODEPAGE437    1     /* Code Page 437 English display characters */
# define PCSCRATTR      1     /* exploit IBMPC screen attributes */
# define HIGHLIGHTING   1     /* highlighting is used for mark and scrollbar */
#endif

#ifdef MSDOS      /* Common characteristics for MS-DOS systems. */
# define MSDOS_PROCS    1     /* spawn et al */
# define FILENAME_CASEINSENSITIVE 1
# define USE_CRLF 1
# define DIRECTORY_ADD_SLASH 1
# define MSFILESYSTEM 1
#endif

#ifdef WIN32      /* Common characteristics for WIN32 systems. */
# define PCNONASCII     0xFF  /* prefix for peculiar IBM PC key codes */
# define NO_JSTDOUT     1     /* don't use jstdout */
# define CODEPAGE437    1     /* Code Page 437 English display characters */
# define PCSCRATTR      1     /* exploit IBMPC screen attributes */
# define HIGHLIGHTING   1     /* highlighting is used for mark and scrollbar */
# define MSDOS_PROCS    1     /* spawn et al */
# define FILENAME_CASEINSENSITIVE 1
# define USE_CRLF 1
# define DIRECTORY_ADD_SLASH 1
# define MSFILESYSTEM   1
# if defined(_MSC_VER) && _MSC_VER >= 1200 /* VC 6.0+ */
   /* <basetsd.h> defines SSIZE_T -- a name that we thought was safely
    * in our namespace!  To prevent havoc, we include that header now
    * so that our own definition will be suppressed.
    */
#  include <basetsd.h>
# endif
#endif

/* The operating system (MSDOS, WIN32, or MAC) must be defined by this point. */
#if !(defined(MSDOS) || defined(WIN32) || defined(MAC))
# define UNIX     1     /* default to UNIX */
#endif

#ifdef UNIX /* Common characteristics for UNIX systems. */
/* Our defaults tend to be conservative and lean towards pure SYSV */
# define USE_INO  1
# define TERMCAP  1
# define NCURSES_BUG    1   /* almost certainly safe anyway */
# define WINRESIZE      1
# define MOUSE          1
# if !(defined(NO_IPROCS) || defined(PIPEPROCS) || defined(PTYPROCS))
#  define PIPEPROCS     1     /* use pipes */
# endif
# if !defined(TERMIOS) && !defined(SGTTY)
#  define TERMIO  1     /* uses termio struct for terminal modes */
# endif
/* At the moment, the PTY code mandates having select().  One day, this might
 * change.
 */
# if defined(PTYPROCS) && !defined(USE_SELECT)
   sysdep.h: Sorry, PTYPROCS requires the select() system call.  You must
   either define USE_SELECT or undefine PTYPROCS.
# endif
# if defined(SIGCLD) && !defined(SIGCHLD)
#  define SIGCHLD SIGCLD
# endif
#endif /* UNIX */

/* lint suppression macros; GCC requires use of extensions! */
#ifdef GCC_LINT
# define UNUSED(x)      x __attribute__ ((unused))
# define NEVER_RETURNS  __attribute__ ((noreturn))
#else /* !GCC_LINT */
# define UNUSED(x)      x
# define NEVER_RETURNS
#endif /* !GCC_LINT */

/*************************************************************************
 *
 * The things below here aren't meant to be tuned, but are included here
 * because they're dependent on the things defined earlier in the file.
 */
#ifdef USE_BCOPY
# define byte_copy(from, to, len)   bcopy((UnivConstPtr)(from), (UnivPtr)(to), (size_t)(len))
# define byte_zero(s, n)      bzero((UnivPtr)(s), (size_t)(n))
#endif

#ifndef byte_copy
# ifdef USE_MEMORY_H
#  include <memory.h>
# endif
# define byte_copy(from, to, count) memcpy((UnivPtr)(to), (UnivConstPtr)(from), (size_t)(count))
# define byte_zero(s, n)            memset((UnivPtr)(s), 0, (size_t)(n))
#endif

#ifdef USE_INDEX
# define strchr         index
# define strrchr  rindex
#endif

#ifdef FULL_UNISTD
# define POSIX_UNISTD   1
#endif

/* SSIZE_T: result type of read() and write() */
#ifdef FULL_UNISTD
# define SSIZE_T    ssize_t
#endif

#ifndef SSIZE_T
# define SSIZE_T    int
#endif

/* jmode_t: the type for file modes
 * Really old systems might use "int" or perhaps "unsigned".
 */
#ifndef jmode_t
# define jmode_t mode_t
#endif

/* Determine if really ANSI C */
#ifdef __STDC__
# if __STDC__ > 0
#  define REALSTDC 1
# endif
#endif

/* Determine number of buffers and the size of a buffer
 * (and hence the maximum length of a line, among other things).
 */

#ifdef SMALL
# ifndef NBUF
#  define NBUF          3
# endif
# ifndef JLGBUFSIZ
#  define JLGBUFSIZ     9     /* 512kB is the traditional UNIX block size */
# endif
#endif

#ifndef NBUF
# define NBUF 64
#endif

#ifndef JLGBUFSIZ
# define JLGBUFSIZ 12   /* perhaps a good match for 4kB pages */
#endif

#define JBUFSIZ   (1<<JLGBUFSIZ)


#ifndef NCHARS
# define NCHARS 0400
#endif

#ifndef EOL
# define EOL      '\n'  /* end-of-line character for files */
#endif

#ifndef MSDOS     /* maximum path length (including '\0') */
# define FILESIZE 256
#else /* MSDOS */
# define FILESIZE 128   /* currently, 2+1+64+3+1+3+1 == 80 ought to be OK */
#endif /* MSDOS */

#ifndef SIGRESTYPE      /* default to void, correct for most modern systems */
# define SIGRESTYPE     void
# define SIGRESVALUE    /*void!*/
#endif

/* daddr: tmp file index type (see temp.h)
 *
 * On a system which limits JOVE to a very small data segment,
 * it may be worthwhile limiting daddr to a short.  This reduces
 * the size of a Line descriptor, but reduces the addressable size
 * of the temp file.  This is reasonable on a PDP-11 and perhaps
 * an iAPX*86.
 * NOTE: logically, daddr is unsigned, but a signed type will work
 * if you cannot use an unsigned type.
 */

#ifdef SMALL
  typedef unsigned short      daddr;
#else
  typedef unsigned long daddr;
#endif /* SMALL */

#define NULL_DADDR            ((daddr) 0)

#ifndef CHAR_BITS
# define CHAR_BITS      8     /* factor to convert sizeof => bits */
#endif

#define DDIRTY    ((daddr)1 << (sizeof(daddr)*CHAR_BITS - 1))     /* daddr dirty flag */

Generated by  Doxygen 1.6.0   Back to index