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 59 Temple Place, Suite 330, Boston, MA 02111 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 #include "rlstdc.h" 34 35 #if defined (_POSIX_VERSION) && !defined (TERMIOS_MISSING) 36 # define TERMIOS_TTY_DRIVER 37 #else 38 # if defined (HAVE_TERMIO_H) 39 # define TERMIO_TTY_DRIVER 40 # else 41 # define NEW_TTY_DRIVER 42 # endif 43 #endif 44 45 /* Posix macro to check file in statbuf for directory-ness. 46 This requires that <sys/stat.h> be included before this test. */ 47 #if defined (S_IFDIR) && !defined (S_ISDIR) 48 # define S_ISDIR(m) (((m)&S_IFMT) == S_IFDIR) 49 #endif 50 51 /* Decide which flavor of the header file describing the C library 52 string functions to include and include it. */ 53 54 #if defined (HAVE_STRING_H) 55 # include <string.h> 56 #else /* !HAVE_STRING_H */ 57 # include <strings.h> 58 #endif /* !HAVE_STRING_H */ 59 60 #if !defined (strchr) && !defined (__STDC__) 61 extern char *strchr (), *strrchr (); 62 #endif /* !strchr && !__STDC__ */ 63 64 #if defined (PREFER_STDARG) 65 # include <stdarg.h> 66 #else 67 # if defined (PREFER_VARARGS) 68 # include <varargs.h> 69 # endif 70 #endif 71 72 #if defined (HAVE_STRCASECMP) 73 #define _rl_stricmp strcasecmp 74 #define _rl_strnicmp strncasecmp 75 #else 76 extern int _rl_stricmp PARAMS((char *, char *)); 77 extern int _rl_strnicmp PARAMS((char *, char *, int)); 78 #endif 79 80 #if defined (HAVE_STRPBRK) 81 # define _rl_strpbrk(a,b) strpbrk((a),(b)) 82 #else 83 extern char *_rl_strpbrk PARAMS((const char *, const char *)); 84 #endif 85 86 #if !defined (emacs_mode) 87 # define no_mode -1 88 # define vi_mode 0 89 # define emacs_mode 1 90 #endif 91 92 #if !defined (RL_IM_INSERT) 93 # define RL_IM_INSERT 1 94 # define RL_IM_OVERWRITE 0 95 # 96 # define RL_IM_DEFAULT RL_IM_INSERT 97 #endif 98 99 /* If you cast map[key].function to type (Keymap) on a Cray, 100 the compiler takes the value of map[key].function and 101 divides it by 4 to convert between pointer types (pointers 102 to functions and pointers to structs are different sizes). 103 This is not what is wanted. */ 104 #if defined (CRAY) 105 # define FUNCTION_TO_KEYMAP(map, key) (Keymap)((int)map[key].function) 106 # define KEYMAP_TO_FUNCTION(data) (rl_command_func_t *)((int)(data)) 107 #else 108 # define FUNCTION_TO_KEYMAP(map, key) (Keymap)(map[key].function) 109 # define KEYMAP_TO_FUNCTION(data) (rl_command_func_t *)(data) 110 #endif 111 112 #if !defined (savestring) 113 #include <stdio.h> 114 static char * 115 xstrdup(const char *s) 116 { 117 char * cp; 118 cp = strdup(s); 119 if (cp == NULL) { 120 fprintf (stderr, "xstrdup: out of virtual memory\n"); 121 exit (2); 122 } 123 return(cp); 124 } 125 #define savestring(x) xstrdup(x) 126 #endif /* !savestring */ 127 128 /* Possible values for _rl_bell_preference. */ 129 #define NO_BELL 0 130 #define AUDIBLE_BELL 1 131 #define VISIBLE_BELL 2 132 133 /* Definitions used when searching the line for characters. */ 134 /* NOTE: it is necessary that opposite directions are inverses */ 135 #define FTO 1 /* forward to */ 136 #define BTO -1 /* backward to */ 137 #define FFIND 2 /* forward find */ 138 #define BFIND -2 /* backward find */ 139 140 /* Possible values for the found_quote flags word used by the completion 141 functions. It says what kind of (shell-like) quoting we found anywhere 142 in the line. */ 143 #define RL_QF_SINGLE_QUOTE 0x01 144 #define RL_QF_DOUBLE_QUOTE 0x02 145 #define RL_QF_BACKSLASH 0x04 146 #define RL_QF_OTHER_QUOTE 0x08 147 148 /* Default readline line buffer length. */ 149 #define DEFAULT_BUFFER_SIZE 256 150 151 #if !defined (STREQ) 152 #define STREQ(a, b) (((a)[0] == (b)[0]) && (strcmp ((a), (b)) == 0)) 153 #define STREQN(a, b, n) (((n) == 0) ? (1) \ 154 : ((a)[0] == (b)[0]) && (strncmp ((a), (b), (n)) == 0)) 155 #endif 156 157 #if !defined (FREE) 158 # define FREE(x) if (x) free (x) 159 #endif 160 161 #if !defined (SWAP) 162 # define SWAP(s, e) do { int t; t = s; s = e; e = t; } while (0) 163 #endif 164 165 /* CONFIGURATION SECTION */ 166 #include "rlconf.h" 167 168 #endif /* !_RLDEFS_H_ */ 169