home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / octave-1.1.1p1-src.tgz / tar.out / fsf / octave / readline / rldefs.h < prev    next >
C/C++ Source or Header  |  1996-09-28  |  5KB  |  169 lines

  1. /* rldefs.h -- an attempt to isolate some of the system-specific defines
  2.    for readline.  This should be included after any files that define
  3.    system-specific constants like _POSIX_VERSION or USG. */
  4.  
  5. /* Copyright (C) 1987,1989 Free Software Foundation, Inc.
  6.  
  7.    This file contains the Readline Library (the Library), a set of
  8.    routines for providing Emacs style line input to programs that ask
  9.    for it.
  10.  
  11.    The Library is free software; you can redistribute it and/or modify
  12.    it under the terms of the GNU General Public License as published by
  13.    the Free Software Foundation; either version 2, or (at your option)
  14.    any later version.
  15.  
  16.    The Library is distributed in the hope that it will be useful, but
  17.    WITHOUT ANY WARRANTY; without even the implied warranty of
  18.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  19.    General Public License for more details.
  20.  
  21.    The GNU General Public License is often shipped with GNU software, and
  22.    is generally kept in a file called COPYING or LICENSE.  If you do not
  23.    have a copy of the license, write to the Free Software Foundation,
  24.    675 Mass Ave, Cambridge, MA 02139, USA. */
  25.  
  26. #if !defined (_RLDEFS_H)
  27. #define _RLDEFS_H
  28.  
  29. #ifdef HAVE_UNISTD_H
  30. #  include <sys/types.h>
  31. #  include <unistd.h>
  32. #endif
  33.           
  34. #if defined (__GNUC__)
  35. #  undef alloca
  36. #  define alloca __builtin_alloca
  37. #else
  38. #  if defined (sparc) || defined (HAVE_ALLOCA_H)
  39. #    include <alloca.h>
  40. #  endif
  41. #endif
  42.  
  43. #define NEW_TTY_DRIVER
  44. #define HAVE_BSD_SIGNALS
  45. /* #define USE_XON_XOFF */
  46.  
  47. #if defined (__linux__)
  48. #  include <termcap.h>
  49. #endif /* __linux__ */
  50.  
  51. /* Some USG machines have BSD signal handling (sigblock, sigsetmask, etc.) */
  52. #if defined (USG) && !defined (hpux)
  53. #  undef HAVE_BSD_SIGNALS
  54. #endif
  55.  
  56. #if defined (_POSIX_VERSION)
  57. #  define HAVE_POSIX_SIGNALS
  58. #  if !defined (O_NDELAY)
  59. #    define O_NDELAY O_NONBLOCK    /* Posix-style non-blocking i/o */
  60. #  endif /* O_NDELAY */
  61. #endif
  62.  
  63. #if defined (HAVE_TERMIOS_H)
  64. #  undef NEW_TTY_DRIVER
  65. #  define TERMIOS_TTY_DRIVER
  66. #  include <termios.h>
  67. #elif defined (HAVE_TERMIO_H)
  68. #  undef NEW_TTY_DRIVER
  69. #  define TERMIO_TTY_DRIVER
  70. #  include <termio.h>
  71. #  if !defined (TCOON)
  72. #    define TCOON 1
  73. #  endif
  74. #elif defined (HAVE_SGTTY_H)
  75. #  include <sgtty.h>
  76. #endif
  77.  
  78. /* System V.3 machines have the old 4.1 BSD `reliable' signal interface. */
  79. #if !defined (HAVE_BSD_SIGNALS) && !defined (HAVE_POSIX_SIGNALS)
  80. #  if defined (USGr3)
  81. #    if !defined (HAVE_USG_SIGHOLD)
  82. #      define HAVE_USG_SIGHOLD
  83. #    endif /* !HAVE_USG_SIGHOLD */
  84. #  endif /* USGr3 */
  85. #endif /* !HAVE_BSD_SIGNALS && !HAVE_POSIX_SIGNALS */
  86.  
  87. /* Define _POSIX_VDISABLE if we are not using the `new' tty driver and
  88.    it is not already defined.  It is used both to determine if a
  89.    special character is disabled and to disable certain special
  90.    characters.  Posix systems should set to 0, USG systems to -1. */
  91. #if !defined (NEW_TTY_DRIVER) && !defined (_POSIX_VDISABLE)
  92. #  if defined (_POSIX_VERSION)
  93. #    define _POSIX_VDISABLE 0
  94. #  else /* !_POSIX_VERSION */
  95. #    define _POSIX_VDISABLE -1
  96. #  endif /* !_POSIX_VERSION */
  97. #endif /* !NEW_TTY_DRIVER && !_POSIX_VDISABLE */
  98.  
  99. /* unistd.h defines _POSIX_VERSION on POSIX.1 systems.  */
  100. #if defined(HAVE_DIRENT_H) || defined(_POSIX_VERSION)
  101. #  include <dirent.h>
  102. #  if !defined (direct)
  103. #    define direct dirent
  104. #  endif /* !direct */
  105. #  define D_NAMLEN(dirent) (strlen((dirent)->d_name))
  106. #else /* not (HAVE_DIRENT_H or _POSIX_VERSION) */
  107. #  define D_NAMLEN(dirent) ((dirent)->d_namlen)
  108. #  if defined (HAVE_SYS_NDIR_H)
  109. #    include <sys/ndir.h>
  110. #  endif /* HAVE_SYS_NDIR_H */
  111. #  if defined (HAVE_SYS_DIR_H)
  112. #    include <sys/dir.h>
  113. #  endif /* HAVE_SYS_DIR_H */
  114. #  if defined (HAVE_NDIR_H)
  115. #    include <ndir.h>
  116. #  endif /* HAVE_NDIR_H */
  117. #endif /* not (HAVE_DIRENT_H or _POSIX_VERSION) */
  118.  
  119. #if defined (USG) && defined (TIOCGWINSZ) && !defined (Linux)
  120. #  include <sys/stream.h>
  121. #  if defined (HAVE_SYS_PTEM_H)
  122. #    include <sys/ptem.h>
  123. #  endif /* HAVE_SYS_PTEM_H */
  124. #  if defined (HAVE_SYS_PTE_H)
  125. #    include <sys/pte.h>
  126. #  endif /* HAVE_SYS_PTE_H */
  127. #endif /* USG && TIOCGWINSZ && !Linux */
  128.  
  129. /* Posix macro to check file in statbuf for directory-ness.
  130.    This requires that <sys/stat.h> be included before this test. */
  131. #if defined (S_IFDIR) && !defined (S_ISDIR)
  132. #define S_ISDIR(m) (((m)&S_IFMT) == S_IFDIR)
  133. #endif
  134.  
  135. /* Decide which flavor of the header file describing the C library
  136.    string functions to include and include it. */
  137.  
  138. #if defined (STDC_HEADERS) || defined (HAVE_STRING_H)
  139. #  include <string.h>
  140. /* An ANSI string.h and pre-ANSI memory.h might conflict.  */
  141. #  if !defined (STDC_HEADERS) && defined (HAVE_MEMORY_H)
  142. #    include <memory.h>
  143. #  endif /* not STDC_HEADERS and HAVE_MEMORY_H */
  144. #  define index strchr
  145. #  define rindex strrchr
  146. #  define bcopy(s, d, n) memcpy ((d), (s), (n))
  147. #  define bcmp(s1, s2, n) memcmp ((s1), (s2), (n))
  148. #  define bzero(s, n) memset ((s), 0, (n))
  149. #else /* not STDC_HEADERS and not HAVE_STRING_H */
  150. #  include <strings.h>
  151. /* memory.h and strings.h conflict on some systems.  */
  152. #endif /* not STDC_HEADERS and not HAVE_STRING_H */
  153.  
  154. #if defined (HAVE_VARARGS_H)
  155. #  include <varargs.h>
  156. #endif /* HAVE_VARARGS_H */
  157.  
  158. /* This definition is needed by readline.c, rltty.c, and signals.c. */
  159. /* If on, then readline handles signals in a way that doesn't screw. */
  160. #define HANDLE_SIGNALS
  161.  
  162. #if !defined (emacs_mode)
  163. #  define no_mode -1
  164. #  define vi_mode 0
  165. #  define emacs_mode 1
  166. #endif
  167.  
  168. #endif /* !_RLDEFS_H */
  169.