/* * The Regina Rexx Interpreter * Copyright (C) 1992-1994 Anders Christensen * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* * For platforms that don't use autoconf, put these here... */ #define HAVE_ASSERT_H 1 #define HAVE_ERRNO_H 1 #define HAVE_CTYPE_H 1 #define HAVE_STDARG_H 1 #define HAVE_SYS_STAT_H 1 #if defined(DOS) && defined(EMX) # define HAVE_ALLOCA_H 1 # define HAVE_FTIME 1 # define HAVE_MATH_H 1 # define HAVE_RANDOM 1 #undef HAVE_RANDOM /* needs bsd support and linking with -lbsd */ # define HAVE_SIGACTION 1 # define HAVE_STDIO_H 1 # define HAVE_SYS_TIME_H 1 # define HAVE_SYSCONF 1 # define HAVE_TERMIOS_H 1 # define HAVE_TIME_H 1 # define HAVE_FCNTL_H 1 # define HAVE_GRP_H 1 # define HAVE_PWD_H 1 # define HAVE_LIMITS_H 1 # define HAVE_MALLOC_H 1 # define HAVE_SETJMP_H 1 # define HAVE_SIGNAL_H 1 # define HAVE_STDLIB_H 1 # define HAVE_STRING_H 1 # define HAVE_UNISTD_H 1 # define HAVE_SYS_SOCKET_H 1 # define HAVE_NETINET_IN_H 1 # define HAVE_SYS_SELECT_H 1 # define HAVE_NETDB_H 1 # define HAVE_ARPA_INET_H 1 # define HAVE__FULLPATH 1 # define HAVE_PUTENV 1 # define HAVE_GETTIMEOFDAY 1 # define HAVE_FTRUNCATE 1 # define HAVE_MEMCPY 1 # define HAVE_MEMMOVE 1 # define HAVE_STRERROR 1 # define HAVE_VSPRINTF 1 # define HAVE_GETPID 1 # define TIME_WITH_SYS_TIME 1 # define HAVE_DIV 1 # define HAVE_RAISE 1 #endif #if defined(OS2) && defined(EMX) # define HAVE_ALLOCA_H 1 # define HAVE_FTIME 1 # define HAVE_MATH_H 1 # define HAVE_RANDOM 1 #undef HAVE_RANDOM /* needs bsd support and linking with -lbsd */ # define HAVE_SIGACTION 1 # define HAVE_STDIO_H 1 # define HAVE_SYS_TIME_H 1 # define HAVE_SYS_STAT_H 1 # define HAVE_SYS_TYPES_H 1 # define HAVE_SYSCONF 1 # define HAVE_TERMIOS_H 1 # define HAVE_TIME_H 1 # define HAVE_FCNTL_H 1 # define HAVE_GRP_H 1 # define HAVE_PWD_H 1 # define HAVE_LIMITS_H 1 # define HAVE_PROCESS_H 1 # define HAVE_MALLOC_H 1 # define HAVE_SETJMP_H 1 # define HAVE_SIGNAL_H 1 # define HAVE_STDLIB_H 1 # define HAVE_STDINT_H 1 # define HAVE_STRING_H 1 # define HAVE_UNISTD_H 1 # define HAVE_SYS_SOCKET_H 1 # define HAVE_NETINET_IN_H 1 # define HAVE_SYS_SELECT_H 1 # define HAVE_NETDB_H 1 # define HAVE_ARPA_INET_H 1 # define HAVE__FULLPATH 1 # define HAVE_PUTENV 1 # define HAVE_GETTIMEOFDAY 1 # define HAVE_FTRUNCATE 1 # define HAVE_MEMCPY 1 # define HAVE_MEMMOVE 1 # define HAVE_STRERROR 1 # define HAVE_VSPRINTF 1 # define HAVE_GETPID 1 # define HAVE_DIV 1 # define HAVE_RAISE 1 # define TIME_WITH_SYS_TIME 1 # if defined(DYNAMIC) # define DYNAMIC_OS2 # endif #endif #if defined(OS2) && defined(__IBMC__) # define HAVE_SETJMP_H # define HAVE__FULLPATH # define HAVE_PUTENV # define HAVE_GETTIMEOFDAY # define HAVE_FTRUNCATE # define HAVE_MEMCPY # define HAVE_MEMMOVE # define HAVE_STRERROR # define HAVE_VSPRINTF # define HAVE_GETPID # define HAVE_DIV # define HAVE_RAISE # define TIME_WITH_SYS_TIME #endif #if defined(OS2) && defined(__WATCOMC__) # define HAVE_ARPA_INET_H /* at least OpenWatcom */ # define HAVE_DIRECT_H # define HAVE_DIV # define HAVE_FCNTL_H # define HAVE_FTIME # define HAVE_GETPID # define HAVE_MALLOC_H # define HAVE_MEMCPY # define HAVE_MEMMOVE # define HAVE_NETDB_H /* at least OpenWatcom */ # define HAVE_NETINET_IN_H /* at least OpenWatcom */ # define HAVE_PROCESS_H /* at least OpenWatcom */ # define HAVE_PUTENV # define HAVE_RAISE # define HAVE_SETENV # define HAVE_SETJMP_H # define HAVE_PROCESS_H # define HAVE_SIGNAL_H # define HAVE_STRERROR # define HAVE_STRING_H # define HAVE_SYS_SELECT_H /* at least OpenWatcom */ # define HAVE_SYS_SOCKET_H /* at least OpenWatcom */ # define HAVE_TYPES_H # define HAVE_UNISTD_H # define HAVE_VSPRINTF # define HAVE__FULLPATH # define HAVE__SPLITPATH2 # if defined(DYNAMIC) # define DYNAMIC_OS2 # endif #endif #if defined(WIN32) && defined(__WATCOMC__) # define HAVE_ARPA_INET_H /* at least OpenWatcom */ # define HAVE_DIRECT_H # define HAVE_DIV # define HAVE_FCNTL_H # define HAVE_FTIME # define HAVE_GETPID # define HAVE_MALLOC_H # define HAVE_MEMCPY # define HAVE_MEMMOVE # define HAVE_NETDB_H /* at least OpenWatcom */ # define HAVE_NETINET_IN_H /* at least OpenWatcom */ # define HAVE_PROCESS_H /* at least OpenWatcom */ # define HAVE_PUTENV # define HAVE_RAISE # define HAVE_SETENV # define HAVE_SETJMP_H # define HAVE_SIGNAL_H # define HAVE_STRERROR # define HAVE_STRING_H # define HAVE_SYS_SELECT_H /* at least OpenWatcom */ # define HAVE_SYS_SOCKET_H /* at least OpenWatcom */ # define HAVE_TYPES_H # define HAVE_UNISTD_H # define HAVE_VSPRINTF # define HAVE__FULLPATH # define HAVE__SPLITPATH2 # if defined(DYNAMIC) # define DYNAMIC_WIN32 # endif # define HAVE_I64U # define HAVE__STATI64 # define HAVE__ATOI64 #endif #if defined(DOS) && defined(__WATCOMC__) # define HAVE_MALLOC_H # define HAVE_SETJMP_H # define HAVE_SIGNAL_H # define HAVE_UNISTD_H # define HAVE_STRING_H # define HAVE_FTIME # define HAVE_FCNTL_H # define HAVE_PROCESS_H /* at least OpenWatcom */ # define HAVE__FULLPATH # define HAVE__SPLITPATH2 /* # define HAVE_FTRUNCATE */ # define HAVE_MEMCPY # define HAVE_MEMMOVE # define HAVE_SETENV # define HAVE_STRERROR # define HAVE_VSPRINTF # define HAVE_GETPID # define HAVE_DIV # define HAVE_RAISE /* statically link Regutil */ # define HAVE_REXXUTIL_PACKAGE #endif #if defined(WIN32) && defined(_MSC_VER) # define HAVE_FCNTL_H # define HAVE_LIMITS_H # define HAVE_MALLOC_H # define HAVE_PROCESS_H # define HAVE_SETJMP_H # define HAVE_SIGNAL_H # define HAVE_STDLIB_H # define HAVE_STRING_H # define HAVE__FULLPATH # define HAVE__SPLITPATH # define HAVE_FTRUNCATE # define HAVE_MY_WIN32_SETENV # define HAVE_FTIME # define HAVE_MEMCPY # define HAVE_MEMMOVE # define HAVE_STRERROR # define HAVE_VSPRINTF # define HAVE_GETPID # define HAVE_DIV # define HAVE_RAISE # if defined(DYNAMIC) # define DYNAMIC_WIN32 # endif /* * Following for large file support */ # define HAVE_I64U # define HAVE__STATI64 # define HAVE__ATOI64 #endif #if defined(WIN32) && defined(__BORLANDC__) # define HAVE_FCNTL_H # define HAVE_LIMITS_H # define HAVE_MALLOC_H # define HAVE_PROCESS_H # define HAVE_SETJMP_H # define HAVE_SIGNAL_H # define HAVE_STDLIB_H # define HAVE_STRING_H # define HAVE__FULLPATH # define HAVE__SPLITPATH # define HAVE_MY_WIN32_SETENV # define HAVE_FTIME # define HAVE_MEMCPY # define HAVE_MEMMOVE # define HAVE_STRERROR # define HAVE_VSPRINTF # define HAVE_DIV # define HAVE_RAISE # if defined(DYNAMIC) # define DYNAMIC_WIN32 # endif #endif #if defined(WIN32) && defined(__CYGWIN32__) # define HAVE_GRP_H 1 # define HAVE_PWD_H 1 # define HAVE_LIMITS_H 1 # define HAVE_MALLOC_H 1 # define HAVE_PROCESS_H 1 # define HAVE_SETJMP_H 1 # define HAVE_SIGNAL_H 1 # define HAVE_STDLIB_H 1 # define HAVE_STRING_H 1 # define HAVE_UNISTD_H 1 /* # define HAVE__FULLPATH 1 */ # define HAVE_PUTENV 1 # define HAVE_GETTIMEOFDAY 1 # define HAVE_FTRUNCATE 1 # define HAVE_MEMCPY 1 # define HAVE_MEMMOVE 1 # define HAVE_STRERROR 1 # define HAVE_VSPRINTF 1 # define HAVE_GETPID # define HAVE_DIV # define HAVE_RAISE # define TIME_WITH_SYS_TIME 1 # if defined(DYNAMIC) # define DYNAMIC_WIN32 # endif #endif #if defined(WIN32) && defined(__MINGW32__) # define HAVE_LIMITS_H 1 # define HAVE_MALLOC_H 1 # define HAVE_PROCESS_H 1 # define HAVE_SETJMP_H 1 # define HAVE_SIGNAL_H 1 # define HAVE_STDLIB_H 1 # define HAVE_STRING_H 1 # define HAVE_UNISTD_H 1 # define HAVE_FCNTL_H 1 # define HAVE__FULLPATH 1 # define HAVE_PUTENV 1 /* # define HAVE_GETTIMEOFDAY 1 */ /* # define HAVE_FTRUNCATE 1 */ # define HAVE_MEMCPY 1 # define HAVE_MEMMOVE 1 # define HAVE_STRERROR 1 # define HAVE_VSPRINTF 1 # define HAVE_GETPID # define HAVE_DIV # define HAVE_RAISE # define TIME_WITH_SYS_TIME 1 # if defined(DYNAMIC) # define DYNAMIC_WIN32 # endif /* * Following for large file support */ # define HAVE_I64U # define HAVE__STATI64 #endif #if defined(WIN32) && defined(__LCC__) # define HAVE_FCNTL_H 1 # define HAVE_DIRECT_H 1 # define HAVE_LIMITS_H 1 # define HAVE_MALLOC_H 1 # define HAVE_PROCESS_H 1 # define HAVE_SETJMP_H 1 # define HAVE_SIGNAL_H 1 # define HAVE_STDLIB_H 1 # define HAVE_STRING_H 1 # define HAVE_UNISTD_H 1 # define HAVE__FULLPATH 1 # define HAVE_PUTENV 1 /* # define HAVE_GETTIMEOFDAY 1 */ /* # define HAVE_FTRUNCATE 1 */ # define HAVE_MEMCPY 1 # define HAVE_MEMMOVE 1 # define HAVE_STRERROR 1 # define HAVE_VSPRINTF 1 # define HAVE__SPLITPATH 1 # define HAVE_GETPID 1 # define HAVE_DIV # define HAVE_RAISE /* # define TIME_WITH_SYS_TIME 1 */ # if defined(DYNAMIC) # define DYNAMIC_WIN32 # endif #endif #if defined(DOS) && defined(DJGPP) # define HAVE_FCNTL_H # define HAVE_GRP_H # define HAVE_PWD_H # define HAVE_LIMITS_H # define HAVE_STRING_H # define TIME_WITH_SYS_TIME # define HAVE_SETJMP_H # define HAVE_UNISTD_H # define HAVE_SYS_SOCKET_H # define HAVE_NETINET_IN_H /* # define HAVE_SYS_SELECT_H */ # define HAVE_NETDB_H # define HAVE_ARPA_INET_H # define HAVE_PUTENV # define HAVE_GETTIMEOFDAY # define HAVE_FTRUNCATE # define HAVE_RANDOM # define HAVE_USLEEP # define HAVE_MEMCPY # define HAVE_MEMMOVE # define HAVE_STRERROR # define HAVE__TRUENAME # define HAVE_VSPRINTF # define HAVE_GETPID # define HAVE_DIV # define HAVE_RAISE # ifndef _MAX_PATH # define _MAX_PATH PATH_MAX # endif #endif #if defined(_AMIGA) && defined(__SASC) # define HAVE_SETJMP_H /* # define HAVE_UNISTD_H */ # define HAVE_PUTENV # define HAVE_MEMCPY # define HAVE_MEMMOVE # define HAVE_STRERROR # define HAVE_VSPRINTF # define HAVE_DIV # define HAVE_RAISE # define UNIX #endif #if defined(AMIGA) && ( defined(GCC) || defined(__GNUC__) ) # define HAVE_GRP_H 1 # define HAVE_PWD_H 1 # define HAVE_LIMITS_H 1 # define HAVE_MALLOC_H 1 # define HAVE_SETJMP_H 1 # define HAVE_SIGNAL_H 1 # define HAVE_STDLIB_H 1 # define HAVE_STRING_H 1 # define HAVE_UNISTD_H 1 # define HAVE_SYS_SOCKET_H 1 # define HAVE_SYS_FCNTL_H 1 # define HAVE_NETINET_IN_H 1 # define HAVE_NETDB_H 1 # define HAVE_ARPA_INET_H 1 /* # define HAVE__FULLPATH 1 */ # define HAVE_PUTENV 1 # define HAVE_FTIME 1 # define HAVE_FTRUNCATE 1 # define HAVE_MEMCPY 1 # define HAVE_MEMMOVE 1 # define HAVE_STRERROR 1 # define HAVE_VSPRINTF 1 # define HAVE_GETPID # define HAVE_DIV # define HAVE_RAISE # define TIME_WITH_SYS_TIME 1 # if !defined( _AMIGA ) # define _AMIGA # endif # if !defined( __AMIGADATE__ ) # define __AMIGADATE__ "("__DATE__")" # endif #endif #if defined(MAC) /* # define HAVE_GRP_H 1 */ /* # define HAVE_PWD_H 1 */ # define HAVE_LIMITS_H 1 /* # define HAVE_MALLOC_H 1 */ # define HAVE_SETJMP_H 1 # define HAVE_SIGNAL_H 1 # define HAVE_STDLIB_H 1 # define HAVE_STRING_H 1 /* # define HAVE_UNISTD_H 1 */ /* # define HAVE_SYS_SOCKET_H 1 # define HAVE_NETINET_IN_H 1 # define HAVE_NETDB_H 1 # define HAVE_ARPA_INET_H 1 */ /* # define HAVE__FULLPATH 1 */ /*# define HAVE_SETENV 1 */ /* # define HAVE_FTIME 1 */ /* # define HAVE_FTRUNCATE 1 */ # define HAVE_MEMCPY 1 # define HAVE_MEMMOVE 1 # define HAVE_STRERROR 1 # define HAVE_VSPRINTF 1 # define HAVE_GETPID # define HAVE_DIV # define HAVE_RAISE /* # define TIME_WITH_SYS_TIME 1 */ #endif /* * The following are for Epoc32 platform */ #if defined(__VC32__) && defined(__WINS__) # define HAVE_SYS_FCNTL_H # define HAVE_LIMITS_H # define HAVE_PROCESS_H # define HAVE_SETJMP_H # define HAVE_SIGNAL_H # define HAVE_STDLIB_H # define HAVE_STRING_H /* # define HAVE__FULLPATH */ /* # define HAVE__SPLITPATH */ /* # define HAVE_FTRUNCATE */ /* # define HAVE_MY_WIN32_SETENV */ # define HAVE_MEMCPY # define HAVE_MEMMOVE # define HAVE_STRERROR # define HAVE_VSPRINTF # define HAVE_GETPID # define HAVE_DIV # define HAVE_RAISE # define HAVE_SYS_SOCKET_H # define HAVE_NETINET_IN_H # define HAVE_NETDB_H # define HAVE_ARPA_INET_H # define HAVE_UNISTD_H # if defined(DYNAMIC) # define DYNAMIC_WIN32 # endif #endif #if defined(__GCC32__) && defined(__EPOC32__) # define HAVE_SYS_FCNTL_H 1 /* # define HAVE_GRP_H 1 */ /* # define HAVE_PWD_H 1 */ # define HAVE_LIMITS_H 1 /*# define HAVE_MALLOC_H 1 */ # define HAVE_PROCESS_H 1 # define HAVE_SETJMP_H 1 # define HAVE_SIGNAL_H 1 # define HAVE_STDLIB_H 1 # define HAVE_STRING_H 1 # define HAVE_UNISTD_H 1 /* # define HAVE__FULLPATH 1 */ /* # define HAVE_PUTENV 1 */ # define HAVE_GETTIMEOFDAY 1 /*# define HAVE_FTRUNCATE 1 */ # define HAVE_MEMCPY 1 # define HAVE_MEMMOVE 1 # define HAVE_STRERROR 1 # define HAVE_VSPRINTF 1 # define HAVE_GETPID 1 # define HAVE_DIV # define HAVE_RAISE # define TIME_WITH_SYS_TIME 1 # define HAVE_SYS_SOCKET_H 1 # define HAVE_NETINET_IN_H 1 # define HAVE_NETDB_H 1 # define HAVE_ARPA_INET_H 1 # if defined(DYNAMIC) # define DYNAMIC_WIN32 # endif #endif #if defined(SKYOS) # include # define HAVE_SYS_FCNTL_H 1 # define HAVE_GRP_H 1 # define HAVE_PWD_H 1 # define HAVE_LIMITS_H 1 # define HAVE_MALLOC_H 1 # define HAVE_PROCESS_H 1 # define HAVE_SETJMP_H 1 # define HAVE_SIGNAL_H 1 # define HAVE_STDLIB_H 1 # define HAVE_STRING_H 1 # define HAVE_UNISTD_H 1 /* # define HAVE__FULLPATH 1 */ # define HAVE_PUTENV 1 # define HAVE_GETTIMEOFDAY 1 /*# define HAVE_FTRUNCATE 1 */ # define HAVE_MEMCPY 1 # define HAVE_MEMMOVE 1 # define HAVE_STRERROR 1 # define HAVE_VSPRINTF 1 # define HAVE_GETPID 1 # define HAVE_DIV 1 # define HAVE_RAISE 1 /*# define TIME_WITH_SYS_TIME 1*/ # define HAVE_SYS_SOCKET_H 1 # define HAVE_NETINET_IN_H 1 # define HAVE_NETDB_H 1 # define HAVE_ARPA_INET_H 1 # if defined(DYNAMIC) # define DYNAMIC_SKYOS # endif #endif #if defined(VMS) # include "vms.h" #endif /* Configurable values */ /* The macro MAXLEVELS is the maximum number of levels that the * interpreter shall handle. One level is used for functioncalls and * the commands CALL, IF, DO and SELECT */ #define MAXLEVELS 1024 /* The macro MAX_INDEX_LENGTH defines the maximum length that the name * of an compund variable might expand to. */ #define MAX_INDEX_LENGTH 256 /* The macro MAX_EXPONENT is the maximum exponent disregarding sign we * are able to handle. * This value MUST change for 64-bit-support. */ #define MAX_EXPONENT 999999999 /* * The macro DEFAULT_FLUSH_STACK can be defined to either 1 or 0, * depending on whether you want the stack to be flushed during a * command reading input from or writing output to the stack. If * defined, a line written will be physically in the stack at once, * while if not defined, all output lines will be temporarily stacked * until the command has terminated, then they are all simultaneously * flushed to the stack. The default default value is 0, it can be * changed through OPTIONS. */ #ifndef DEFAULT_FLUSHSTACK # define DEFAULT_FLUSHSTACK 0 #endif /* * The macro DEFAULT_LINEOUTTRUNC can be set to 1 or 0, whether you want * the default behavior of lineout() to truncate the file immediately * after the end of each new file written out. When set to 1, the file * will be truncated. Also note, that if HAVE_FTRUNCATE isn't set later * in this script, the DEFAULT_LINEOUTTRUNC will be forced to 0, just * for consistency (then, setting it to 1 will have no practical effect. */ #ifndef DEFAULT_LINEOUTTRUNC # define DEFAULT_LINEOUTTRUNC 1 #endif #define DEFAULT_MAKEBUF_BIF 1 #define DEFAULT_DROPBUF_BIF 1 #define DEFAULT_BUFTYPE_BIF 1 #define DEFAULT_DESBUF_BIF 1 #define DEFAULT_CACHEEXT 0 #define DEFAULT_PRUNE_TRACE 1 /* * Indicates that Regina treats external commands as functions by default */ #define DEFAULT_EXT_COMMANDS_AS_FUNCS 1 /* * Indicates that Regina does not send output that normally goes to stderr, to stdout */ #define DEFAULT_STDOUT_FOR_STDERR 0 /* * Indicates that Regina allows external queues (and internal queues) by default */ #define DEFAULT_INTERNAL_QUEUES 0 /* * Indicates that Regina does not wrap trace output in HTML code by default */ #define DEFAULT_TRACE_HTML 0 /* * Indicates that Regina returns 1 or 0 for when calling LINES BIF without optional 2nd argument by default */ #define DEFAULT_FAST_LINES_BIF_DEFAULT 1 /* * Indicates that Regina does not observe strict ANSI functionality by default */ #define DEFAULT_STRICT_ANSI 0 /* * Indicates that Regina-specific BUFs are available by default */ #define DEFAULT_REGINA_BIFS 1 /* * Indicates that Regina does not do strict white space comparison by default */ #define DEFAULT_STRICT_WHITE_SPACE_COMPARISONS 0 /* * Indicates if the ARexx BIFs (OPEN, CLOSE, EOF) use AREXX semantics or not * On Amiga and AROS, they are on by default. */ #if defined(_AMIGA) || defined(__AROS__) # define DEFAULT_AREXX_SEMANTICS 1 #else # define DEFAULT_AREXX_SEMANTICS 0 #endif /* * Indicates that AREXX BIFs are available by default on Amiga and AROS, but * OFF on other platforms */ #if defined(_AMIGA) || defined(__AROS__) # define DEFAULT_AREXX_BIFS 1 #else # define DEFAULT_AREXX_BIFS 0 #endif /* * Indicates if the user want the "broken" semantics of ADDRESS COMMAND */ #define DEFAULT_BROKEN_ADDRESS_COMMAND 0 /* * Indicates if the user wants outer parentheses when using CALL subroutine. */ #define DEFAULT_CALLS_AS_FUNCS 0 /* * Indicates if the user wants the broken queue naming conventions. */ #define DEFAULT_QUEUES_301 0 /* * Indicates if a failure in a call to an external routine halts the caller with error 40.1 */ #define DEFAULT_HALT_ON_EXT_CALL_FAIL 0 /* * Indicates if a new thread calls an API function the call occurs in the current (and only one) instance of an interpreter */ #define DEFAULT_SINGLE_INTERPRETER 0 /* * Indicates that Regina allows single line comments by default */ #define DEFAULT_SINGLE_LINE_COMMENTS 1 /* * The FILE_SEPARATOR is one character, and defines the char that separates * directories, and filename from directories in a file's path. * The PATH_SEPARATOR is one character, and defines the char that separates * directories, from one another in a PATH environment variable. */ #if defined(MSDOS) || ( defined(__WATCOMC__) && !defined(__QNX__) ) || defined(_MSC_VER) || defined(DOS) || defined(OS2) || defined(__WINS__) || defined(__EPOC32__) || defined(__LCC__) || defined(__BORLANDC__) || defined(__MINGW32__) # define FILE_SEPARATORS "\\/:" # define FILE_SEPARATOR '\\' # define FILE_SEPARATOR_STR "\\" # define PATH_SEPARATOR ';' # define PATH_SEPARATOR_STR ";" #elif defined(VMS) # define FILE_SEPARATORS "]" # define FILE_SEPARATOR ']' # define FILE_SEPARATOR_STR "]" # define PATH_SEPARATOR '?' # define PATH_SEPARATOR_STR "?" #elif defined(MAC) # define FILE_SEPARATOR "]" # define FILE_SEPARATOR ']' # define FILE_SEPARATOR_STR "]" # define PATH_SEPARATOR '?' # define PATH_SEPARATOR_STR "?" #else # define FILE_SEPARATORS "/" # define FILE_SEPARATOR '/' # define FILE_SEPARATOR_STR "/" # define PATH_SEPARATOR ':' # define PATH_SEPARATOR_STR ":" #endif #define FIX_PROTOS #define FIX_ALL_PROTOS #if defined(HPUX) || defined(__hpux) # define YY_CHAR_TYPE unsigned char #endif #if !defined(HAVE_MEMCPY) # define memcpy(a,b,c) bcopy((b),(a),(c)) #endif #if !defined(HAVE_MEMMOVE) # define memmove(a,b,c) bcopy((b),(a),(c)) #endif #if !defined(HAVE_STRERROR) const char *get_sys_errlist( int num ); # define strerror(a) get_sys_errlist(a) #endif #if defined(sgi) || defined(__sgi) # define SGI 1 #endif #if defined(__osf__) # define OSF 1 # define YY_CHAR_TYPE unsigned char #endif /* * Define HAVE_USLEEP if you have the usleep() function available. It will * take the number of micro-seconds to sleep. If this is not defined, * the 'normal' sleep() will be used. * Handled by autoconf */ /* * Define HAVE_RANDOM if your machine has the routines random() and * srandom(). If it is not defined, rand() and srand() are used * instead. There are several reason why you might want to use * random() instead of rand() * Handled by autoconf */ #define DEFAULT_NUMERIC_FUZZ 0 #define DEFAULT_NUMERIC_SIZE 9 #define DEFAULT_MATH_TYPE 0 /* * If you use gcc on a machine that does not have proper ANSI C * libraries and the function div() is not defined, then you can * define the symbol HAVE_NO_DIV, which will try to kludge it. * * This is necessary on Suns, and some other machines. * * Not used anymore MH 10-06-97 */ #ifndef YY_CHAR_TYPE # ifdef _AIX # define YY_CHAR_TYPE unsigned char # else # define YY_CHAR_TYPE char # endif #endif /* Unfortunately, ftruncate() is not POSIX, so if you don't have it, * just ignore it, the effect is that lines written to the middle of a * file will not cause the rest of the file (after the linefeed * terminating the line written), also to truncate the file at that * point. If you wonder whether you have ftruncate(), the bsd portions * of you system (if it exist) is a good place to start looking. You * may have to link in a specific library too, maybe libbsd.a. */ /*#define HAVE_FTRUNCATE*/ /* handled in makefile - TBD in autoconf */ #ifdef VMS # ifdef HAVE_GETTIMEOFDAY # undef HAVE_GETTIMEOFDAY # endif # ifdef HAVE_PUTENV # undef HAVE_PUTENV # endif # ifdef HAVE_FTRUNCATE # undef HAVE_FTRUNCATE # endif #endif #if defined(__GNUC__) && defined(VMS) # ifdef HAVE_GETTIMEOFODAY # undef HAVE_GETTIMEOFDAY # endif #endif /* * DLOPEN - dlopen()/dlsym() under SunOS and SysV4 * HPSHLOAD - shl_load()/shl_findsym() under HP-UX * AIXLOAD - load()/loadbind() under AIX - not supported * OS2 - DosLoadModule()/DosQueryProcAddr() under OS/2 * WIN32 - LoadLibrary()/GetProcAddress() under Win32 */ /* * QNX 4.2x does have a ftrunc() equivalent: ltrunc() */ #if defined(__WATCOMC__) && defined(__QNX__) # define HAVE_FTRUNCATE #endif /* * If we don't have ftruncate() then we don't want the default setting * of LINEOUT() to be to truncate after each new line written out. */ #ifndef HAVE_FTRUNCATE # undef DEFAULT_LINEOUTTRUNC /* MH 10-06-96 */ # define DEFAULT_LINEOUTTRUNC 0 #endif #ifdef _MSC_VER /* This picky compiler claims about unused formal parameters. * This is correct but hides (for human eyes) other errors since they * are many and we can't reduce them all. * Error 4100 is "unused formal parameter". */ # pragma warning(disable:4100) #endif