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-2009 Free Software Foundation, Inc. 6 7 This file is part of the GNU Readline Library (Readline), a library 8 for reading lines of text with interactive input and history editing. 9 10 Readline is free software: you can redistribute it and/or modify 11 it under the terms of the GNU General Public License as published by 12 the Free Software Foundation, either version 3 of the License, or 13 (at your option) any later version. 14 15 Readline is distributed in the hope that it will be useful, 16 but WITHOUT ANY WARRANTY; without even the implied warranty of 17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 GNU General Public License for more details. 19 20 You should have received a copy of the GNU General Public License 21 along with Readline. If not, see <http://www.gnu.org/licenses/>. 22 */ 23 24 #if !defined (_RLDEFS_H_) 25 #define _RLDEFS_H_ 26 27 #if defined (HAVE_CONFIG_H) 28 # include "config.h" 29 #endif 30 31 #include "rlstdc.h" 32 33 #if defined (STRCOLL_BROKEN) 34 # undef HAVE_STRCOLL 35 #endif 36 37 #if defined (_POSIX_VERSION) && !defined (TERMIOS_MISSING) 38 # define TERMIOS_TTY_DRIVER 39 #else 40 # if defined (HAVE_TERMIO_H) 41 # define TERMIO_TTY_DRIVER 42 # else 43 # if !defined (__MINGW32__) 44 # define NEW_TTY_DRIVER 45 # else 46 # define NO_TTY_DRIVER 47 # endif 48 # endif 49 #endif 50 51 /* Posix macro to check file in statbuf for directory-ness. 52 This requires that <sys/stat.h> be included before this test. */ 53 #if defined (S_IFDIR) && !defined (S_ISDIR) 54 # define S_ISDIR(m) (((m)&S_IFMT) == S_IFDIR) 55 #endif 56 57 /* Decide which flavor of the header file describing the C library 58 string functions to include and include it. */ 59 60 #if defined (HAVE_STRING_H) 61 # include <string.h> 62 #else /* !HAVE_STRING_H */ 63 # include <strings.h> 64 #endif /* !HAVE_STRING_H */ 65 66 #if !defined (strchr) && !defined (__STDC__) 67 extern char *strchr (), *strrchr (); 68 #endif /* !strchr && !__STDC__ */ 69 70 #if defined (PREFER_STDARG) 71 # include <stdarg.h> 72 #else 73 # if defined (PREFER_VARARGS) 74 # include <varargs.h> 75 # endif 76 #endif 77 78 #if defined (HAVE_STRCASECMP) 79 #define _rl_stricmp strcasecmp 80 #define _rl_strnicmp strncasecmp 81 #else 82 extern int _rl_stricmp PARAMS((char *, char *)); 83 extern int _rl_strnicmp PARAMS((char *, char *, int)); 84 #endif 85 86 #if defined (HAVE_STRPBRK) && !defined (HAVE_MULTIBYTE) 87 # define _rl_strpbrk(a,b) strpbrk((a),(b)) 88 #else 89 extern char *_rl_strpbrk PARAMS((const char *, const char *)); 90 #endif 91 92 #if !defined (emacs_mode) 93 # define no_mode -1 94 # define vi_mode 0 95 # define emacs_mode 1 96 #endif 97 98 #if !defined (RL_IM_INSERT) 99 # define RL_IM_INSERT 1 100 # define RL_IM_OVERWRITE 0 101 # 102 # define RL_IM_DEFAULT RL_IM_INSERT 103 #endif 104 105 /* If you cast map[key].function to type (Keymap) on a Cray, 106 the compiler takes the value of map[key].function and 107 divides it by 4 to convert between pointer types (pointers 108 to functions and pointers to structs are different sizes). 109 This is not what is wanted. */ 110 #if defined (CRAY) 111 # define FUNCTION_TO_KEYMAP(map, key) (Keymap)((int)map[key].function) 112 # define KEYMAP_TO_FUNCTION(data) (rl_command_func_t *)((int)(data)) 113 #else 114 # define FUNCTION_TO_KEYMAP(map, key) (Keymap)(map[key].function) 115 # define KEYMAP_TO_FUNCTION(data) (rl_command_func_t *)(data) 116 #endif 117 118 #ifndef savestring 119 #define savestring(x) strcpy ((char *)xmalloc (1 + strlen (x)), (x)) 120 #endif 121 122 /* Possible values for _rl_bell_preference. */ 123 #define NO_BELL 0 124 #define AUDIBLE_BELL 1 125 #define VISIBLE_BELL 2 126 127 /* Definitions used when searching the line for characters. */ 128 /* NOTE: it is necessary that opposite directions are inverses */ 129 #define FTO 1 /* forward to */ 130 #define BTO -1 /* backward to */ 131 #define FFIND 2 /* forward find */ 132 #define BFIND -2 /* backward find */ 133 134 /* Possible values for the found_quote flags word used by the completion 135 functions. It says what kind of (shell-like) quoting we found anywhere 136 in the line. */ 137 #define RL_QF_SINGLE_QUOTE 0x01 138 #define RL_QF_DOUBLE_QUOTE 0x02 139 #define RL_QF_BACKSLASH 0x04 140 #define RL_QF_OTHER_QUOTE 0x08 141 142 /* Default readline line buffer length. */ 143 #define DEFAULT_BUFFER_SIZE 256 144 145 #if !defined (STREQ) 146 #define STREQ(a, b) (((a)[0] == (b)[0]) && (strcmp ((a), (b)) == 0)) 147 #define STREQN(a, b, n) (((n) == 0) ? (1) \ 148 : ((a)[0] == (b)[0]) && (strncmp ((a), (b), (n)) == 0)) 149 #endif 150 151 #if !defined (FREE) 152 # define FREE(x) if (x) free (x) 153 #endif 154 155 #if !defined (SWAP) 156 # define SWAP(s, e) do { int t; t = s; s = e; e = t; } while (0) 157 #endif 158 159 /* CONFIGURATION SECTION */ 160 #include "rlconf.h" 161 162 #endif /* !_RLDEFS_H_ */ 163