Imported from ../bash-2.0.tar.gz.
[platform/upstream/bash.git] / lib / readline / rldefs.h
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 1, 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 #if defined (HAVE_CONFIG_H)
30 #  include "config.h"
31 #endif
32
33 #if defined (_POSIX_VERSION) && !defined (TERMIOS_MISSING)
34 #  define TERMIOS_TTY_DRIVER
35 #else
36 #  if defined (HAVE_TERMIO_H)
37 #    define TERMIO_TTY_DRIVER
38 #  else
39 #    define NEW_TTY_DRIVER
40 #  endif
41 #endif
42
43 #if defined (HAVE_SYS_STREAM_H)
44 #  include <sys/stream.h>
45 #endif /* HAVE_SYS_STREAM_H */
46 #if defined (HAVE_SYS_PTEM_H)
47 #  include <sys/ptem.h>
48 #  define _IO_PTEM_H            /* work around SVR4.2 1.1.4 bug */
49 #endif /* HAVE_SYS_PTEM_H */
50 #if defined (HAVE_SYS_PTE_H)
51 #  include <sys/pte.h>
52 #endif /* HAVE_SYS_PTE_H */
53
54 /* Posix macro to check file in statbuf for directory-ness.
55    This requires that <sys/stat.h> be included before this test. */
56 #if defined (S_IFDIR) && !defined (S_ISDIR)
57 #  define S_ISDIR(m) (((m)&S_IFMT) == S_IFDIR)
58 #endif
59
60 /* Decide which flavor of the header file describing the C library
61    string functions to include and include it. */
62
63 #if defined (HAVE_STRING_H)
64 #  include <string.h>
65 #else /* !HAVE_STRING_H */
66 #  include <strings.h>
67 #endif /* !HAVE_STRING_H */
68
69 #if !defined (strchr) && !defined (__STDC__)
70 extern char *strchr (), *strrchr ();
71 #endif /* !strchr && !__STDC__ */
72
73 #if defined (PREFER_STDARG)
74 #  include <stdarg.h>
75 #else
76 #  if defined (PREFER_VARARGS)
77 #    include <varargs.h>
78 #  endif
79 #endif
80
81 #if defined (HAVE_STRCASECMP)
82 #define _rl_stricmp strcasecmp
83 #define _rl_strnicmp strncasecmp
84 #else
85 extern int _rl_stricmp (), _rl_strnicmp ();
86 #endif
87
88 #if !defined (emacs_mode)
89 #  define no_mode -1
90 #  define vi_mode 0
91 #  define emacs_mode 1
92 #endif
93
94 /* If you cast map[key].function to type (Keymap) on a Cray,
95    the compiler takes the value of map[key].function and
96    divides it by 4 to convert between pointer types (pointers
97    to functions and pointers to structs are different sizes).
98    This is not what is wanted. */
99 #if defined (CRAY)
100 #  define FUNCTION_TO_KEYMAP(map, key)  (Keymap)((int)map[key].function)
101 #  define KEYMAP_TO_FUNCTION(data)      (Function *)((int)(data))
102 #else
103 #  define FUNCTION_TO_KEYMAP(map, key)  (Keymap)(map[key].function)
104 #  define KEYMAP_TO_FUNCTION(data)      (Function *)(data)
105 #endif
106
107 #ifndef savestring
108 extern char *xmalloc ();
109 #define savestring(x) strcpy (xmalloc (1 + strlen (x)), (x))
110 #endif
111
112 /* Possible values for _rl_bell_preference. */
113 #define NO_BELL 0
114 #define AUDIBLE_BELL 1
115 #define VISIBLE_BELL 2
116
117 /* Definitions used when searching the line for characters. */
118 /* NOTE: it is necessary that opposite directions are inverses */
119 #define FTO      1              /* forward to */
120 #define BTO     -1              /* backward to */
121 #define FFIND    2              /* forward find */
122 #define BFIND   -2              /* backward find */
123
124 /* Possible values for the found_quote flags word used by the completion
125    functions.  It says what kind of (shell-like) quoting we found anywhere
126    in the line. */
127 #define RL_QF_SINGLE_QUOTE      0x1
128 #define RL_QF_DOUBLE_QUOTE      0x2
129 #define RL_QF_BACKSLASH         0x4
130
131 /* Default readline line buffer length. */
132 #define DEFAULT_BUFFER_SIZE 256
133
134 #if !defined (STREQ)
135 #define STREQ(a, b)     (((a)[0] == (b)[0]) && (strcmp ((a), (b)) == 0))
136 #define STREQN(a, b, n) (((a)[0] == (b)[0]) && (strncmp ((a), (b), (n)) == 0))
137 #endif
138
139 #if !defined (FREE)
140 #  define FREE(x)       if (x) free (x)
141 #endif
142
143 /* CONFIGURATION SECTION */
144 #include "rlconf.h"
145
146 #endif /* !_RLDEFS_H_ */